<?xml version='1.0' encoding='us-ascii'?>
<po:posix-options 
  xmlns:po="http://people.freebsd.org/~wollman/posix-options.html#">
  <!-- No, there is no document at that namespace-uri.  -->
  <!-- Should really include some explicit metadata here. -->
  <!-- The copyright front text is separated into three elements
       to make it easier for applications which want to format each
       paragraph separately. -->

  <po:copyright-notice>
Copyright 2002, Garrett A. Wollman.  All rights reserved.
  </po:copyright-notice>

  <po:copyright-permissions>
Permission to distribute this document, in original or modified form,
and to create and distribute derivative works, is hereby granted,
subject to the condition that the preceding copyright notice, this
statement of permission, and the following disclaimer be reproduced
verbatim in all such copies.
  </po:copyright-permissions>

  <po:disclaimer>
This document is based on the author's reading of IEEE
Std.1003.1-2001.  It does not reflect any corrigenda as may from time
to time be issued.  This is an unofficial secondary source, defers to
the published standard, and in all cases users are advised to examine
the text of Standard before making any conclusions on the basis of
this analysis.  This document is supplied without warranty of any
kind, express or implied, not even the implied warranties of
merchantability and suitability for a particular purpose.
  </po:disclaimer>

  <po:option status='optional'>
    <po:name>Advisory Information</po:name>
    <po:margin-code>ADV</po:margin-code>
    <po:status-constant>_POSIX_ADVISORY_INFO</po:status-constant>
    <po:sysconf-key>_SC_ADVISORY_INFO</po:sysconf-key>
    <po:header name='fcntl.h'>
      <po:constant>POSIX_FADV_NORMAL</po:constant>
      <po:constant>POSIX_FADV_SEQUENTIAL</po:constant>
      <po:constant>POSIX_FADV_RANDOM</po:constant>
      <po:constant>POSIX_FADV_WILLNEED</po:constant>
      <po:constant>POSIX_FADV_DONTNEED</po:constant>
      <po:constant>POSIX_FADV_NOREUSE</po:constant>
      <po:function name="posix_fadvise"/>
      <po:function name="posix_fallocate"/>
    </po:header>
    <po:header name='limits.h'>
      <po:parameter name="POSIX_ALLOC_SIZE_MIN" pathconf="_PC_ALLOC_SIZE_MIN"/>
      <po:parameter name="POSIX_REC_INCR_XFER_SIZE"
        pathconf="_PC_REC_INCR_XFER_SIZE"/>
      <po:parameter name="POSIX_REC_MAX_XFER_SIZE"
        pathconf="_PC_REC_INCR_MAX_SIZE"/>
      <po:parameter name="POSIX_REC_MIN_XFER_SIZE"
        pathconf="_PC_REC_INCR_MIN_SIZE"/>
      <po:parameter name="POSIX_REC_XFER_ALIGN"
         pathconf="_PC_REC_XFER_ALIGN"/>
    </po:header>
    <po:header name='stdlib.h'>
      <po:function name="posix_memalign"/>
    </po:header>
    <po:header name='sys/mman.h'>
      <po:constant>PROT_READ</po:constant>
      <po:constant>PROT_WRITE</po:constant>
      <po:constant>PROT_EXEC</po:constant>
      <po:constant>PROT_NONE</po:constant>
      <po:function naem="posix_madvise"/>
    </po:header>
  </po:option>
  <po:option status='optional'>
    <po:name>Asynchronous Input and Output</po:name>
    <po:margin-code>AIO</po:margin-code>
    <po:status-constant>_POSIX_ASYNCHRONOUS_IO</po:status-constant>
    <po:sysconf-key>_SC_ASYNCHRONOUS_IO</po:sysconf-key>
    <po:pathconf-key>_PC_ASYNC_IO</po:pathconf-key>
    <po:header name='aio.h'>
      <po:type name='struct aiocb'/>
      <po:struct-membership name='struct aiocb'>
        <po:struct-member>aio_fildes</po:struct-member>
        <po:struct-member>aio_offset</po:struct-member>
        <po:struct-member>aio_buf</po:struct-member>
        <po:struct-member>aio_nbytes</po:struct-member>
        <po:struct-member>aio_reqprio</po:struct-member>
        <po:struct-member>aio_sigevent</po:struct-member>
        <po:struct-member>aio_lio_opcode</po:struct-member>
      </po:struct-membership>
      <po:constant>AIO_ALLDONE</po:constant>
      <po:constant>AIO_CANCELED</po:constant>
      <po:constant>AIO_NOTCANCELED</po:constant>
      <po:constant>LIO_NOP</po:constant>
      <po:constant>LIO_NOWAIT</po:constant>
      <po:constant>LIO_READ</po:constant>
      <po:constant>LIO_WAIT</po:constant>
      <po:constant>LIO_WRITE</po:constant>
      <po:function name="aio_cancel"/>
      <po:function name="aio_error"/>
      <po:function name="aio_fsync"/>
      <po:function name="aio_read"/>
      <po:function name="aio_return"/>
      <po:function name="aio_suspend"/>
      <po:function name="aio_write"/>
      <po:function name="lio_listio"/>
    </po:header>
    <po:header name='limits.h'>
      <po:parameter name="AIO_LISTIO_MAX" sysconf="_SC_AIO_LISTIO_MAX"
        min="_POSIX_AIO_LISTIO_MAX"/>
      <po:parameter name="AIO_MAX" sysconf="_SC_AIO_MAX" min="_POSIX_AIO_MAX"/>
      <po:parameter name="AIO_PRIO_DELTA_MAX" 
        sysconf="_SC_AIO_PRIO_DELTA_MAX" min="0"/>
      <po:parameter name="_POSIX_AIO_LISTIO_MAX" value="2"/>
      <po:parameter name="_POSIX_AIO_MAX" value="1"/>
    </po:header>
  </po:option>
  <po:option status='optional'>			<!-- 1003.2d-1994 -->
    <po:name>Batch Environment Services and Utilities</po:name>
    <po:margin-code>BE</po:margin-code>
    <po:status-constant>_POSIX2_PBS</po:status-constant>
    <po:getconf-name>POSIX2_PBS</po:getconf-name>
    <po:utility name="qalter"/>
    <po:utility name="qdel"/>
    <po:utility name="qhold"/>
    <po:utility name="qmove"/>
    <po:utility name="qmsg"/>
    <po:utility name="qrerun"/>
    <po:utility name="qrls"/>
    <po:utility name="qselect"/>
    <po:utility name="qsig"/>
    <po:utility name="qstat"/>
    <po:utility name="qsub"/>
    <po:option status='optional'>
      <po:name>Batch Accounting</po:name>
      <po:status-constant>_POSIX2_PBS_ACCOUNTING</po:status-constant>
      <po:getconf-name>POSIX2_PBS_ACCOUNTING</po:getconf-name>
    </po:option>
    <po:option status='optional'>
      <po:name>Batch Accounting</po:name>
      <po:status-constant>_POSIX2_PBS_ACCOUNTING</po:status-constant>
      <po:getconf-name>POSIX2_PBS_ACCOUNTING</po:getconf-name>
    </po:option>
    <po:option status='optional'>
      <po:name>Batch Checkpoint/Restart</po:name>
      <po:status-constant>_POSIX2_PBS_CHECKPOINT</po:status-constant>
      <po:getconf-name>POSIX2_PBS_CHECKPOINT</po:getconf-name>
    </po:option>
    <po:option status='optional'>
      <po:name>Locate Batch Job Request</po:name>
      <po:status-constant>_POSIX2_PBS_LOCATE</po:status-constant>
      <po:getconf-name>POSIX2_PBS_LOCATE</po:getconf-name>
    </po:option>
    <po:option status='optional'>
      <po:name>Batch Job Message Request</po:name>
      <po:status-constant>_POSIX2_PBS_MESSAGE</po:status-constant>
      <po:getconf-name>POSIX2_PBS_MESSAGE</po:getconf-name>
    </po:option>
    <po:option status='optional'>
      <po:name>Track Batch Job Request</po:name>
      <po:status-constant>_POSIX2_PBS_TRACK</po:status-constant>
      <po:getconf-name>POSIX2_PBS_TRACK</po:getconf-name>
    </po:option>
  </po:option>
  <po:option status='mandatory'>
    <po:name>C-Language Binding (1003.2-1992)</po:name>
    <po:status-constant>_POSIX2_C_BIND</po:status-constant>
    <po:sysconf-key>_SC_2_C_BIND</po:sysconf-key>
  </po:option>
  <po:option status='optional'>
    <po:name>C-Language Development Utilities</po:name>
    <po:margin-code>CD</po:margin-code>
    <po:status-constant>_POSIX2_C_DEV</po:status-constant>
    <po:getconf-name>POSIX2_C_DEV</po:getconf-name>
    <po:utility name='c99'/>
    <po:utility name='lex'/>
    <po:utility name='yacc'/>
    <po:utility name='ctags'>
      <po:requisite>User Portability Utilities</po:requisite>
      <po:requisite>Software Development Utilities</po:requisite>
    </po:utility>
  </po:option>
  <po:option status='optional'>
    <po:name>Clock Selection</po:name>
    <po:margin-code>CS</po:margin-code>
    <po:status-constant>_POSIX_CLOCK_SELECTION</po:status-constant>
    <po:sysconf-key>_SC_CLOCK_SELECTION</po:sysconf-key>
    <po:header name='pthread.h'>
      <po:requisite>Threads</po:requisite>
      <po:function name="pthread_condattr_getclock"/>
      <po:function name="pthread_condattr_setclock"/>
    </po:header>
    <po:header name='time.h'>
      <po:function name='clock_nanosleep'/>
    </po:header>
  </po:option>
  <po:option status='mandatory-or-getconf'>
    <po:name>File Name Length Enforced (1003.1-1995)</po:name>
    <po:status-constant>_POSIX_NO_TRUNC</po:status-constant>
    <po:pathconf-key>_PC_NO_TRUNC</po:pathconf-key>
  </po:option>
  <po:option status='mandatory-or-getconf'>
    <po:name>File Ownership Change Requires Privilege (1003.1-1995)</po:name>
    <po:status-constant>_POSIX_CHOWN_RESTRICTED</po:status-constant>
    <po:pathconf-key>_PC_CHOWN_RESTRICTED</po:pathconf-key>
  </po:option>
  <po:option status='optional'>
    <po:name>File Synchronization</po:name>
    <po:margin-code>FSC</po:margin-code>
    <po:status-constant>_POSIX_FSYNC</po:status-constant>
  </po:option>
  <po:option status='optional'>
    <po:name>FORTRAN Development Utilities (1003.2-1992)</po:name>
    <po:margin-code>FD</po:margin-code>
    <po:status-constant>_POSIX2_FORT_DEV</po:status-constant>
    <po:getconf-name>POSIX2_FORT_DEV</po:getconf-name>
    <po:utility name='ctags'>
      <po:requisite>User Portability Utilities</po:requisite>
      <po:requisite>Software Development Utilities</po:requisite>
    </po:utility>
    <po:utility name='fort77'/>
  </po:option>
  <po:option status='optional'>
    <po:name>FORTRAN Runtime Utilities (1003.2-1992)</po:name>
    <po:margin-code>FR</po:margin-code>
    <po:status-constant>_POSIX2_FORT_RUN</po:status-constant>
    <po:getconf-name>_POSIX2_FORT_RUN</po:getconf-name>
    <po:utility name='asa'/>
  </po:option>
  <po:option status='optional'>
    <po:name>IP Version 6 Socket API</po:name>
    <po:margin-code>IP6</po:margin-code>
    <po:status-constant>_POSIX_IPV6</po:status-constant>
    <po:header name='arpa/inet.h'>
      <po:constant>INET6_ADDRSTRLEN</po:constant>
    </po:header>
    <po:header name='netinet/in.h'>
      <po:type name='struct in6_addr'/>
      <po:struct-membership name='struct in6_addr'>
        <po:struct-member>s6_addr</po:struct-member>
      </po:struct-membership>
      <po:type name='struct sockaddr_in6'/>
      <po:struct-membership name='struct sockaddr_in6'>
        <po:struct-member>sin6_family</po:struct-member>
        <po:struct-member>sin6_port</po:struct-member>
        <po:struct-member>sin6_flowinfo</po:struct-member>
        <po:struct-member>sin6_addr</po:struct-member>
        <po:struct-member>sin6_scope_id</po:struct-member>
      </po:struct-membership>
      <po:variable name='in6addr_any' type='struct in6_addr'/>
      <po:initializer name='IN6ADDR_ANY_INIT' type='struct in6_addr'/>
      <po:variable name='in6addr_loopback' type='struct in6_addr'/>
      <po:initializer name='IN6ADDR_LOOPBACK_INIT' type='struct in6_addr'/>
      <po:type name='struct ipv6_mreq'/>
      <po:struct-membership name='struct ipv6_mreq'>
        <po:struct-member>ipv6mr_multiaddr</po:struct-member>
        <po:struct-member>ipv6mr_interface</po:struct-member>
      </po:struct-membership>
      <po:constant>IPPROTO_IPV6</po:constant>
      <po:constant>INET6_ADDRSTRLEN</po:constant>
      <po:constant>IPV6_JOIN_GROUP</po:constant>
      <po:constant>IPV6_LEAVE_GROUP</po:constant>
      <po:constant>IPV6_MULTICAST_HOPS</po:constant>
      <po:constant>IPV6_MULTICAST_IF</po:constant>
      <po:constant>IPV6_MULTICAST_LOOP</po:constant>
      <po:constant>IPV6_UNICAST_HOPS</po:constant>
      <po:constant>IPV6_V6ONLY</po:constant>
      <po:macro>IN6_IS_ADDR_UNSPECIFIED</po:macro>
      <po:macro>IN6_IS_ADDR_LOOPBACK</po:macro>
      <po:macro>IN6_IS_ADDR_MULTICAST</po:macro>
      <po:macro>IN6_IS_ADDR_LINKLOCAL</po:macro>
      <po:macro>IN6_IS_ADDR_SITELOCAL</po:macro>
      <po:macro>IN6_IS_ADDR_V4MAPPED</po:macro>
      <po:macro>IN6_IS_ADDR_V4COMPAT</po:macro>
      <po:macro>IN6_IS_ADDR_MC_NODELOCAL</po:macro>
      <po:macro>IN6_IS_ADDR_MC_LINKLOCAL</po:macro>
      <po:macro>IN6_IS_ADDR_MC_SITELOCAL</po:macro>
      <po:macro>IN6_IS_ADDR_MC_ORGLOCAL</po:macro>
      <po:macro>IN6_IS_ADDR_MC_GLOBAL</po:macro>
    </po:header>
    <po:header name='sys/socket.h'>
      <po:constant>AF_INET6</po:constant>
    </po:header>
  </po:option>
  <po:option status='mandatory'>
    <po:name>Job Control (1003.1-1995)</po:name>
    <po:status-constant>_POSIX_JOB_CONTROL</po:status-constant>
  </po:option>
  <po:option status='optional'>
    <po:name>Memory Mapped Files</po:name>
    <po:margin-code>MF</po:margin-code>
    <po:status-constant>_POSIX_MEMORY_MAPPED_FILES</po:status-constant>
    <po:header name='sys/mman.h'>
      <po:constant>PROT_READ</po:constant>
      <po:constant>PROT_WRITE</po:constant>
      <po:constant>PROT_EXEC</po:constant>
      <po:constant>PROT_NONE</po:constant>
      <po:constant>MAP_SHARED</po:constant>
      <po:constant>MAP_PRIVATE</po:constant>
      <po:constant>MAP_FIXED</po:constant>
      <po:constant>MS_ASYNC</po:constant>
      <po:constant>MS_SYNC</po:constant>
      <po:constant>MS_INVALIDATE</po:constant>
      <po:constant type='void *'>MAP_FAILED</po:constant>
      <po:function name="mmap"/>
      <po:function name="munmap"/>
      <po:function name="msync"/>
    </po:header>
    <po:header name='sys/mman.h'>
      <po:requisite>Advisory Information</po:requisite>
      <po:constant>POSIX_MADV_NORMAL</po:constant>
      <po:constant>POSIX_MADV_SEQUENTIAL</po:constant>
      <po:constant>POSIX_MADV_RANDOM</po:constant>
      <po:constant>POSIX_MADV_WILLNEED</po:constant>
      <po:constant>POSIX_MADV_DONTNEED</po:constant>
    </po:header>
  </po:option>
  <po:option status='optional'>
    <po:name>Memory Protection</po:name>
    <po:margin-code>MPR</po:margin-code>
    <po:status-constant>_POSIX_MEMORY_PROTECTION</po:status-constant>
    <po:header name='sys/mman.h'>
      <po:function name="mprotect"/>
    </po:header>
  </po:option>
  <po:option status='optional'>
    <po:name>Process Memory Locking</po:name>
    <po:margin-code>ML</po:margin-code>
    <po:status-constant>_POSIX_MEMLOCK</po:status-constant>
    <po:header name='sys/mman.h'>
      <po:constant>MCL_CURRENT</po:constant>
      <po:constant>MCL_FUTURE</po:constant>
      <po:function name="mlockall"/>
      <po:function name="munlockall"/>
    </po:header>
  </po:option>
  <po:option status='optional'>
    <po:name>Range Memory Locking</po:name>
    <po:margin-code>MLR</po:margin-code>
    <po:status-constant>_POSIX_MEMLOCK_RANGE</po:status-constant>
    <po:header name='sys/mman.h'>
      <po:function name="mlock"/>
      <po:function name="munlock"/>
    </po:header>
  </po:option>
  <po:option status='optional'>
    <po:name>Monotonic Clock</po:name>
    <po:margin-code>MON</po:margin-code>
    <po:status-constant>_POSIX_MONOTONIC_CLOCK</po:status-constant>
    <po:sysconf-key>_SC_MONOTONIC_CLOCK</po:sysconf-key>
    <po:header name='time.h'>
      <po:constant>CLOCK_MONOTONIC</po:constant>
    </po:header>
  </po:option>
  <po:option status='optional'>
    <po:name>Message Passing</po:name>
    <po:margin-code>MSG</po:margin-code>
    <po:status-constant>_POSIX_MESSAGE_PASSING</po:status-constant>
    <po:header name='limits.h'>
      <po:parameter name="MQ_OPEN_MAX" sysconf="_SC_MQ_OPEN_MAX"
        min="_POSIX_MQ_OPEN_MAX"/>
      <po:parameter name="MQ_PRIO_MAX" sysconf="_SC_MQ_PRIO_MAX"
        min="_POSIX_MQ_PRIO_MAX"/>
      <po:parameter name="_POSIX_MQ_OPEN_MAX" value="8"/>
      <po:parameter name="_POSIX_MQ_PRIO_MAX" value="32"/>
    </po:header>
    <po:header name='mqueue.h'/>
  </po:option>
  <po:option status='optional'>
    <po:name>IEC 60559 Floating-Point</po:name>
    <po:margin-code>MX</po:margin-code>
    <po:utility name='c99'>
      <po:option>-c</po:option>
      <po:option>-D name[=value]</po:option>
      <po:option>-E</po:option>
      <po:option>-g</po:option>
      <po:option>-I directory</po:option>
      <po:option>-L directory</po:option>
      <po:option>-o outfile</po:option>
      <po:option>-O optlevel</po:option>
      <po:option>-s</po:option>
      <po:option>-U name</po:option>
      <po:option>-l c</po:option>
      <po:option>-l l</po:option>
      <po:option>-l pthread</po:option>
      <po:option>-l m</po:option>
      <po:option>-l rt</po:option>
      <po:option>-l trace</po:option>
      <po:option>-l xnet</po:option>
      <po:option>-l y</po:option>
      <po:option>-l other-library-name</po:option>
    </po:utility>
  </po:option>
  <po:option status='optional'>
    <po:name>Locale Creation Utilities</po:name>
    <po:status-constant>_POSIX2_LOCALEDEF</po:status-constant>
    <po:getconf-name>POSIX2_LOCALEDEF</po:getconf-name>
    <po:utility name='localedef'/>
  </po:option>
  <po:option status='optional'>
    <po:name>Prioritized Input and Output</po:name>
    <po:margin-code>PIO</po:margin-code>
    <po:status-constant>_POSIX_PRIORITIZED_IO</po:status-constant>
  </po:option>
  <po:option status='optional'>
    <po:name>Process CPU-Time Clocks</po:name>
    <po:margin-code>CPT</po:margin-code>
    <po:status-constant>_POSIX_CPUTIME</po:status-constant>
    <po:sysconf-key>_SC_CPUTIME</po:sysconf-key>
    <po:header name='time.h'>
      <po:constant>CLOCK_PROCESS_CPUTIME_ID</po:constant>
      <po:function name="clock_getcpuclockid"/>
    </po:header>
  </po:option>
  <po:option status='optional'>
    <po:name>Process Scheduling</po:name>
    <po:margin-code>PS</po:margin-code>
    <po:status-constant>_POSIX_PRIORITY_SCHEDULING</po:status-constant>
    <po:header name='sched.h'>
      <po:type name="struct sched_param"/>
      <po:type name="struct timespec"/>
      <po:struct-membership name="struct sched_param">
        <po:struct-member>sched_priority</po:struct-member>
      </po:struct-membership>
      <po:constant>SCHED_FIFO</po:constant>
      <po:constant>SCHED_RR</po:constant>
      <po:constant>SCHED_OTHER</po:constant>
      <po:function name="sched_get_priority_max"/>
      <po:function name="sched_get_priority_min"/>
      <po:function name="sched_getparam"/>
      <po:function name="sched_getscheduler"/>
      <po:function name="sched_rr_get_interval"/>
      <po:function name="sched_setparam"/>
      <po:function name="sched_setscheduler"/>
      <po:function name="sched_yield"/>
    </po:header>
    <po:header name='spawn.h'>
      <po:requisite>Spawn</po:requisite>
      <po:constant>POSIX_SPAWN_SETSCHEDPARAM</po:constant>
      <po:constant>POSIX_SPAWN_SETSCHEDULER</po:constant>
      <po:function>posix_spawnattr_getschedparam</po:function>
      <po:function>posix_spawnattr_getschedpolicy</po:function>
      <po:function>posix_spawnattr_setschedparam</po:function>
      <po:function>posix_spawnattr_setschedpolicy</po:function>
    </po:header>
  </po:option>
  <po:option status='optional'>
    <po:name>Process Sporadic Server</po:name>
    <po:margin-code>SS</po:margin-code>
    <po:status-constant>_POSIX_SPORADIC_SERVER</po:status-constant>
    <po:header name='limits.h'>
      <po:parameter name='SS_REPL_MAX' sysconf='_SC_SS_REPL_MAX'
        min='_POSIX_SS_REPL_MAX'/>
      <po:parameter name='_POSIX_SS_REPL_MAX' value='4'/>
    </po:header>
    <po:header name='sched.h'>
      <po:requisite>Process Scheduling</po:requisite>
      <po:struct-membership name="struct sched_param">
        <po:struct-member>sched_ss_low_priority</po:struct-member>
        <po:struct-member>sched_ss_repl_period</po:struct-member>
        <po:struct-member>sched_ss_init_budget</po:struct-member>
        <po:struct-member>sched_ss_max_repl</po:struct-member>
      </po:struct-membership>
      <po:constant>SCHED_SPORADIC</po:constant>
    </po:header>
  </po:option>
  <po:option status='optional'>
    <po:name>Raw Sockets</po:name>
    <po:margin-code>RS</po:margin-code>
    <po:status-constant>_POSIX_RAW_SOCKETS</po:status-constant>
    <po:header name='netinet/in.h'>
      <po:constant>IPPROTO_RAW</po:constant>
    </po:header>
    <po:header name='sys/socket.h'>
      <po:constant>SOCK_RAW</po:constant>
    </po:header>
  </po:option>
  <po:option status='optional'>
    <po:name>Realtime Signals</po:name>
    <po:margin-code>RTS</po:margin-code>
    <po:status-constant>_POSIX_REALTIME_SIGNALS</po:status-constant>
    <po:header name='limits.h'>
      <po:parameter name='RTSIG_MAX' sysconf='_SC_RTSIG_MAX' 
        min='_POSIX_RTSIG_MAX'/>
      <po:parameter name="SIGQUEUE_MAX" sysconf='_SC_SIGQUEUE_MAX' 
        min='_POSIX_SIGQUEUE_MAX'/>
      <po:parameter name="_POSIX_RTSIG_MAX" value="8"/>
      <po:parameter name="_POSIX_SIGQUEUE_MAX" value="32"/>
    </po:header>
    <po:header name='signal.h'>
      <po:type name='struct sigevent'/>
      <po:struct-membership name='struct sigevent'>
        <po:struct-member>sigev_notify</po:struct-member>
        <po:struct-member>sigev_signo</po:struct-member>
        <po:struct-member>sigev_value</po:struct-member>
        <po:struct-member>sigev_notify_function</po:struct-member>
        <po:struct-member>sigev_notify_attributes</po:struct-member>
      </po:struct-membership>
      <po:constant>SIGEV_NONE</po:constant>
      <po:constant>SIGEV_SIGNAL</po:constant>
      <po:constant>SIGEV_THREAD</po:constant>
      <po:type name='union sigval'/>
      <po:struct-membership name='union sigval'>
        <po:struct-member>sival_int</po:struct-member>
        <po:struct-member>sival_ptr</po:struct-member>
      </po:struct-membership>
      <po:constant>SIGRTMIN</po:constant>
      <po:constant>SIGRTMAX</po:constant>
      <po:type name='siginfo_t'/>
      <po:struct-membership name='siginfo_t'>
        <po:struct-member>si_value</po:struct-member>
      </po:struct-membership>
      <po:function name="sigqueue"/>
      <po:function name="sigtimedwait"/>
      <po:function name="sigwaitinfo"/>
    </po:header>
  </po:option>
  <po:option status='mandatory'>
    <po:name>Saved User and Group Ids (1003.1-1995)</po:name>
    <po:status-constant>_POSIX_SAVED_IDS</po:status-constant>
  </po:option>
  <po:option status='optional'>
    <po:name>Semaphores</po:name>
    <po:margin-code>SEM</po:margin-code>
    <po:status-constant>_POSIX_SEMAPHORES</po:status-constant>
    <po:header name='limits.h'>
      <po:parameter name='SEM_NSEMS_MAX' sysconf='_SC_SEM_NSEMS_MAX'
        min='_POSIX_SEM_NSEMS_MAX'/>
      <po:parameter name='SEM_VALUE_MAX' sysconf='_SC_SEM_VALUE_MAX'
        min='_POSIX_SEM_VALUE_MAX'/>
      <po:parameter name="_POSIX_SEM_NSEMS_MAX" value="256"/>
      <po:parameter name="_POSIX_SEM_VALUE_MAX" value="32767"/>
    </po:header>
    <po:header name='semaphore.h'/>
  </po:option>
  <po:option status='optional'>
    <po:name>Shared Memory Objects</po:name>
    <po:margin-code>SHM</po:margin-code>
    <po:status-constant>_POSIX_SHARED_MEMORY_OBJECTS</po:status-constant>
    <po:header name='sys/mman.h'>
      <po:constant>PROT_READ</po:constant>
      <po:constant>PROT_WRITE</po:constant>
      <po:constant>PROT_EXEC</po:constant>
      <po:constant>PROT_NONE</po:constant>
      <po:constant>MAP_SHARED</po:constant>
      <po:constant>MAP_PRIVATE</po:constant>
      <po:constant>MAP_FIXED</po:constant>
      <po:constant type='void *'>MAP_FAILED</po:constant>
      <po:function name="mmap"/>
      <po:function name="munmap"/>
      <po:function name="shm_open"/>
      <po:function name="shm_unlink"/>
    </po:header>
    <po:header name='sys/mman.h'>
      <po:requisite>Advisory Information</po:requisite>
      <po:constant>POSIX_MADV_NORMAL</po:constant>
      <po:constant>POSIX_MADV_SEQUENTIAL</po:constant>
      <po:constant>POSIX_MADV_RANDOM</po:constant>
      <po:constant>POSIX_MADV_WILLNEED</po:constant>
      <po:constant>POSIX_MADV_DONTNEED</po:constant>
    </po:header>
  </po:option>
  <po:option status='mandatory'>
    <po:name>Shell</po:name>
    <po:status-constant>_POSIX_SHELL</po:status-constant>
  </po:option>
  <po:option status='optional'>
    <po:name>Software Development Utilities</po:name>
    <po:margin-code>SD</po:margin-code>
    <po:status-constant>_POSIX2_SW_DEV</po:status-constant>
    <po:getconf-name>POSIX2_SW_DEV</po:getconf-name>
    <po:utility name="ar">
      <po:synopsis-form name="-d">
        <po:option>-v</po:option>
      </po:synopsis-form>
      <po:option>-p</po:option>
      <po:synopsis-form name="-r">
        <po:option>-c</po:option>
	<po:option>-u</po:option>
	<po:option>-v</po:option>
      </po:synopsis-form>
      <po:synopsis-form name="-t">
        <po:option>-v</po:option>
      </po:synopsis-form>
      <po:synopsis-form name="-x">
        <po:option>-v</po:option>
      </po:synopsis-form>
    </po:utility>
    <po:utility name="make"/>
    <po:utility name="nm">
      <po:requisite>User Portability Utilities</po:requisite>
    </po:utility>
    <po:utility name="strip"/>
  </po:option>
  <po:option status='optional'>
    <po:name>Spawn</po:name>
    <po:margin-code>SPN</po:margin-code>
    <po:status-constant>_POSIX_SPAWN</po:status-constant>
    <po:header name='spawn.h'/>
  </po:option>
  <po:option status='optional'>
    <po:name>Synchronized Input and Output</po:name>
    <po:margin-code>SIO</po:margin-code>
    <po:status-constant>_POSIX_SYNCHRONIZED_IO</po:status-constant>
    <po:header name='fcntl.h'>
      <po:constant>O_DSYNC</po:constant>
      <po:constant>O_RSYNC</po:constant>
    </po:header>
    <po:header name='sys/mman.h'>
      <po:constant>MS_ASYNC</po:constant>
      <po:constant>MS_SYNC</po:constant>
      <po:constant>MS_INVALIDATE</po:constant>
      <po:function name="msync"/>
    </po:header>
    <po:header name='unistd.h'>
      <po:function name="fdatasync"/>
    </po:header>
  </po:option>
  <po:option status='optional'>
    <po:name>Threads</po:name>
    <po:margin-code>THR</po:margin-code>
    <po:status-constant>_POSIX_THREADS</po:status-constant>
    <po:header name='limits.h'>
      <po:parameter name='PTHREAD_DESTRUCTOR_ITERATIONS'
        sysconf='_SC_PTHREAD_DESTRUCTOR_ITERATIONS'
	min='_POSIX_THREAD_DESTRUCTOR_ITERATIONS'/>
      <po:parameter name='PTHREAD_KEYS_MAX' sysconf='_SC_PTHREAD_KEYS_MAX'
	min='_POSIX_THREAD_KEYS_MAX'/>
      <po:parameter name='PTHREAD_STACK_MIN' sysconf='_SC_PTHREAD_STACK_MIN'
        min='0'/>
      <po:parameter name='PTHREAD_THREADS_MAX' 
        sysconf='_SC_PTHREAD_THREADS_MAX'
	min='_POSIX_THREAD_THREADS_MAX'/>
      <po:parameter name="_POSIX_THREAD_DESTRUCTOR_ITERATIONS" value="4"/>
      <po:parameter name="_POSIX_THREAD_KEYS_MAX" value="128"/>
      <po:parameter name="_POSIX_THREAD_THREADS_MAX" value="64"/>
    </po:header>
    <po:header name='pthread.h'/>
    <po:header name='signal.h'>
      <po:function name="pthread_kill"/>
      <po:function name="pthread_sigmask"/>
    </po:header>
    <po:header name='sys/types.h'>
      <po:type name='pthread_attr_t'/>
      <po:type name='pthread_cond_t'/>
      <po:type name='pthread_condattr_t'/>
      <po:type name='pthread_key_t'/>
      <po:type name='pthread_mutex_t'/>
      <po:type name='pthread_mutexattr_t'/>
      <po:type name='pthread_once_t'/>
      <po:type name='pthread_t'/>
    </po:header>
    <po:header name='trace.h'>
      <po:requisite>Trace</po:requisite>
      <po:struct-membership name='struct posix_trace_event_info'>
        <po:struct-member>posix_thread_id</po:struct-member>
      </po:struct-membership>
    </po:header>
    <po:option status='optional'>
      <po:name>Barriers</po:name>
      <po:margin-code>BAR</po:margin-code>
      <po:status-constant>_POSIX_BARRIERS</po:status-constant>
      <po:sysconf-key>_SC_BARRIERS</po:sysconf-key>
      <po:header name='pthread.h'>
        <po:constant>PTHREAD_BARRIER_SERIAL_THREAD</po:constant>
	<po:type name='pthread_barrier_t'/>
	<po:type name='pthread_barrierattr_t'/>
	<po:function name="pthread_barrier_destroy"/>
	<po:function name="pthread_barrier_init"/>
	<po:function name="pthread_barrier_wait"/>
	<po:function name="pthread_barrierattr_destroy"/>
	<po:function name="pthread_barrierattr_init"/>
      </po:header>
      <po:header name='pthread.h'>
        <po:requisite>Thread Process-Shared Synchronization</po:requisite>
	<po:function name="pthread_barrierattr_getpshared"/>
	<po:function name="pthread_barrierattr_setpshared"/>
      </po:header>
      <po:header name='sys/types.h'>
        <po:type name='pthread_barrier_t'/>
        <po:type name='pthread_barrierattr_t'/>
      </po:header>
    </po:option>
    <po:option status='mandatory'>	<!-- ??? XXX -->
      <po:name>Read-Write Locks</po:name>
      <po:status-constant>_POSIX_READER_WRITER_LOCKS</po:status-constant>
      <po:sysconf-key>_SC_READER_WRITER_LOCKS</po:sysconf-key>
      <po:header name='pthread.h'>
        <po:type name='pthread_rwlock_t'/>
        <po:type name='pthread_rwlockattr_t'/>
	<!-- XXX add functions from this interface -->
      </po:header>
      <po:header name='sys/types.h'>
        <po:type name='pthread_rwlock_t'/>
        <po:type name='pthread_rwlockattr_t'/>
      </po:header>
    </po:option>
    <po:option status='optional'>
      <po:name>Spin Locks</po:name>
      <po:margin-code>SPI</po:margin-code>
      <po:status-constant>_POSIX_SPIN_LOCKS</po:status-constant>
      <po:sysconf-key>_SC_SPIN_LOCKS</po:sysconf-key>
      <po:header name='pthread.h'>
        <po:type name='pthread_spinlock_t'/>
        <po:function name="pthread_spin_destroy"/>
	<po:function name="pthread_spin_init"/>
	<po:function name="pthread_spin_lock"/>
	<po:function name="pthread_spin_trylock"/>
	<po:function name="pthread_spin_unlock"/>
      </po:header>
      <po:header name='sys/types.h'>
        <po:type name='pthread_spinlock_t'/>
      </po:header>
    </po:option>
    <po:option status='optional'>
      <po:name>Thread CPU-Time Clocks</po:name>
      <po:margin-code>TCT</po:margin-code>
      <po:status-constant>_POSIX_THREAD_CPUTIME</po:status-constant>
      <po:header name='pthread.h'>
        <po:function name="pthread_getcpuclockid"/>
      </po:header>
      <po:header name='time.h'>
        <po:constant>CLOCK_THREAD_CPUTIME_ID</po:constant>
      </po:header>
    </po:option>
    <po:option status='optional'>
      <po:name>Thread Execution Scheduling</po:name>
      <po:margin-code>TPS</po:margin-code>
      <po:status-constant>_POSIX_THREAD_PRIORITY_SCHEDULING</po:status-constant>
      <po:header name='pthread.h'>
        <po:function name="pthread_attr_getinheritsched"/>
        <po:function name="pthread_attr_getschedpolicy"/>
        <po:function name="pthread_attr_getscope"/>
        <po:function name="pthread_attr_setschedpolicy"/>
        <po:function name="pthread_attr_setscope"/>
	<po:function name="pthread_getschedparam"/>
	<po:function name="pthread_setschedparam"/>
	<po:function name="pthread_setschedprio"/>
      </po:header>
    </po:option>
    <po:option status='optional'>
      <po:name>Thread Priority Inheritance</po:name>
      <po:margin-code>TPI</po:margin-code>
      <po:status-constant>_POSIX_THREAD_PRIO_INHERIT</po:status-constant>
      <po:header name='pthread.h'>
        <po:constant>PTHREAD_PRIO_INHERIT</po:constant>
        <po:constant>PTHREAD_PRIO_NONE</po:constant>
        <po:constant>PTHREAD_PRIO_PROTECT</po:constant>
	<po:function name="pthread_mutexttr_getprotocol"/>
	<po:function name="pthread_mutexttr_setprotocol"/>
      </po:header>
    </po:option>
    <po:option status='optional'>
      <po:name>Thread Priority Protection</po:name>
      <po:margin-code>TPP</po:margin-code>
      <po:status-constant>_POSIX_THREAD_PRIO_PROTECT</po:status-constant>
      <po:header name='pthread.h'>
        <po:constant>PTHREAD_PRIO_INHERIT</po:constant>
        <po:constant>PTHREAD_PRIO_NONE</po:constant>
        <po:constant>PTHREAD_PRIO_PROTECT</po:constant>
	<po:function name="pthread_mutex_getprioceiling"/>
	<po:function name="pthread_mutex_setprioceiling"/>
	<po:function name="pthread_mutexattr_getprioceiling"/>
	<po:function name="pthread_mutexttr_getprotocol"/>
	<po:function name="pthread_mutexattr_setprioceiling"/>
	<po:function name="pthread_mutexttr_setprotocol"/>
      </po:header>
    </po:option>
    <po:option status='optional'>
      <po:name>Thread Process-Shared Synchronization</po:name>
      <po:margin-code>TSH</po:margin-code>
      <po:status-constant>_POSIX_THREAD_PROCESS_SHARED</po:status-constant>
      <po:header name="pthread.h">
        <po:function name="pthread_condattr_getpshared"/>
        <po:function name="pthread_condattr_setpshared"/>
      </po:header>
    </po:option>
    <po:option status='optional'>
      <po:name>Thread-Safe Functions</po:name>
      <po:margin-code>TSF</po:margin-code>
      <po:status-constant>_POSIX_THREAD_SAFE_FUNCTIONS</po:status-constant>
      <po:header name='dirent.h'>
        <po:function name='readdir_r'/>
      </po:header>
      <po:header name='grp.h'>
        <po:function name='getgrgid_r'/>
	<po:function name='getgrnam_r'/>
      </po:header>
      <po:header name='pwd.h'>
        <po:function name="getpwnam_r"/>
        <po:function name="getpwuid_r"/>
      </po:header>
      <po:header name='stdio.h'>
        <po:function name="flockfile"/>
        <po:function name="ftrylockfile"/>
        <po:function name="funlockfile"/>
        <po:function name="getc_unlocked"/>
        <po:function name="getchar_unlocked"/>
        <po:function name="putc_unlocked"/>
        <po:function name="putchar_unlocked"/>
      </po:header>
      <po:header name='stdlib.h'>
        <po:function name="rand_r"/>
      </po:header>
      <po:header name='string.h'>
        <po:function name="strerror_r"/>
	<po:function name="strtok_r"/>
      </po:header>
      <po:header name='time.h'>
        <po:function name='asctime_r'/>
        <po:function name='ctime_r'/>
        <po:function name='gmtime_r'/>
        <po:function name='localtime_r'/>
      </po:header>
    </po:option>
    <po:option status='optional'>
      <po:name>Thread Sporadic Server</po:name>
      <po:margin-code>TSP</po:margin-code>
      <po:status-constant>_POSIX_THREAD_SPORADIC_SERVER</po:status-constant>
      <po:header name='limits.h'>
        <po:parameter name='SS_REPL_MAX' sysconf='_SC_SS_REPL_MAX'
	  min='_POSIX_SS_REPL_MAX'/>
	<po:parameter name='_POSIX_SS_REPL_MAX' value='4'/>
      </po:header>
      <po:header name='sched.h'>
	<po:requisite>Process Scheduling</po:requisite>
	<po:struct-membership name="struct sched_param">
          <po:struct-member>sched_ss_low_priority</po:struct-member>
	  <po:struct-member>sched_ss_repl_period</po:struct-member>
	  <po:struct-member>sched_ss_init_budget</po:struct-member>
	  <po:struct-member>sched_ss_max_repl</po:struct-member>
        </po:struct-membership>
        <po:constant>SCHED_SPORADIC</po:constant>
      </po:header>
    </po:option>
    <po:option status='optional'>
      <po:name>Thread Stack Address</po:name>
      <po:margin-code>TSA</po:margin-code>
      <po:status-constant>_POSIX_THREAD_ATTR_STACKADDR</po:status-constant>
      <po:header name='pthread.h'>
        <po:function name="pthread_attr_getstack"/>
        <po:function name="pthread_attr_getstackaddr"/>
        <po:function name="pthread_attr_setstack"/>
        <po:function name="pthread_attr_setstackaddr"/>
      </po:header>
    </po:option>
    <po:option status='optional'>
      <po:name>Thread Stack Size</po:name>
      <po:margin-code>TSS</po:margin-code>
      <po:status-constant>_POSIX_THREAD_ATTR_STACKSIZE</po:status-constant>
      <po:header name='pthread.h'>
        <po:function name="pthread_attr_getstack"/>
        <po:function name="pthread_attr_getstacksize"/>
        <po:function name="pthread_attr_setstack"/>
        <po:function name="pthread_attr_setstacksize"/>
      </po:header>
    </po:option>
  </po:option>
  <po:option status='optional'>
    <po:name>Timeouts</po:name>
    <po:margin-code>TMO</po:margin-code>
    <po:status-constant>_POSIX_TIMEOUTS</po:status-constant>
    <po:header name='mqueue.h'>
      <po:requisite>Message Passing</po:requisite>
      <po:function name="mq_timedreceive"/>
      <po:function name="mq_timedsend"/>
    </po:header>
    <po:header name="pthread.h">
      <po:requisite>Threads</po:requisite>
      <po:function name="pthread_mutex_timedlock"/>
    </po:header>
    <po:header name="semaphore.h">
      <po:requisite>Semaphores</po:requisite>
      <po:function name="sem_timedwait"/>
    </po:header>
    <po:header name='trace.h'>
      <po:requisite>Trace</po:requisite>
      <po:function name="posix_trace_timedgetnext_event"/>
    </po:header>
  </po:option>
  <po:option status='optional'>
    <po:name>Timers</po:name>
    <po:margin-code>TMR</po:margin-code>
    <po:status-constant>_POSIX_TIMERS</po:status-constant>
    <po:header name='limits.h'>
      <po:parameter name="DELAYTIMER_MAX" sysconf="_SC_DELAYTIMER_MAX"
        min="_POSIX_DELAYTIMER_MAX"/>
      <po:parameter name="TIMER_MAX" sysconf="_SC_TIMER_MAX"
        min="_POSIX_TIMER_MAX"/>
      <po:parameter name="_POSIX_CLOCKRES_MIN" max="20000000"/>
      <po:parameter name="_POSIX_DELAYTIMER_MAX" value="32"/>
      <po:parameter name="_POSIX_TIMER_MAX" value="32"/>
    </po:header>
    <po:header name='sys/types.h'>
      <po:type name='clockid_t'/>
      <po:type name='timer_t'/>
    </po:header>
    <po:header name='time.h'>
      <po:constant>CLOCK_PROCESS_CPUTIME_ID</po:constant>
      <po:constant>CLOCK_THREAD_CPUTIME_ID</po:constant>
      <po:type name='struct timespec'/>
      <po:struct-membership name='struct timespec'>
        <po:struct-member>tv_sec</po:struct-member>
        <po:struct-member>tv_nsec</po:struct-member>
      </po:struct-membership>
      <po:type name='struct itimerspec'/>
      <po:struct-membership name='struct itimerspec'>
        <po:struct-member>it_interval</po:struct-member>
        <po:struct-member>it_value</po:struct-member>
      </po:struct-membership>
      <po:constant>CLOCK_REALTIME</po:constant>
      <po:constant>TIMER_ABSTIME</po:constant>
      <po:type name='clockid_t'/>
      <po:type name='timer_t'/>
      <po:function name="clock_getres"/>
      <po:function name="clock_gettime"/>
      <po:function name="clock_settime"/>
      <po:function name="nanosleep"/>
      <po:function name="timer_create"/>
      <po:function name="timer_delete"/>
      <po:function name="timer_gettime"/>
      <po:function name="timer_getoverrun"/>
      <po:function name="timer_settime"/>
    </po:header>
  </po:option>
  <po:option status='optional'>			<!-- 1003.1q-2000 -->
    <po:name>Trace</po:name>
    <po:margin-code>TRC</po:margin-code>
    <po:status-constant>_POSIX_TRACE</po:status-constant>
    <po:sysconf-key>_SC_TRACE</po:sysconf-key>
    <po:header name='limits.h'>
      <po:parameter name="TRACE_EVENT_NAME_MAX" 
        sysconf="_SC_TRACE_EVENT_NAME_MAX"
	min="_POSIX_TRACE_EVENT_NAME_MAX"/>
      <po:parameter name="TRACE_NAME_MAX" 
        sysconf="_SC_TRACE_NAME_MAX"
	min="_POSIX_TRACE_NAME_MAX"/>
      <po:parameter name="TRACE_SYS_MAX" 
        sysconf="_SC_TRACE_SYS_MAX"
	min="_POSIX_TRACE_SYS_MAX"/>
      <po:parameter name="TRACE_USER_EVENT_MAX" 
        sysconf="_SC_TRACE_USER_EVENT_MAX"
	min="_POSIX_TRACE_USER_EVENT_MAX"/>
      <po:parameter name="_POSIX_TRACE_EVENT_NAME_MAX" value="30"/>
      <po:parameter name="_POSIX_TRACE_NAME_MAX" value="8"/>
      <po:parameter name="_POSIX_TRACE_SYS_MAX" value="8"/>
      <po:parameter name="_POSIX_TRACE_USER_EVENT_MAX" value="32"/>
    </po:header>
    <po:header name='sys/types.h'>
      <po:type name='trace_attr_t'/>
      <po:type name='trace_event_id_t'/>
      <po:type name='trace_id_t'/>
    </po:header>
    <po:header name='trace.h'/>
    <po:option status='optional'>
      <po:name>Trace Event Filter</po:name>
      <po:margin-code>TEF</po:margin-code>
      <po:status-constant>_POSIX_TRACE_EVENT_FILTER</po:status-constant>
      <po:sysconf-key>_SC_TRACE_EVENT_FILTER</po:sysconf-key>
      <po:header name='sys/types.h'>
        <po:type name='trace_event_set_t'/>
      </po:header>
      <po:header name='trace.h'>
        <po:constant>POSIX_TRACE_FILTER</po:constant>
	<po:type name='trace_event_set_t'/>
	<po:function name="posix_trace_eventset_add"/>
	<po:function name="posix_trace_eventset_del"/>
	<po:function name="posix_trace_eventset_empty"/>
	<po:function name="posix_trace_eventset_fill"/>
	<po:function name="posix_trace_eventset_ismember"/>
	<po:function name="posix_trace_get_filter"/>
	<po:function name="posix_trace_set_filter"/>
	<po:function name="posix_trace_trid_eventid_open"/>
      </po:header>
    </po:option>
    <po:option status='optional'>
      <po:name>Trace Inherit</po:name>
      <po:margin-code>TRI</po:margin-code>
      <po:status-constant>_POSIX_TRACE_INHERIT</po:status-constant>
      <po:sysconf-key>_SC_TRACE_INHERIT</po:sysconf-key>
      <po:header name='trace.h'>
	<po:constant>POSIX_TRACE_CLOSE_FOR_CHILD</po:constant>
	<po:constant>POSIX_TRACE_INHERITED</po:constant>
	<po:function name="posix_trace_attr_getinherited"/>
	<po:function name="posix_trace_attr_setinherited"/>
      </po:header>
    </po:option>
    <po:option status='optional'>
      <po:name>Trace Log</po:name>
      <po:margin-code>TRL</po:margin-code>
      <po:status-constant>_POSIX_TRACE_LOG</po:status-constant>
      <po:sysconf-key>_SC_TRACE_LOG</po:sysconf-key>
      <po:header name='trace.h'>
        <po:struct-membership name='struct posix_trace_status_info'>
	  <po:struct-member>posix_stream_flush_status</po:struct-member>
	  <po:struct-member>posix_stream_flush_error</po:struct-member>
	  <po:struct-member>posix_log_overrun_status</po:struct-member>
	  <po:struct-member>posix_log_full_status</po:struct-member>
	</po:struct-membership>
	<po:constant>POSIX_TRACE_APPEND</po:constant>
	<po:constant>POSIX_TRACE_FLUSH</po:constant>
	<po:constant>POSIX_TRACE_FLUSH_START</po:constant>
	<po:constant>POSIX_TRACE_FLUSH_STOP</po:constant>
	<po:constant>POSIX_TRACE_FLUSHING</po:constant>
	<po:constant>POSIX_TRACE_NOT_FLUSHING</po:constant>
	<po:function name="posix_trace_attr_getlogfullpolicy"/>
	<po:function name="posix_trace_attr_getlogsize"/>
	<po:function name="posix_trace_attr_setlogfullpolicy"/>
	<po:function name="posix_trace_attr_setlogsize"/>
	<po:function name="posix_trace_close"/>
	<po:function name="posix_trace_create_withlog"/>
	<po:function name="posix_trace_open"/>
	<po:function name="posix_trace_rewind"/>
      </po:header>
    </po:option>
  </po:option>
  <po:option status='optional'>
    <po:name>Typed Memory Objects</po:name>
    <po:margin-code>TYM</po:margin-code>
    <po:status-constant>_POSIX_TYPED_MEMORY_OBJECTS</po:status-constant>
    <po:sysconf-key>_SC_TYPED_MEMORY_OBJECTS</po:sysconf-key>
    <po:header name='sys/mman.h'>
      <po:constant>POSIX_TYPED_MEM_ALLOCATE</po:constant>
      <po:constant>POSIX_TYPED_MEM_ALLOCATE_CONTIG</po:constant>
      <po:constant>POSIX_TYPED_MEM_MAP_ALLOCATABLE</po:constant>
      <po:type name='struct posix_typed_mem_info'/>
      <po:struct-membership name='struct posix_typed_mem_info'>
        <po:struct-member>posix_tmi_length</po:struct-member>
      </po:struct-membership>
      <po:function name="posix_mem_offset"/>
      <po:function name="posix_typed_mem_get_info"/>
      <po:function name="posix_typed_mem_open"/>
    </po:header>
    <po:header name='sys/stat.h'>
      <po:macro>S_TYPEISTMO</po:macro>
    </po:header>
  </po:option>
  <po:option status='optional'>
    <po:name>User Portability Utilities (1003.2-1992)</po:name>
    <po:margin-code>UP</po:margin-code>
    <po:status-constant>_POSIX2_UPE</po:status-constant>
    <po:getconf-name>POSIX2_UPE</po:getconf-name>
    <po:utility name="alias"/>
    <po:utility name="at"/>
    <po:utility name="batch"/>
    <po:utility name="bg"/>
    <po:utility name="command">
      <po:synopsis-form name="-v"/>
      <po:synopsis-form name="-V"/>
    </po:utility>
    <po:utility name="crontab"/>
    <po:utility name="split"/>
    <po:utility name="ctags"/>
    <po:utility name="df">
      <po:option>-k</po:option>
      <po:option>-P</po:option>
    </po:utility>
    <po:utility name="du"/>
    <po:utility name="ex"/>
    <po:utility name="expand"/>
    <po:utility name="fc"/>
    <po:utility name="fg"/>
    <po:utility name="file"/>
    <po:utility name="jobs"/>
    <po:utility name="man"/>
    <po:utility name="mesg"/>
    <po:utility name="more"/>
    <po:utility name="newgrp"/>
    <po:utility name="nice"/>
    <po:utility name="patch"/>
    <po:utility name="ps"/>
    <po:utility name="renice"/>
    <po:utility name="split"/>
    <po:utility name="strings"/>
    <po:utility name="tabs"/>
    <po:utility name="talk"/>
    <po:utility name="time"/>
    <po:utility name="tput"/>
    <po:utility name="unalias"/>
    <po:utility name="unexpand"/>
    <po:utility name="uudecode"/>
    <po:utility name="uuencode"/>
    <po:utility name="vi"/>
    <po:utility name="who"/>
    <po:utility name="write"/>
    <po:option status='optional'>
      <po:name>Terminal Characteristics (1003.2-1992)</po:name>
      <po:status-constant>_POSIX2_CHAR_TERM</po:status-constant>
      <po:getconf-name>POSIX2_CHAR_TERM</po:getconf-name>
    </po:option>
  </po:option>
  <po:option status='optional'>
    <po:name>X/Open System Interfaces</po:name>
    <po:margin-code>XSI</po:margin-code>
    <po:status-constant>_XOPEN_UNIX</po:status-constant>
    <po:sysconf-key>_SC_XOPEN_UNIX</po:sysconf-key>
    <po:sysconf-key>_SC_XOPEN_VERSION</po:sysconf-key>
    <po:sysconf-key>_SC_XOPEN_XCU_VERSION</po:sysconf-key>
    <po:requisite>File Synchronization</po:requisite>
    <po:requisite>Memory Mapped Files</po:requisite>
    <po:requisite>Memory Protection</po:requisite>
    <po:requisite>Thread Stack Address</po:requisite>
    <po:requisite>Thread Stack Size</po:requisite>
    <po:requisite>Thread Process-Shared Synchronization</po:requisite>
    <po:requisite>Thread-Safe Functions</po:requisite>
    <po:requisite>Threads</po:requisite>
    <po:requisite>C-Language Development Utilities</po:requisite>
    <po:requisite>User Portability Utilities</po:requisite>
    <po:header name='sys/mman.h'>
      <po:function name='mmap'/>
      <po:function name='munmap'/>
      <po:function name='msync'/>
    </po:header>
    <po:header name='cpio.h'/>
    <po:header name='ctype.h'>
      <po:function name='isascii'/>
      <po:function name='toascii'/>
      <po:macro name='_toupper'/>
      <po:macro name='_tolower'/>
    </po:header>
    <po:header name='dirent.h'>
      <po:type name='ino_t'/>
      <po:struct-membership name='struct dirent'>
        <po:struct-member>d_ino</po:struct-member>
      </po:struct-membership>
      <po:function name='seekdir'/>
      <po:function name='telldir'/>
    </po:header>
    <po:header name='dlfcn.h'>
      <po:constant>RTLD_LAZY</po:constant>
      <po:constant>RTLD_NOW</po:constant>
      <po:constant>RTLD_GLOBAL</po:constant>
      <po:constant>RTLD_LOCAL</po:constant>
      <po:function name="dlclose"/>
      <po:function name="dlerror"/>
      <po:function name="dlopen"/>
      <po:function name="dlsym"/>
    </po:header>
    <po:header name='fcntl.h'>
      <po:constant compare='unistd.h'>SEEK_SET</po:constant>
      <po:constant compare='unistd.h'>SEEK_CUR</po:constant>
      <po:constant compare='unistd.h'>SEEK_END</po:constant>
      <po:constant compare='sys/stat.h'>S_IRUSR</po:constant>
      <!-- (assume all the rest are there so I don't have to type 'em -->
    </po:header>
    <po:header name='fmtmsg.h'>
      <po:constant>MM_HARD</po:constant>
      <po:constant>MM_SOFT</po:constant>
      <po:constant>MM_FIRM</po:constant>
      <po:constant>MM_APPL</po:constant>
      <po:constant>MM_UTIL</po:constant>
      <po:constant>MM_OPSYS</po:constant>
      <po:constant>MM_RECOVER</po:constant>
      <po:constant>MM_NRECOV</po:constant>
      <po:constant>MM_HALT</po:constant>
      <po:constant>MM_ERROR</po:constant>
      <po:constant>MM_WARNING</po:constant>
      <po:constant>MM_INFO</po:constant>
      <po:constant>MM_NOSEV</po:constant>
      <po:constant>MM_PRINT</po:constant>
      <po:constant>MM_CONSOLE</po:constant>
      <po:constant type='char *'>MM_NULLLBL</po:constant>
      <po:constant>MM_NULLSEV</po:constant>
      <po:constant>MM_NULLMC</po:constant>
      <po:constant type='char *'>MM_NULLTXT</po:constant>
      <po:constant type='char *'>MM_NULLACT</po:constant>
      <po:constant type='char *'>MM_NULLTAG</po:constant>
      <po:constant>MM_OK</po:constant>
      <po:constant>MM_NOTOK</po:constant>
      <po:constant>MM_NOMSG</po:constant>
      <po:constant>MM_NOCON</po:constant>
      <po:function name='fmtmsg'/>
    </po:header>
    <po:header name='ftw.h'/>
    <po:header name='grp.h'>
      <po:function name='endgrent'/>
      <po:function name='getgrent'/>
      <po:function name='setgrent'/>
    </po:header>
    <po:header name='iconv.h'/>
    <po:header name='langinfo.h'/>
    <po:header name='libgen.h'>
      <po:function name="basename"/>
      <po:function name="dirname"/>
    </po:header>
    <po:header name='limits.h'>
      <po:parameter name="ATEXIT_MAX" sysconf="_SC_ATEXIT_MAX" min="32"/>
      <po:parameter name="IOV_MAX" sysconf="_SC_IOV_MAX" 
        min="_XOPEN_IOV_MAX"/>
      <po:parameter name="PAGE_SIZE" sysconf="_SC_PAGE_SIZE" value="PAGESIZE"/>
      <po:parameter name="NAME_MAX" pathconf="_PC_NAME_MAX" 
        min="_XOPEN_NAME_MAX"/>
      <po:parameter name="PATH_MAX" pathconf="_PC_PATH_MAX"
        min="_XOPEN_PATH_MAX"/>
      <po:parameter name="_XOPEN_IOV_MAX" value="16"/>
      <po:parameter name="_XOPEN_NAME_MAX" value="255"/>
      <po:parameter name="_XOPEN_PATH_MAX" value="1024"/>
      <po:parameter name="LONG_BIT" min="32"/>
      <po:parameter name="WORD_BIT" min="16"/>
      <po:parameter name="CHARCLASS_NAME_MAX" min="14"/>
      <po:parameter name="NL_ARGMAX" min="9"/>
      <po:parameter name="NL_LANGMAX" min="14"/>
      <po:parameter name="NL_MSGMAX" min="32767"/>
      <po:parameter name="NL_NMAX"/>
      <po:parameter name="NL_SETMAX" min="255"/>
      <po:parameter name="NL_TEXTAX" min="_POSIX2_LINE_MAX"/>
      <po:parameter name="NZERO" min="20"/>
    </po:header>
    <po:header name='math.h'>
      <po:constant name="M_E" type="double"/>
      <po:constant name="M_LOG2E" type="double"/>
      <po:constant name="M_LOG10E" type="double"/>
      <po:constant name="M_LN2" type="double"/>
      <po:constant name="M_LN10" type="double"/>
      <po:constant name="M_PI" type="double"/>
      <po:constant name="M_PI_2" type="double"/>
      <po:constant name="M_PI_4" type="double"/>
      <po:constant name="M_1_PI" type="double"/>
      <po:constant name="M_2_PI" type="double"/>
      <po:constant name="M_2_SQRTPI" type="double"/>
      <po:constant name="M_SQRT2" type="double"/>
      <po:constant name="M_SQRT1_2" type="double"/>
      <po:constant name="MAXFLOAT" type="float"/>
      <po:function name="j0"/>
      <po:function name="j1"/>
      <po:function name="jn"/>
      <po:function name="scalb"/>
      <po:function name="y0"/>
      <po:function name="y1"/>
      <po:function name="yn"/>
      <po:variable name="signgam" type="int"/>
    </po:header>
    <po:header name="monetary.h">
      <po:type name='size_t'/>
      <po:type name="ssize_t"/>
      <po:function name="strfmon"/>
    </po:header>
    <po:header name='ndbm.h'/>
    <po:header name='nl_types.h'/>
    <po:header name='poll.h'/>
    <po:header name='pthread.h'>
      <po:constant>PTHREAD_MUTEX_DEFAULT</po:constant>
      <po:constant>PTHREAD_MUTEX_ERRORCHECK</po:constant>
      <po:constant>PTHREAD_MUTEX_NORMAL</po:constant>
      <po:constant>PTHREAD_MUTEX_RECURSIVE</po:constant>
      <po:function name="pthread_attr_getguardsize"/>
      <po:function name="pthread_attr_setguardsize"/>
      <po:function name="pthread_getconcurrency"/>
      <po:function name="pthread_mutexattr_settype"/>
      <po:function name="pthread_setconcurrency"/>
    </po:header>
    <po:header name='pwd.h'>
      <po:function name='endpwent'/>
      <po:function name='getpwent'/>
      <po:function name='setpwent'/>
    </po:header>
    <po:header name='search.h'/>
    <po:header name='setjmp.h'>
      <po:function name='_longjmp'/>
      <po:function name='_setjmp'/>
    </po:header>
    <po:header name='signal.h'>
      <po:constant>SIGPOLL</po:constant>
      <po:constant>SIGPROF</po:constant>
      <po:constant>SIGSYS</po:constant>
      <po:constant>SIGTRAP</po:constant>
      <po:constant>SIGVTALRM</po:constant>
      <po:constant>SIGXCPU</po:constant>
      <po:constant>SIGXFSZ</po:constant>
      <po:constant>SA_ONSTACK</po:constant>
      <po:constant>SA_RESETHAND</po:constant>
      <po:constant>SA_RESTART</po:constant>
      <po:constant>SA_NOCLDWAIT</po:constant>
      <po:constant>SA_NODEFER</po:constant>
      <po:constant>SS_ONSTACK</po:constant>
      <po:constant>SS_DISABLE</po:constant>
      <po:constant>MINSIGSTKSZ</po:constant>
      <po:constant>SIGSTKSZ</po:constant>
      <po:type name='ucontext_t'/>
      <po:type name='mcontext_t'/>
      <po:type name='stack_t'/>
      <po:struct-membership name='stack_t'>
        <po:struct-member>ss_sp</po:struct-member>
        <po:struct-member>ss_size</po:struct-member>
        <po:struct-member>ss_flags</po:struct-member>
      </po:struct-membership>
      <po:type name='struct sigstack'/>
      <po:struct-membership name='struct sigstack'>
        <po:struct-member>ss_onstack</po:struct-member>
        <po:struct-member>ss_sp</po:struct-member>
      </po:struct-membership>
      <po:type name='siginfo_t'/>
      <po:struct-membership name='siginfo_t'>
        <po:struct-member>si_errno</po:struct-member>
        <po:struct-member>si_pid</po:struct-member>
        <po:struct-member>si_uid</po:struct-member>
        <po:struct-member>si_addr</po:struct-member>
        <po:struct-member>si_status</po:struct-member>
        <po:struct-member>si_band</po:struct-member>
      </po:struct-membership>
      <po:constant>ILL_ILLOPC</po:constant>
      <po:constant>ILL_ILLOPN</po:constant>
      <po:constant>ILL_ILLADR</po:constant>
      <po:constant>ILL_ILLTRP</po:constant>
      <po:constant>ILL_PRVOPC</po:constant>
      <po:constant>ILL_PRVREG</po:constant>
      <po:constant>ILL_COPROC</po:constant>
      <po:constant>ILL_BADSTK</po:constant>
      <po:constant>FPE_INTDIV</po:constant>
      <po:constant>FPE_INTOVF</po:constant>
      <po:constant>FPE_FLTDIV</po:constant>
      <po:constant>FPE_FLTOVF</po:constant>
      <po:constant>FPE_FLTUND</po:constant>
      <po:constant>FPE_FLTRES</po:constant>
      <po:constant>FPE_FLTINV</po:constant>
      <po:constant>FPE_FLTSUB</po:constant>
      <po:constant>SEGV_MAPERR</po:constant>
      <po:constant>SEGV_ACCERR</po:constant>
      <po:constant>BUS_ADRALN</po:constant>
      <po:constant>BUS_ADRERR</po:constant>
      <po:constant>BUS_OBJERR</po:constant>
      <po:constant>CLD_EXITED</po:constant>
      <po:constant>CLD_KILLED</po:constant>
      <po:constant>CLD_DUMPED</po:constant>
      <po:constant>CLD_TRAPPED</po:constant>
      <po:constant>CLD_STOPPED</po:constant>
      <po:constant>CLD_CONTINUED</po:constant>
      <po:constant>POLL_IN</po:constant>
      <po:constant>POLL_OUT</po:constant>
      <po:constant>POLL_MSG</po:constant>
      <po:constant>POLL_ERR</po:constant>
      <po:constant>POLL_PRI</po:constant>
      <po:constant>POLL_HUP</po:constant>
      <po:function name="bsd_signal"/>
      <po:function name="killpg"/>
      <po:function name="sigaltstack"/>
      <po:function name="sighold"/>
      <po:function name="sigignore"/>
      <po:function name="siginterrupt"/>
      <po:function name="sigpause"/>
      <po:function name="sigrelse"/>
      <po:function name="sigset"/>
    </po:header>
    <po:header name='stdint.h'>
      <!-- these types are optional if not XSI -->
      <po:type name='intptr_t'/>
      <po:type name='uintptr_t'/>
    </po:header>
    <po:header name='stdio.h'>
      <po:parameter name='TMP_MAX' min="10000"/> <!-- sysconf='XXX ???' -->
      <po:macro>P_tmpdir</po:macro>
      <po:type>va_list</po:type>
      <po:function name="tempnam"/>
    </po:header>
    <po:header name='stdlib.h'>
      <po:constant>WNOHANG</po:constant>
      <po:constant>WUNTRACED</po:constant>
      <po:macro>WEXITSTATUS</po:macro>
      <po:macro>WIFEXITED</po:macro>
      <po:macro>WIFSIGNALED</po:macro>
      <po:macro>WIFSTOPPED</po:macro>
      <po:macro>WSTOPSIG</po:macro>
      <po:macro>WTERMSIG</po:macro>
      <po:function name="a64l"/>
      <po:function name="drand48"/>
      <po:function name="erand48"/>
      <po:function name="getsubopt"/>
      <po:function name="grantpt"/>
      <po:function name="initstate"/>
      <po:function name="jrand48"/>
      <po:function name="l64a"/>
      <po:function name="lcong48"/>
      <po:function name="lrand48"/>
      <po:function name="mkstemp"/>
      <po:function name="mrand48"/>
      <po:function name="nrand48"/>
      <po:function name="posix_openpt"/>
      <po:function name="ptsname"/>
      <po:function name="putenv"/>
      <po:function name="random"/>
      <po:function name="realpath"/>
      <po:function name="seed48"/>
      <po:function name="setstate"/>
      <po:function name="srand48"/>
      <po:function name="srandom"/>
      <po:function name="unlockpt"/>
    </po:header>
    <po:header name='string.h'>
      <po:function name="memccpy"/>
      <po:function name="strdup"/>
    </po:header>
    <po:header name='strings.h'>
      <po:function name="ffs"/>
      <po:function name="strcasecmp"/>
      <po:function name="strncasecmp"/>
      <po:type name='size_t'/>
    </po:header>
    <po:header name='sys/ipc.h'/>
    <po:header name='sys/msg.h'/>
    <po:header name='sys/resource.h'/>
    <po:header name='sys/sem.h'/>
    <po:header name='sys/stat.h'>
      <po:struct-membership name='struct stat'>
        <po:struct-member>st_rdev</po:struct-member>
        <po:struct-member>st_blksize</po:struct-member>
        <po:struct-member>st_blocks</po:struct-member>
      </po:struct-membership>
      <po:constant>S_IFMT</po:constant>
      <po:constant>S_IFBLK</po:constant>
      <po:constant>S_IFCHR</po:constant>
      <po:constant>S_IFIFO</po:constant>
      <po:constant>S_IFREG</po:constant>
      <po:constant>S_IFDIR</po:constant>
      <po:constant>S_IFLNK</po:constant>
      <po:constant>S_IFSOCK</po:constant>
      <po:constant>S_ISVTX</po:constant>
      <po:function name="mknod"/>
    </po:header>
    <po:header name='sys/statvfs.h'>
      <po:type name='struct statvfs'/>
      <po:struct-membership name='struct statvfs'>
        <po:struct-member>f_bsize</po:struct-member>
        <po:struct-member>f_frsize</po:struct-member>
        <po:struct-member>f_blocks</po:struct-member>
        <po:struct-member>f_bfree</po:struct-member>
        <po:struct-member>f_bavail</po:struct-member>
        <po:struct-member>f_files</po:struct-member>
        <po:struct-member>f_ffree</po:struct-member>
        <po:struct-member>f_favail</po:struct-member>
        <po:struct-member>f_fsid</po:struct-member>
        <po:struct-member>f_flag</po:struct-member>
        <po:struct-member>f_namemax</po:struct-member>
      </po:struct-membership>
      <po:type name='fsblkcnt_t'/>
      <po:type name='fsfilcnt_t'/>
      <po:constant>ST_RDONLY</po:constant>
      <po:constant>ST_NOSUID</po:constant>
      <po:function name="statvfs"/>
      <po:function name="fstatvfs"/>
    </po:header>
    <po:header name='sys/time.h'/>
    <po:header name='sys/types.h'>
      <po:type name='clock_t'/>
      <po:type name='fsblkcnt_t'/>
      <po:type name='fsfilcnt_t'/>
      <po:type name='id_t'/>
      <po:type name='key_t'/>
      <po:type name='suseconds_t'/>
    </po:header>
    <po:header name='sys/uio.h'>
      <po:type name='struct iovec'/>
      <po:struct-membership name='struct iovec'>
        <po:struct-member>iov_base</po:struct-member>
        <po:struct-member>iov_len</po:struct-member>
      </po:struct-membership>
      <po:type name='size_t'/>
      <po:type name='ssize_t'/>
      <po:function name="readv"/>
      <po:function name="writev"/>
    </po:header>
    <po:header name='sys/wait.h'>
      <po:macro>WIFCONTINUED</po:macro>
      <po:constant>WEXITED</po:constant>
      <po:constant>WSTOPPED</po:constant>
      <po:constant>WCONTINUED</po:constant>
      <po:constant>WNOHANG</po:constant>
      <po:constant>WNOWAIT</po:constant>
      <po:type name='idtype_t'>
        <po:enum-value>P_ALL</po:enum-value>
        <po:enum-value>P_PID</po:enum-value>
        <po:enum-value>P_PGID</po:enum-value>
      </po:type>
      <po:type name='siginfo_t'/>
      <po:type name='struct rusage'/>
      <po:function name="waitid"/>
    </po:header>
    <po:header name='syslog.h'/>
    <po:header name='tar.h'>
      <po:constant>TSVTX</po:constant>
    </po:header>
    <po:header name='termios.h'>
      <po:constant>IXANY</po:constant>
      <po:constant>ONLCR</po:constant>
      <po:constant>ONOCR</po:constant>
      <po:constant>ONLRET</po:constant>
      <po:constant>OFILL</po:constant>
      <po:constant>NLDLY</po:constant>
      <po:constant>NL0</po:constant>
      <po:constant>NL1</po:constant>
      <po:constant>CRDLY</po:constant>
      <po:constant>CR0</po:constant>
      <po:constant>CR1</po:constant>
      <po:constant>CR2</po:constant>
      <po:constant>CR3</po:constant>
      <po:constant>TABDLY</po:constant>
      <po:constant>TAB0</po:constant>
      <po:constant>TAB1</po:constant>
      <po:constant>TAB2</po:constant>
      <po:constant>TAB2</po:constant>
      <po:constant>TAB3</po:constant>
      <po:constant>BSDLY</po:constant>
      <po:constant>BS0</po:constant>
      <po:constant>BS1</po:constant>
      <po:constant>VTDLY</po:constant>
      <po:constant>VT0</po:constant>
      <po:constant>VT1</po:constant>
      <po:constant>FFDLY</po:constant>
      <po:constant>FF0</po:constant>
      <po:constant>FF1</po:constant>
      <po:function name="tcgetsid"/>
    </po:header>
    <po:header name='time.h'>
      <!-- getdate_err, whatever that is -->
      <po:function name="getdate"/>
      <po:function name="strptime"/>
      <po:variable name='daylight' type='int'/>
      <po:variable name='timezone' type='long'/>
    </po:header>
    <po:header name='unistd.h'>
      <po:function name="ctermid"/>
      <po:function name="fchdir"/>
      <po:function name="gethostid"/>
      <po:function name="getpgid"/>
      <po:function name="getsid"/>
      <po:function name="lchown"/>
      <po:function name="lockf"/>
      <po:function name="nice"/>
      <po:function name="pread"/>
      <po:function name="pwrite"/>
      <po:function name="setpgrp"/>
      <po:function name="setregid"/>
      <po:function name="setreuid"/>
      <po:function name="swap"/>
      <po:function name="sync"/>
      <po:function name="truncate"/>
      <po:function name="ualarm"/>
      <po:function name="usleep"/>
      <po:function name="vfork"/>
    </po:header>
    <po:header name='utmpx.h'/>
    <po:header name='wchar.h'>
      <po:type name='wctype_t'/>
      <po:type name='FILE'/>
      <po:type name='va_list'/>
      <po:function name="iswalnum"/>
      <po:function name="iswalpha"/>
      <po:function name="iswcntrl"/>
      <po:function name="iswctype"/>
      <po:function name="iswdigit"/>
      <po:function name="iswgraph"/>
      <po:function name="iswlower"/>
      <po:function name="iswprint"/>
      <po:function name="iswpunct"/>
      <po:function name="iswspace"/>
      <po:function name="iswupper"/>
      <po:function name="iswxdigit"/>
      <po:function name="towlower"/>
      <po:function name="towupper"/>
      <po:function name="wctype"/>
      <po:function name="wcwidth"/>
    </po:header>
    <po:header name='wordexp.h'>
      <po:type name='size_t'/>
    </po:header>

    <!-- The pervasive use of the NLSPATH environment variable is not described
         herein. -->
    <po:utility name='ar'>
      <po:requisite>Software Development Utilities</po:requisite>
      <po:behavior>Archives of printable files must be printable</po:behavior>
      <po:behavior>Automatic symbol table updating</po:behavior>
      <po:synopsis-form name="-m">
        <po:option>-a posname</po:option>
        <po:option>-b posname</po:option>
        <po:option>-i posname</po:option>
        <po:option>-v</po:option>
      </po:synopsis-form>
      <po:synopsis-form name="-p">
        <po:option>-s</po:option>
      </po:synopsis-form>
      <po:synopsis-form name="-r">
        <po:option>-a posname</po:option>
        <po:option>-b posname</po:option>
        <po:option>-i posname</po:option>
      </po:synopsis-form>
      <po:synopsis-form name="-t">
        <po:option>-s</po:option>
      </po:synopsis-form>
      <po:synopsis-form name="-x">
        <po:option>-s</po:option>
        <po:option>-C</po:option>
        <po:option>-T</po:option>
      </po:synopsis-form>
    </po:utility>
    <po:utility name='at'>
      <po:behavior>/usr/lib/cron/at.allow and /usr/lib/cron/at.deny (with
      those literal pathnames)</po:behavior>
    </po:utility>
    <po:utility name='batch'>
      <po:behavior>/usr/lib/cron/at.allow and /usr/lib/cron/at.deny (with
      those literal pathnames)</po:behavior>
    </po:utility>
    <po:utility name='cal'/>
    <po:utility name='chmod'>
      <po:behavior>
        Permission symbol `t' for S_ISVTX on directories only
      </po:behavior>
      <po:behavior>
        Octal mode bit 01000 corresponds to S_ISVTX
      </po:behavior>
    </po:utility>
    <po:utility name='compress'/>
    <po:utility name='crontab'>
      <po:behavior>/usr/lib/cron/cron.allow and /usr/lib/cron/cron.deny (with
      those literal pathnames)</po:behavior>
    </po:utility>
    <po:utility name='date'>
      <po:synopsis-form name="mmddhhmm[[cc]yy]">
        <po:behavior>Reset system data and time</po:behavior>
      </po:synopsis-form>
    </po:utility>
    <po:utility name='dd'>
      <po:option>conv=ascii</po:option>
      <po:option>conv=ebcdic</po:option>
      <po:option>conv=ibm</po:option>
      <po:behavior>
        `cbs=' option required if EBCDIC conversions specified
      </po:behavior>
    </po:utility>
    <po:utility name='df'>
      <po:option>-t</po:option>
      <po:behavior>Always report inode statistics</po:behavior>
      <po:behavior>
        Examine filesystem named by device-special file
      </po:behavior>
    </po:utility>
    <po:utility name='fuser'/>
    <po:utility name='gencat'/>
    <po:utility name='hash'/>
    <po:utility name='ipcrm'/>
    <po:utility name='ipcs'/>
    <po:utility name='kill'>
      <po:synopsis-form name="-signame"/>
      <po:synopsis-form name="-signum">
        <po:behavior>
	  Numbers explicitly specified: 0, 1, 2, 3, 6, 9, 14, 15
	</po:behavior>
      </po:synopsis-form>
    </po:utility>
    <po:utility name='link'/>
    <po:utility name='ls'>
      <po:option>-f</po:option>
      <po:option>-g</po:option>
      <po:option>-m</po:option>
      <po:option>-n</po:option>
      <po:option>-o</po:option>
      <po:option>-p</po:option>
      <po:option>-s</po:option>
      <po:option>-x</po:option>
    </po:utility>
    <po:utility name='nl'/>
    <po:utility name='nm'>
      <po:option>-e</po:option>
      <po:option>-f</po:option>
      <po:option>-o</po:option>
      <po:option>-x</po:option>
      <po:behavior>`-t d' is the default numeric format</po:behavior>
    </po:utility>
    <po:utility name='od'>
      <po:synopsis-form name="optional offset">
        <po:option>-b</po:option>
        <po:option>-c</po:option>
        <po:option>-d</po:option>
        <po:option>-o</po:option>
        <po:option>-s</po:option>
        <po:option>-x</po:option>
      </po:synopsis-form>
    </po:utility>
    <po:utility name='pr'>
      <po:option>-f</po:option>
    </po:utility>
    <po:utility name='ps'>
      <po:option>-d</po:option>
      <po:option>-e</po:option>
      <po:option>-f</po:option>
      <po:option>-g grouplist</po:option>
      <po:option>-l</po:option>
      <po:option>-n namelist</po:option>
      <po:option>-u userlist</po:option>
      <po:behavior>Specific outout format</po:behavior>
    </po:utility>
    <po:utility name='ps'>
      <!-- binary options are assumed to include their negation -->
      <po:option>ixany</po:option>
      <po:option>ocrnl</po:option>
      <po:option>onocr</po:option>
      <po:option>onlret</po:option>
      <po:option>ofill</po:option>
      <po:option>ofdel</po:option>
      <po:option>cr[0-3]</po:option>
      <po:option>nl[01]</po:option>
      <po:option>tab[0-3]</po:option>
      <po:option>tabs</po:option>
      <po:option>bs[01]</po:option>
      <po:option>ff[01]</po:option>
      <po:option>vt[01]</po:option>
      <po:option>raw</po:option>
      <po:option>cooked</po:option>
    </po:utility>
    <po:utility name='tabs'>
      <po:option>-a</po:option>
      <po:option>-a2</po:option>
      <po:option>-c</po:option>
      <po:option>-c2</po:option>
      <po:option>-c3</po:option>
      <po:option>-f</po:option>
      <po:option>-p</po:option>
      <po:option>-s</po:option>
      <po:option>-u</po:option>
    </po:utility>
    <po:utility name='test'>
      <po:synopsis-form name="-a"/>
      <po:synopsis-form name="-o"/>
      <po:synopsis-form name="( )"/>
    </po:utility>
    <po:utility name='tr'>
      <po:behavior>Named character classes</po:behavior>
    </po:utility>
    <po:utility name='tsort'/>
    <po:utility name='type'/>
    <po:utility name='ulimit'/>
    <po:utility name='uncompress'/>
    <po:utility name='unlink'/>
    <po:utility name='uucp'/>
    <po:utility name='uustat'/>
    <po:utility name='uux'/>
    <po:utility name='who'>
      <po:synopsis-form name="-s">
        <po:option>-b</po:option>
        <po:option>-H</po:option>
        <po:option>-l</po:option>
        <po:option>-p</po:option>
        <po:option>-r</po:option>
        <po:option>-t</po:option>
      </po:synopsis-form>
      <po:synopsis-form name="default">
        <po:option>-a</po:option>
        <po:option>-b</po:option>
        <po:option>-H</po:option>
        <po:option>-l</po:option>
        <po:option>-p</po:option>
        <po:option>-r</po:option>
        <po:option>-t</po:option>
      </po:synopsis-form>
      <po:behavior>Special treatment of idle time</po:behavior>
      <po:behavior>Alternate utmp file argument</po:behavior>
      <po:synopsis-form name="-q"/>
      <po:synopsis-form name="am i"/>
      <po:synopsis-form name="am I"/>
    </po:utility>
    <po:utility name='xargs'>
      <po:option>-I</po:option>
      <po:option>-L</po:option>
    </po:utility>
    <po:utility name='zcat'/>

    <po:option status='optional'>
      <po:name>XSI Development Utilities</po:name>
      <po:utility name='admin'/>
      <po:utility name='cflow'/>
      <po:utility name='ctags'/>
      <po:utility name='cxref'/>
      <po:utility name="delta"/>
      <po:utility name="get"/>
      <po:utility name="m4"/>
      <po:utility name="patch">
        <po:behavior>SCCS integration</po:behavior>
      </po:utility>
      <po:utility name="prs"/>
      <po:utility name="rmdel"/>
      <po:utility name="sact"/>
      <po:utility name="sccs"/>
      <po:utility name="unget"/>
      <po:utility name="val"/>
      <po:utility name="what"/>
    </po:option>
    <po:option status='optional'>
      <po:name>XSI Encryption Option Group</po:name>
      <po:status-constant>_XOPEN_CRYPT</po:status-constant>
      <po:sysconf-key>_SC_XOPEN_CRYPT</po:sysconf-key>
      <po:header name='stdlib.h'>
        <po:function name="setkey"/>
      </po:header>
      <po:header name='unistd.h'>
        <po:function name="crypt"/>
        <po:function name="encrypt"/>
      </po:header>
    </po:option>
    <po:option status='mandatory'>
      <po:name>XSI Enhanced Internationalization</po:name>
      <po:status-constant>_XOPEN_ENH_I18N</po:status-constant>
      <po:sysconf-key>_SC_XOPEN_ENH_I18N</po:sysconf-key>
    </po:option>
    <po:option status='optional'>
      <po:name>XSI Obsolete Interfaces</po:name>
      <po:margin-code>OB</po:margin-code>
      <po:header name='fnmatch.h'>
        <po:constant>FNM_NOSYS</po:constant>
      </po:header>
      <po:header name='glob.h'>
        <po:constant>GLOB_NOSYS</po:constant>
      </po:header>
      <po:header name='regex.h'>
        <po:constant>REG_ENOSYS</po:constant>
      </po:header>
      <po:header name='wordexp.h'>
        <po:constant>WRDE_NOSYS</po:constant>
      </po:header>
      <po:header name='ucontext.h'>
        <po:type name='mcontext_t'/>
	<po:type name='ucontext_t'/>
	<po:struct-membership name='ucontext_t'>
	  <po:struct-member>uc_link</po:struct-member>
	  <po:struct-member>uc_sigmask</po:struct-member>
	  <po:struct-member>uc_stack</po:struct-member>
	  <po:struct-member>uc_mcontext</po:struct-member>
	</po:struct-membership>
	<po:type name='sigset_t'/>
	<po:type name='stack_t'/>
	<po:function name="getcontext"/>
	<po:function name="setcontext"/>
	<po:function name="makecontext"/>
	<po:function name="swapcontext"/>
      </po:header>
      <po:header name='ulimit.h'>
        <po:constant>UL_GETFSIZE</po:constant>
	<po:constant>UL_SETFSIZE</po:constant>
	<po:function name='ulimit'/>
      </po:header>
      <po:header name='unistd.h'>
        <po:parameter name='_XOPEN_VERSION' sysconf='_SC_XOPEN_VERSION'
	  value='600'/>
      </po:header>
    </po:option>
    <po:option status='optional'>
      <po:name>XSI Realtime Option Group</po:name>
      <po:status-constant>_XOPEN_REALTIME</po:status-constant>
      <po:sysconf-key>_SC_XOPEN_REALTIME</po:sysconf-key>
      <po:requisite>Asynchronous Input and Output</po:requisite>
      <po:requisite>Process Memory Locking</po:requisite>
      <po:requisite>Range Memory Locking</po:requisite>
      <po:requisite>Message Passing</po:requisite>
      <po:requisite>Process Scheduling</po:requisite>
      <po:requisite>Realtime Signals</po:requisite>
      <po:requisite>Semaphores</po:requisite>
      <po:requisite>Shared Memory Objects</po:requisite>
      <po:requisite>Synchronized Input and Output</po:requisite>
      <po:requisite>Timers</po:requisite>
      <po:option status='optional'>
        <po:name>XSI Advanced Realtime Option Group</po:name>
	<po:status-constant>_XOPEN_ADVANCED_REALTIME</po:status-constant>
	<po:requisite>Advisory Information</po:requisite>
	<po:requisite>Clock Selection</po:requisite>
	<po:requisite>Process CPU-Time Clocks</po:requisite>
	<po:requisite>Monotonic Clock</po:requisite>
	<po:requisite>Spawn</po:requisite>
	<po:requisite>Process Sporadic Server</po:requisite>
	<po:requisite>Timeouts</po:requisite>
	<po:requisite>Typed Memory Objects</po:requisite>
      </po:option>
    </po:option>
    <po:option status='optional'>
      <po:name>XSI Realtime Threads Option Group</po:name>
      <po:status-constant>_XOPEN_REALTIME_THREADS</po:status-constant>
      <po:sysconf-key>_SC_XOPEN_REALTIME_THREADS</po:sysconf-key>
      <po:requisite>Thread Priority Inheritance</po:requisite>
      <po:requisite>Thread Priority Protection</po:requisite>
      <po:requisite>Thread Scheduling</po:requisite>
      <po:option status='optional'>
        <po:name>Advanced Realtime Threads</po:name>
        <po:requisite>Barriers</po:requisite>
	<po:requisite>Spin Locks</po:requisite>
	<po:requisite>Thread CPU-Time Clocks</po:requisite>
	<po:requisite>Thread Sporadic Server</po:requisite>
      </po:option>
    </po:option>
    <po:option status='mandatory'>
      <po:name>XSI Shared Memory (Issue 4, Release 2)</po:name>
      <po:status-constant>_XOPEN_SHM</po:status-constant>
      <po:sysconf-key>_SC_XOPEN_SHM</po:sysconf-key>
      <po:header name='sys/shm.h'/>
      <po:utility name='ipcs'>
        <po:option>-m</po:option>
      </po:utility>
    </po:option>
    <po:option status='optional'>
      <po:name>XSI Tracing Option Group</po:name>
      <po:requisite>Trace</po:requisite>
      <po:requisite>Trace Event Filter</po:requisite>
      <po:requisite>Trace Log</po:requisite>
      <po:requisite>Trace Inherit</po:requisite>
    </po:option>
    <po:option status='optional'>
      <po:name>XSI STREAMS Option Group</po:name>
      <po:margin-code>XSR</po:margin-code>
      <po:status-constant>_XOPEN_STREAMS</po:status-constant>
      <po:sysconf-key>_SC_XOPEN_STREAMS</po:sysconf-key>
      <po:function name="fattach"/>
      <po:function name="fdetach"/>
      <po:function name="getmsg"/>
      <po:function name="getpmsg"/>
      <po:function name="ioctl"/>
      <po:function name="isastream"/>
      <po:function name="putmsg"/>
      <po:function name="putpmsg"/>
      <po:header name='errno.h'>
        <po:constant>ENODATA</po:constant>
        <po:constant>ENOSR</po:constant>
        <po:constant>ENOSTR</po:constant>
        <po:constant>ETIME</po:constant>
      </po:header>
      <po:header name='stropts.h'/>
    </po:option>
    <po:option status='optional'>
      <po:name>XSI Legacy Option Group</po:name>
      <po:status-constant>_XOPEN_LEGACY</po:status-constant>
      <po:sysconf-key>_SC_XOPEN_LEGACY</po:sysconf-key>
      <po:header name='stdlib.h'>
        <po:function name="ecvt"/>
	<po:function name="fcvt"/>
	<po:function name="gcvt"/>
	<po:function name="mktemp"/>
      </po:header>
      <po:header name='strings.h'>
        <po:function name="bcmp"/>
	<po:function name="bcopy"/>
	<po:function name="bzero"/>
	<po:function name="index"/>
	<po:function name="rindex"/>
      </po:header>
      <po:header name='sys/time.h'>
	<po:function name="utimes"/>
      </po:header>
      <po:header name='sys/timeb.h'>
        <po:type name='struct timeb'/>
	<po:struct-membership name='struct timeb'>
	  <po:struct-member>time</po:struct-member>
	  <po:struct-member>millitm</po:struct-member>
	  <po:struct-member>timezone</po:struct-member>
	  <po:struct-member>dstflag</po:struct-member>
	</po:struct-membership>
	<po:type name='time_t'/>
	<po:function name="ftime"/>
      </po:header>
      <po:header name='unistd.h'>
        <po:constant>_SC_XBS5_ILP32_OFF32</po:constant>
        <po:constant>_SC_XBS5_ILP32_OFFBIG</po:constant>
        <po:constant>_SC_XBS5_LP64_OFF64</po:constant>
        <po:constant>_SC_XBS5_LPBIG_OFFBIG</po:constant>
	<po:function name="getwd"/>
      </po:header>
      <po:header name='wchar.h'>
	<po:function name="wcswcs"/>
      </po:header>
    </po:option>
  </po:option>
</po:posix-options>
