Files
oldlinux-files/Ref-docs/POSIX/susv3/functions/sysconf.html
2024-02-19 00:21:47 -05:00

1486 lines
39 KiB
HTML

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta name="generator" content="HTML Tidy, see www.w3.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link type="text/css" rel="stylesheet" href="style.css"><!-- Generated by The Open Group's rhtm tool v1.2.1 -->
<!-- Copyright (c) 2001 The Open Group, All Rights Reserved -->
<title>sysconf</title>
</head>
<body bgcolor="white">
<script type="text/javascript" language="JavaScript" src="../jscript/codes.js">
</script>
<basefont size="3"> <a name="sysconf"></a> <a name="tag_03_755"></a><!-- sysconf -->
<!--header start-->
<center><font size="2">The Open Group Base Specifications Issue 6<br>
IEEE Std 1003.1-2001<br>
Copyright &copy; 2001 The IEEE and The Open Group, All Rights reserved.</font></center>
<!--header end-->
<hr size="2" noshade>
<h4><a name="tag_03_755_01"></a>NAME</h4>
<blockquote>sysconf - get configurable system variables</blockquote>
<h4><a name="tag_03_755_02"></a>SYNOPSIS</h4>
<blockquote class="synopsis">
<p><code><tt>#include &lt;<a href="../basedefs/unistd.h.html">unistd.h</a>&gt;<br>
<br>
long sysconf(int</tt> <i>name</i><tt>);<br>
</tt></code></p>
</blockquote>
<h4><a name="tag_03_755_03"></a>DESCRIPTION</h4>
<blockquote>
<p>The <i>sysconf</i>() function provides a method for the application to determine the current value of a configurable system
limit or option ( <i>variable</i>). Support for some system variables is dependent on implementation options (as indicated by the
margin codes in the following table). Where an implementation option is not supported, the variable need not be supported.</p>
<p>The <i>name</i> argument represents the system variable to be queried. The following table lists the minimal set of system
variables from <a href="../basedefs/limits.h.html"><i>&lt;limits.h&gt;</i></a> or <a href=
"../basedefs/unistd.h.html"><i>&lt;unistd.h&gt;</i></a> that can be returned by <i>sysconf</i>(), and the symbolic constants
defined in <a href="../basedefs/unistd.h.html"><i>&lt;unistd.h&gt;</i></a> that are the corresponding values used for <i>name</i>.
Support for some configuration variables is dependent on implementation options (see shading and margin codes in the table below).
Where an implementation option is not supported, the variable need not be supported.</p>
<center>
<table border="1" cellpadding="3" align="center">
<tr valign="top">
<th align="center">
<p class="tent"><b>Variable</b></p>
</th>
<th align="center">
<p class="tent"><b>Value of Name</b></p>
</th>
</tr>
<tr valign="top">
<td align="left">
<p class="tent"><sup>[<a href="javascript:open_code('AIO')">AIO</a>]</sup> <img src="../images/opt-start.gif" alt="[Option Start]"
border="0"> {AIO_LISTIO_MAX}</p>
</td>
<td align="left">
<p class="tent">_SC_AIO_LISTIO_MAX</p>
</td>
</tr>
<tr valign="top">
<td align="left">
<p class="tent">{AIO_MAX}</p>
</td>
<td align="left">
<p class="tent">_SC_AIO_MAX</p>
</td>
</tr>
<tr valign="top">
<td align="left">
<p class="tent">{AIO_PRIO_DELTA_MAX}</p>
</td>
<td align="left">
<p class="tent">_SC_AIO_PRIO_DELTA_MAX <img src="../images/opt-end.gif" alt="[Option End]" border="0"></p>
</td>
</tr>
<tr valign="top">
<td align="left">
<p class="tent">{ARG_MAX}</p>
</td>
<td align="left">
<p class="tent">_SC_ARG_MAX</p>
</td>
</tr>
<tr valign="top">
<td align="left">
<p class="tent"><sup>[<a href="javascript:open_code('XSI')">XSI</a>]</sup> <img src="../images/opt-start.gif" alt="[Option Start]"
border="0"> {ATEXIT_MAX}</p>
</td>
<td align="left">
<p class="tent">_SC_ATEXIT_MAX <img src="../images/opt-end.gif" alt="[Option End]" border="0"></p>
</td>
</tr>
<tr valign="top">
<td align="left">
<p class="tent">{BC_BASE_MAX}</p>
</td>
<td align="left">
<p class="tent">_SC_BC_BASE_MAX</p>
</td>
</tr>
<tr valign="top">
<td align="left">
<p class="tent">{BC_DIM_MAX}</p>
</td>
<td align="left">
<p class="tent">_SC_BC_DIM_MAX</p>
</td>
</tr>
<tr valign="top">
<td align="left">
<p class="tent">{BC_SCALE_MAX}</p>
</td>
<td align="left">
<p class="tent">_SC_BC_SCALE_MAX</p>
</td>
</tr>
<tr valign="top">
<td align="left">
<p class="tent">{BC_STRING_MAX}</p>
</td>
<td align="left">
<p class="tent">_SC_BC_STRING_MAX</p>
</td>
</tr>
<tr valign="top">
<td align="left">
<p class="tent">{CHILD_MAX}</p>
</td>
<td align="left">
<p class="tent">_SC_CHILD_MAX</p>
</td>
</tr>
<tr valign="top">
<td align="left">
<p class="tent">Clock ticks/second</p>
</td>
<td align="left">
<p class="tent">_SC_CLK_TCK</p>
</td>
</tr>
<tr valign="top">
<td align="left">
<p class="tent">{COLL_WEIGHTS_MAX}</p>
</td>
<td align="left">
<p class="tent">_SC_COLL_WEIGHTS_MAX</p>
</td>
</tr>
<tr valign="top">
<td align="left">
<p class="tent"><sup>[<a href="javascript:open_code('XSI')">XSI</a>]</sup> <img src="../images/opt-start.gif" alt="[Option Start]"
border="0"> {DELAYTIMER_MAX}</p>
</td>
<td align="left">
<p class="tent">_SC_DELAYTIMER_MAX <img src="../images/opt-end.gif" alt="[Option End]" border="0"></p>
</td>
</tr>
<tr valign="top">
<td align="left">
<p class="tent">{EXPR_NEST_MAX}</p>
</td>
<td align="left">
<p class="tent">_SC_EXPR_NEST_MAX</p>
</td>
</tr>
<tr valign="top">
<td align="left">
<p class="tent">{HOST_NAME_MAX}</p>
</td>
<td align="left">
<p class="tent">_SC_HOST_NAME_MAX</p>
</td>
</tr>
<tr valign="top">
<td align="left">
<p class="tent"><sup>[<a href="javascript:open_code('XSI')">XSI</a>]</sup> <img src="../images/opt-start.gif" alt="[Option Start]"
border="0"> {IOV_MAX}</p>
</td>
<td align="left">
<p class="tent">_SC_IOV_MAX <img src="../images/opt-end.gif" alt="[Option End]" border="0"></p>
</td>
</tr>
<tr valign="top">
<td align="left">
<p class="tent">{LINE_MAX}</p>
</td>
<td align="left">
<p class="tent">_SC_LINE_MAX</p>
</td>
</tr>
<tr valign="top">
<td align="left">
<p class="tent">{LOGIN_NAME_MAX}</p>
</td>
<td align="left">
<p class="tent">_SC_LOGIN_NAME_MAX</p>
</td>
</tr>
<tr valign="top">
<td align="left">
<p class="tent">{NGROUPS_MAX}</p>
</td>
<td align="left">
<p class="tent">_SC_NGROUPS_MAX</p>
</td>
</tr>
<tr valign="top">
<td align="left">
<p class="tent"><sup>[<a href="javascript:open_code('TSF')">TSF</a>]</sup> <img src="../images/opt-start.gif" alt="[Option Start]"
border="0"> Maximum size of <i>getgrgid_r</i>() and</p>
</td>
<td align="left">
<p class="tent">_SC_GETGR_R_SIZE_MAX</p>
</td>
</tr>
<tr valign="top">
<td align="left">
<p class="tent"><i>getgrnam_r</i>() data buffers</p>
</td>
<td align="left">
<p class="tent">&nbsp;</p>
</td>
</tr>
<tr valign="top">
<td align="left">
<p class="tent">Maximum size of <i>getpwuid_r</i>() and</p>
</td>
<td align="left">
<p class="tent">_SC_GETPW_R_SIZE_MAX</p>
</td>
</tr>
<tr valign="top">
<td align="left">
<p class="tent"><i>getpwnam_r</i>() data buffers</p>
</td>
<td align="left">
<p class="tent">&nbsp;</p>
</td>
</tr>
<tr valign="top">
<td align="left">
<p class="tent"><sup>[<a href="javascript:open_code('MSG')">MSG</a>]</sup> <img src="../images/opt-start.gif" alt="[Option Start]"
border="0"> {MQ_OPEN_MAX}</p>
</td>
<td align="left">
<p class="tent">_SC_MQ_OPEN_MAX</p>
</td>
</tr>
<tr valign="top">
<td align="left">
<p class="tent">{MQ_PRIO_MAX}</p>
</td>
<td align="left">
<p class="tent">_SC_MQ_PRIO_MAX <img src="../images/opt-end.gif" alt="[Option End]" border="0"></p>
</td>
</tr>
</table>
</center>
<hr>
<center>
<table border="1" cellpadding="3" align="center">
<tr valign="top">
<th align="center">
<p class="tent"><b>Variable</b></p>
</th>
<th align="center">
<p class="tent"><b>Value of Name</b></p>
</th>
</tr>
<tr valign="top">
<td align="left">
<p class="tent">{OPEN_MAX}</p>
</td>
<td align="left">
<p class="tent">_SC_OPEN_MAX</p>
</td>
</tr>
<tr valign="top">
<td align="left">
<p class="tent"><sup>[<a href="javascript:open_code('ADV')">ADV</a>]</sup> <img src="../images/opt-start.gif" alt="[Option Start]"
border="0"> _POSIX_ADVISORY_INFO</p>
</td>
<td align="left">
<p class="tent">_SC_ADVISORY_INFO</p>
</td>
</tr>
<tr valign="top">
<td align="left">
<p class="tent"><sup>[<a href="javascript:open_code('BAR')">BAR</a>]</sup> <img src="../images/opt-start.gif" alt="[Option Start]"
border="0"> _POSIX_BARRIERS</p>
</td>
<td align="left">
<p class="tent">_SC_BARRIERS</p>
</td>
</tr>
<tr valign="top">
<td align="left">
<p class="tent"><sup>[<a href="javascript:open_code('AIO')">AIO</a>]</sup> <img src="../images/opt-start.gif" alt="[Option Start]"
border="0"> _POSIX_ASYNCHRONOUS_IO</p>
</td>
<td align="left">
<p class="tent">_SC_ASYNCHRONOUS_IO</p>
</td>
</tr>
<tr valign="top">
<td align="left">
<p class="tent"><sup>[<a href="javascript:open_code('CS')">CS</a>]</sup> <img src="../images/opt-start.gif" alt="[Option Start]"
border="0"> _POSIX_CLOCK_SELECTION</p>
</td>
<td align="left">
<p class="tent">_SC_CLOCK_SELECTION</p>
</td>
</tr>
<tr valign="top">
<td align="left">
<p class="tent"><sup>[<a href="javascript:open_code('CPT')">CPT</a>]</sup> <img src="../images/opt-start.gif" alt="[Option Start]"
border="0"> _POSIX_CPUTIME</p>
</td>
<td align="left">
<p class="tent">_SC_CPUTIME <img src="../images/opt-end.gif" alt="[Option End]" border="0"></p>
</td>
</tr>
<tr valign="top">
<td align="left">
<p class="tent">_POSIX_FILE_LOCKING</p>
</td>
<td align="left">
<p class="tent">_SC_FILE_LOCKING</p>
</td>
</tr>
<tr valign="top">
<td align="left">
<p class="tent"><sup>[<a href="javascript:open_code('FSC')">FSC</a>]</sup> <img src="../images/opt-start.gif" alt="[Option Start]"
border="0"> _POSIX_FSYNC</p>
</td>
<td align="left">
<p class="tent">_SC_FSYNC <img src="../images/opt-end.gif" alt="[Option End]" border="0"></p>
</td>
</tr>
<tr valign="top">
<td align="left">
<p class="tent">_POSIX_JOB_CONTROL</p>
</td>
<td align="left">
<p class="tent">_SC_JOB_CONTROL</p>
</td>
</tr>
<tr valign="top">
<td align="left">
<p class="tent"><sup>[<a href="javascript:open_code('MF')">MF</a>]</sup> <img src="../images/opt-start.gif" alt="[Option Start]"
border="0"> _POSIX_MAPPED_FILES</p>
</td>
<td align="left">
<p class="tent">_SC_MAPPED_FILES</p>
</td>
</tr>
<tr valign="top">
<td align="left">
<p class="tent"><sup>[<a href="javascript:open_code('ML')">ML</a>]</sup> <img src="../images/opt-start.gif" alt="[Option Start]"
border="0"> _POSIX_MEMLOCK</p>
</td>
<td align="left">
<p class="tent">_SC_MEMLOCK</p>
</td>
</tr>
<tr valign="top">
<td align="left">
<p class="tent"><sup>[<a href="javascript:open_code('MR')">MR</a>]</sup> <img src="../images/opt-start.gif" alt="[Option Start]"
border="0"> _POSIX_MEMLOCK_RANGE</p>
</td>
<td align="left">
<p class="tent">_SC_MEMLOCK_RANGE</p>
</td>
</tr>
<tr valign="top">
<td align="left">
<p class="tent"><sup>[<a href="javascript:open_code('MPR')">MPR</a>]</sup> <img src="../images/opt-start.gif" alt="[Option Start]"
border="0"> _POSIX_MEMORY_PROTECTION</p>
</td>
<td align="left">
<p class="tent">_SC_MEMORY_PROTECTION</p>
</td>
</tr>
<tr valign="top">
<td align="left">
<p class="tent"><sup>[<a href="javascript:open_code('MSG')">MSG</a>]</sup> <img src="../images/opt-start.gif" alt="[Option Start]"
border="0"> _POSIX_MESSAGE_PASSING</p>
</td>
<td align="left">
<p class="tent">_SC_MESSAGE_PASSING</p>
</td>
</tr>
<tr valign="top">
<td align="left">
<p class="tent"><sup>[<a href="javascript:open_code('MON')">MON</a>]</sup> <img src="../images/opt-start.gif" alt="[Option Start]"
border="0"> _POSIX_MONOTONIC_CLOCK</p>
</td>
<td align="left">
<p class="tent">_SC_MONOTONIC_CLOCK <img src="../images/opt-end.gif" alt="[Option End]" border="0"></p>
</td>
</tr>
<tr valign="top">
<td align="left">
<p class="tent">_POSIX_MULTI_PROCESS</p>
</td>
<td align="left">
<p class="tent">_SC_MULTI_PROCESS</p>
</td>
</tr>
<tr valign="top">
<td align="left">
<p class="tent"><sup>[<a href="javascript:open_code('PIO')">PIO</a>]</sup> <img src="../images/opt-start.gif" alt="[Option Start]"
border="0"> _POSIX_PRIORITIZED_IO</p>
</td>
<td align="left">
<p class="tent">_SC_PRIORITIZED_IO</p>
</td>
</tr>
<tr valign="top">
<td align="left">
<p class="tent"><sup>[<a href="javascript:open_code('PS')">PS</a>]</sup> <img src="../images/opt-start.gif" alt="[Option Start]"
border="0"> _POSIX_PRIORITY_SCHEDULING</p>
</td>
<td align="left">
<p class="tent">_SC_PRIORITY_SCHEDULING</p>
</td>
</tr>
<tr valign="top">
<td align="left">
<p class="tent"><sup>[<a href="javascript:open_code('THR')">THR</a>]</sup> <img src="../images/opt-start.gif" alt="[Option Start]"
border="0"> _POSIX_READER_WRITER_LOCKS</p>
</td>
<td align="left">
<p class="tent">_SC_READER_WRITER_LOCKS</p>
</td>
</tr>
<tr valign="top">
<td align="left">
<p class="tent"><sup>[<a href="javascript:open_code('RTS')">RTS</a>]</sup> <img src="../images/opt-start.gif" alt="[Option Start]"
border="0"> _POSIX_REALTIME_SIGNALS</p>
</td>
<td align="left">
<p class="tent">_SC_REALTIME_SIGNALS <img src="../images/opt-end.gif" alt="[Option End]" border="0"></p>
</td>
</tr>
<tr valign="top">
<td align="left">
<p class="tent">_POSIX_REGEXP</p>
</td>
<td align="left">
<p class="tent">_SC_REGEXP</p>
</td>
</tr>
<tr valign="top">
<td align="left">
<p class="tent">_POSIX_SAVED_IDS</p>
</td>
<td align="left">
<p class="tent">_SC_SAVED_IDS</p>
</td>
</tr>
<tr valign="top">
<td align="left">
<p class="tent"><sup>[<a href="javascript:open_code('SEM')">SEM</a>]</sup> <img src="../images/opt-start.gif" alt="[Option Start]"
border="0"> _POSIX_SEMAPHORES</p>
</td>
<td align="left">
<p class="tent">_SC_SEMAPHORES</p>
</td>
</tr>
<tr valign="top">
<td align="left">
<p class="tent"><sup>[<a href="javascript:open_code('SHM')">SHM</a>]</sup> <img src="../images/opt-start.gif" alt="[Option Start]"
border="0"> _POSIX_SHARED_MEMORY_OBJECTS</p>
</td>
<td align="left">
<p class="tent">_SC_SHARED_MEMORY_OBJECTS <img src="../images/opt-end.gif" alt="[Option End]" border="0"></p>
</td>
</tr>
<tr valign="top">
<td align="left">
<p class="tent">_POSIX_SHELL</p>
</td>
<td align="left">
<p class="tent">_SC_SHELL</p>
</td>
</tr>
<tr valign="top">
<td align="left">
<p class="tent"><sup>[<a href="javascript:open_code('SPN')">SPN</a>]</sup> <img src="../images/opt-start.gif" alt="[Option Start]"
border="0"> _POSIX_SPAWN</p>
</td>
<td align="left">
<p class="tent">_SC_SPAWN</p>
</td>
</tr>
<tr valign="top">
<td align="left">
<p class="tent"><sup>[<a href="javascript:open_code('SPI')">SPI</a>]</sup> <img src="../images/opt-start.gif" alt="[Option Start]"
border="0"> _POSIX_SPIN_LOCKS</p>
</td>
<td align="left">
<p class="tent">_SC_SPIN_LOCKS</p>
</td>
</tr>
<tr valign="top">
<td align="left">
<p class="tent"><sup>[<a href="javascript:open_code('SS')">SS</a>]</sup> <img src="../images/opt-start.gif" alt="[Option Start]"
border="0"> _POSIX_SPORADIC_SERVER</p>
</td>
<td align="left">
<p class="tent">_SC_SPORADIC_SERVER</p>
</td>
</tr>
<tr valign="top">
<td align="left">
<p class="tent"><sup>[<a href="javascript:open_code('SIO')">SIO</a>]</sup> <img src="../images/opt-start.gif" alt="[Option Start]"
border="0"> _POSIX_SYNCHRONIZED_IO</p>
</td>
<td align="left">
<p class="tent">_SC_SYNCHRONIZED_IO</p>
</td>
</tr>
<tr valign="top">
<td align="left">
<p class="tent"><sup>[<a href="javascript:open_code('TSA')">TSA</a>]</sup> <img src="../images/opt-start.gif" alt="[Option Start]"
border="0"> _POSIX_THREAD_ATTR_STACKADDR</p>
</td>
<td align="left">
<p class="tent">_SC_THREAD_ATTR_STACKADDR</p>
</td>
</tr>
<tr valign="top">
<td align="left">
<p class="tent"><sup>[<a href="javascript:open_code('TSS')">TSS</a>]</sup> <img src="../images/opt-start.gif" alt="[Option Start]"
border="0"> _POSIX_THREAD_ATTR_STACKSIZE</p>
</td>
<td align="left">
<p class="tent">_SC_THREAD_ATTR_STACKSIZE</p>
</td>
</tr>
<tr valign="top">
<td align="left">
<p class="tent"><sup>[<a href="javascript:open_code('TCT')">TCT</a>]</sup> <img src="../images/opt-start.gif" alt="[Option Start]"
border="0"> _POSIX_THREAD_CPUTIME</p>
</td>
<td align="left">
<p class="tent">_SC_THREAD_CPUTIME</p>
</td>
</tr>
<tr valign="top">
<td align="left">
<p class="tent"><sup>[<a href="javascript:open_code('TPI')">TPI</a>]</sup> <img src="../images/opt-start.gif" alt="[Option Start]"
border="0"> _POSIX_THREAD_PRIO_INHERIT</p>
</td>
<td align="left">
<p class="tent">_SC_THREAD_PRIO_INHERIT</p>
</td>
</tr>
<tr valign="top">
<td align="left">
<p class="tent"><sup>[<a href="javascript:open_code('TPP')">TPP</a>]</sup> <img src="../images/opt-start.gif" alt="[Option Start]"
border="0"> _POSIX_THREAD_PRIO_PROTECT</p>
</td>
<td align="left">
<p class="tent">_SC_THREAD_PRIO_PROTECT</p>
</td>
</tr>
<tr valign="top">
<td align="left">
<p class="tent"><sup>[<a href="javascript:open_code('TPS')">TPS</a>]</sup> <img src="../images/opt-start.gif" alt="[Option Start]"
border="0"> _POSIX_THREAD_PRIORITY_SCHEDULING</p>
</td>
<td align="left">
<p class="tent">_SC_THREAD_PRIORITY_SCHEDULING</p>
</td>
</tr>
<tr valign="top">
<td align="left">
<p class="tent"><sup>[<a href="javascript:open_code('TSH')">TSH</a>]</sup> <img src="../images/opt-start.gif" alt="[Option Start]"
border="0"> _POSIX_THREAD_PROCESS_SHARED</p>
</td>
<td align="left">
<p class="tent">_SC_THREAD_PROCESS_SHARED</p>
</td>
</tr>
<tr valign="top">
<td align="left">
<p class="tent"><sup>[<a href="javascript:open_code('TSF')">TSF</a>]</sup> <img src="../images/opt-start.gif" alt="[Option Start]"
border="0"> _POSIX_THREAD_SAFE_FUNCTIONS</p>
</td>
<td align="left">
<p class="tent">_SC_THREAD_SAFE_FUNCTIONS</p>
</td>
</tr>
<tr valign="top">
<td align="left">
<p class="tent"><sup>[<a href="javascript:open_code('TSP')">TSP</a>]</sup> <img src="../images/opt-start.gif" alt="[Option Start]"
border="0"> _POSIX_THREAD_SPORADIC_SERVER</p>
</td>
<td align="left">
<p class="tent">_SC_THREAD_SPORADIC_SERVER</p>
</td>
</tr>
<tr valign="top">
<td align="left">
<p class="tent"><sup>[<a href="javascript:open_code('THR')">THR</a>]</sup> <img src="../images/opt-start.gif" alt="[Option Start]"
border="0"> _POSIX_THREADS</p>
</td>
<td align="left">
<p class="tent">_SC_THREADS</p>
</td>
</tr>
<tr valign="top">
<td align="left">
<p class="tent"><sup>[<a href="javascript:open_code('TMO')">TMO</a>]</sup> <img src="../images/opt-start.gif" alt="[Option Start]"
border="0"> _POSIX_TIMEOUTS</p>
</td>
<td align="left">
<p class="tent">_SC_TIMEOUTS</p>
</td>
</tr>
<tr valign="top">
<td align="left">
<p class="tent"><sup>[<a href="javascript:open_code('TMR')">TMR</a>]</sup> <img src="../images/opt-start.gif" alt="[Option Start]"
border="0"> _POSIX_TIMERS</p>
</td>
<td align="left">
<p class="tent">_SC_TIMERS</p>
</td>
</tr>
<tr valign="top">
<td align="left">
<p class="tent"><sup>[<a href="javascript:open_code('TRC')">TRC</a>]</sup> <img src="../images/opt-start.gif" alt="[Option Start]"
border="0"> _POSIX_TRACE</p>
</td>
<td align="left">
<p class="tent">_SC_TRACE</p>
</td>
</tr>
<tr valign="top">
<td align="left">
<p class="tent"><sup>[<a href="javascript:open_code('TEF')">TEF</a>]</sup> <img src="../images/opt-start.gif" alt="[Option Start]"
border="0"> _POSIX_TRACE_EVENT_FILTER</p>
</td>
<td align="left">
<p class="tent">_SC_TRACE_EVENT_FILTER</p>
</td>
</tr>
<tr valign="top">
<td align="left">
<p class="tent"><sup>[<a href="javascript:open_code('TRI')">TRI</a>]</sup> <img src="../images/opt-start.gif" alt="[Option Start]"
border="0"> _POSIX_TRACE_INHERIT</p>
</td>
<td align="left">
<p class="tent">_SC_TRACE_INHERIT</p>
</td>
</tr>
<tr valign="top">
<td align="left">
<p class="tent"><sup>[<a href="javascript:open_code('TRL')">TRL</a>]</sup> <img src="../images/opt-start.gif" alt="[Option Start]"
border="0"> _POSIX_TRACE_LOG</p>
</td>
<td align="left">
<p class="tent">_SC_TRACE_LOG</p>
</td>
</tr>
<tr valign="top">
<td align="left">
<p class="tent"><sup>[<a href="javascript:open_code('TYM')">TYM</a>]</sup> <img src="../images/opt-start.gif" alt="[Option Start]"
border="0"> _POSIX_TYPED_MEMORY_OBJECTS</p>
</td>
<td align="left">
<p class="tent">_SC_TYPED_MEMORY_OBJECTS <img src="../images/opt-end.gif" alt="[Option End]" border="0"></p>
</td>
</tr>
</table>
</center>
<hr>
<center>
<table border="1" cellpadding="3" align="center">
<tr valign="top">
<th align="center">
<p class="tent"><b>Variable</b></p>
</th>
<th align="center">
<p class="tent"><b>Value of Name</b></p>
</th>
</tr>
<tr valign="top">
<td align="left">
<p class="tent">_POSIX_VERSION</p>
</td>
<td align="left">
<p class="tent">_SC_VERSION</p>
</td>
</tr>
<tr valign="top">
<td align="left">
<p class="tent">_POSIX_V6_ILP32_OFF32</p>
</td>
<td align="left">
<p class="tent">_SC_V6_ILP32_OFF32</p>
</td>
</tr>
<tr valign="top">
<td align="left">
<p class="tent">_POSIX_V6_ILP32_OFFBIG</p>
</td>
<td align="left">
<p class="tent">_SC_V6_ILP32_OFFBIG</p>
</td>
</tr>
<tr valign="top">
<td align="left">
<p class="tent">_POSIX_V6_LP64_OFF64</p>
</td>
<td align="left">
<p class="tent">_SC_V6_LP64_OFF64</p>
</td>
</tr>
<tr valign="top">
<td align="left">
<p class="tent">_POSIX_V6_LPBIG_OFFBIG</p>
</td>
<td align="left">
<p class="tent">_SC_V6_LPBIG_OFFBIG</p>
</td>
</tr>
<tr valign="top">
<td align="left">
<p class="tent">_POSIX2_C_BIND</p>
</td>
<td align="left">
<p class="tent">_SC_2_C_BIND</p>
</td>
</tr>
<tr valign="top">
<td align="left">
<p class="tent">_POSIX2_C_DEV</p>
</td>
<td align="left">
<p class="tent">_SC_2_C_DEV</p>
</td>
</tr>
<tr valign="top">
<td align="left">
<p class="tent">_POSIX2_C_VERSION</p>
</td>
<td align="left">
<p class="tent">_SC_2_C_VERSION</p>
</td>
</tr>
<tr valign="top">
<td align="left">
<p class="tent">_POSIX2_CHAR_TERM</p>
</td>
<td align="left">
<p class="tent">_SC_2_CHAR_TERM</p>
</td>
</tr>
<tr valign="top">
<td align="left">
<p class="tent">_POSIX2_FORT_DEV</p>
</td>
<td align="left">
<p class="tent">_SC_2_FORT_DEV</p>
</td>
</tr>
<tr valign="top">
<td align="left">
<p class="tent">_POSIX2_FORT_RUN</p>
</td>
<td align="left">
<p class="tent">_SC_2_FORT_RUN</p>
</td>
</tr>
<tr valign="top">
<td align="left">
<p class="tent">_POSIX2_LOCALEDEF</p>
</td>
<td align="left">
<p class="tent">_SC_2_LOCALEDEF</p>
</td>
</tr>
<tr valign="top">
<td align="left">
<p class="tent"><sup>[<a href="javascript:open_code('BE')">BE</a>]</sup> <img src="../images/opt-start.gif" alt="[Option Start]"
border="0"> _POSIX2_PBS</p>
</td>
<td align="left">
<p class="tent">_SC_2_PBS</p>
</td>
</tr>
<tr valign="top">
<td align="left">
<p class="tent">_POSIX2_PBS_ACCOUNTING</p>
</td>
<td align="left">
<p class="tent">_SC_2_PBS_ACCOUNTING</p>
</td>
</tr>
<tr valign="top">
<td align="left">
<p class="tent">_POSIX2_PBS_LOCATE</p>
</td>
<td align="left">
<p class="tent">_SC_2_PBS_LOCATE</p>
</td>
</tr>
<tr valign="top">
<td align="left">
<p class="tent">_POSIX2_PBS_MESSAGE</p>
</td>
<td align="left">
<p class="tent">_SC_2_PBS_MESSAGE</p>
</td>
</tr>
<tr valign="top">
<td align="left">
<p class="tent">_POSIX2_PBS_TRACK</p>
</td>
<td align="left">
<p class="tent">_SC_2_PBS_TRACK <img src="../images/opt-end.gif" alt="[Option End]" border="0"></p>
</td>
</tr>
<tr valign="top">
<td align="left">
<p class="tent">_POSIX2_SW_DEV</p>
</td>
<td align="left">
<p class="tent">_SC_2_SW_DEV</p>
</td>
</tr>
<tr valign="top">
<td align="left">
<p class="tent">_POSIX2_UPE</p>
</td>
<td align="left">
<p class="tent">_SC_2_UPE</p>
</td>
</tr>
<tr valign="top">
<td align="left">
<p class="tent">_POSIX2_VERSION</p>
</td>
<td align="left">
<p class="tent">_SC_2_VERSION</p>
</td>
</tr>
<tr valign="top">
<td align="left">
<p class="tent">_REGEX_VERSION</p>
</td>
<td align="left">
<p class="tent">_SC_REGEX_VERSION</p>
</td>
</tr>
<tr valign="top">
<td align="left">
<p class="tent"><sup>[<a href="javascript:open_code('XSI')">XSI</a>]</sup> <img src="../images/opt-start.gif" alt="[Option Start]"
border="0"> {PAGE_SIZE}</p>
</td>
<td align="left">
<p class="tent">_SC_PAGE_SIZE <img src="../images/opt-end.gif" alt="[Option End]" border="0"></p>
</td>
</tr>
<tr valign="top">
<td align="left">
<p class="tent">{PAGESIZE}</p>
</td>
<td align="left">
<p class="tent">_SC_PAGESIZE</p>
</td>
</tr>
<tr valign="top">
<td align="left">
<p class="tent"><sup>[<a href="javascript:open_code('THR')">THR</a>]</sup> <img src="../images/opt-start.gif" alt="[Option Start]"
border="0"> {PTHREAD_DESTRUCTOR_ITERATIONS}</p>
</td>
<td align="left">
<p class="tent">_SC_THREAD_DESTRUCTOR_ITERATIONS</p>
</td>
</tr>
<tr valign="top">
<td align="left">
<p class="tent">{PTHREAD_KEYS_MAX}</p>
</td>
<td align="left">
<p class="tent">_SC_THREAD_KEYS_MAX</p>
</td>
</tr>
<tr valign="top">
<td align="left">
<p class="tent">{PTHREAD_STACK_MIN}</p>
</td>
<td align="left">
<p class="tent">_SC_THREAD_STACK_MIN</p>
</td>
</tr>
<tr valign="top">
<td align="left">
<p class="tent">{PTHREAD_THREADS_MAX}</p>
</td>
<td align="left">
<p class="tent">_SC_THREAD_THREADS_MAX <img src="../images/opt-end.gif" alt="[Option End]" border="0"></p>
</td>
</tr>
<tr valign="top">
<td align="left">
<p class="tent">{RE_DUP_MAX}</p>
</td>
<td align="left">
<p class="tent">_SC_RE_DUP_MAX</p>
</td>
</tr>
<tr valign="top">
<td align="left">
<p class="tent"><sup>[<a href="javascript:open_code('RTS')">RTS</a>]</sup> <img src="../images/opt-start.gif" alt="[Option Start]"
border="0"> {RTSIG_MAX}</p>
</td>
<td align="left">
<p class="tent">_SC_RTSIG_MAX</p>
</td>
</tr>
<tr valign="top">
<td align="left">
<p class="tent"><sup>[<a href="javascript:open_code('SEM')">SEM</a>]</sup> <img src="../images/opt-start.gif" alt="[Option Start]"
border="0"> {SEM_NSEMS_MAX}</p>
</td>
<td align="left">
<p class="tent">_SC_SEM_NSEMS_MAX</p>
</td>
</tr>
<tr valign="top">
<td align="left">
<p class="tent">{SEM_VALUE_MAX}</p>
</td>
<td align="left">
<p class="tent">_SC_SEM_VALUE_MAX</p>
</td>
</tr>
<tr valign="top">
<td align="left">
<p class="tent"><sup>[<a href="javascript:open_code('RTS')">RTS</a>]</sup> <img src="../images/opt-start.gif" alt="[Option Start]"
border="0"> {SIGQUEUE_MAX}</p>
</td>
<td align="left">
<p class="tent">_SC_SIGQUEUE_MAX <img src="../images/opt-end.gif" alt="[Option End]" border="0"></p>
</td>
</tr>
<tr valign="top">
<td align="left">
<p class="tent">{STREAM_MAX}</p>
</td>
<td align="left">
<p class="tent">_SC_STREAM_MAX</p>
</td>
</tr>
<tr valign="top">
<td align="left">
<p class="tent">{SYMLOOP_MAX}</p>
</td>
<td align="left">
<p class="tent">_SC_SYMLOOP_MAX</p>
</td>
</tr>
<tr valign="top">
<td align="left">
<p class="tent"><sup>[<a href="javascript:open_code('TMR')">TMR</a>]</sup> <img src="../images/opt-start.gif" alt="[Option Start]"
border="0"> {TIMER_MAX}</p>
</td>
<td align="left">
<p class="tent">_SC_TIMER_MAX <img src="../images/opt-end.gif" alt="[Option End]" border="0"></p>
</td>
</tr>
<tr valign="top">
<td align="left">
<p class="tent">{TTY_NAME_MAX}</p>
</td>
<td align="left">
<p class="tent">_SC_TTY_NAME_MAX</p>
</td>
</tr>
<tr valign="top">
<td align="left">
<p class="tent">{TZNAME_MAX}</p>
</td>
<td align="left">
<p class="tent">_SC_TZNAME_MAX</p>
</td>
</tr>
<tr valign="top">
<td align="left">
<p class="tent"><sup>[<a href="javascript:open_code('XSI')">XSI</a>]</sup> <img src="../images/opt-start.gif" alt="[Option Start]"
border="0"> _XBS5_ILP32_OFF32 (<b>LEGACY</b>)</p>
</td>
<td align="left">
<p class="tent">_SC_XBS5_ILP32_OFF32 (<b>LEGACY</b>)</p>
</td>
</tr>
<tr valign="top">
<td align="left">
<p class="tent">_XBS5_ILP32_OFFBIG (<b>LEGACY</b>)</p>
</td>
<td align="left">
<p class="tent">_SC_XBS5_ILP32_OFFBIG (<b>LEGACY</b>)</p>
</td>
</tr>
<tr valign="top">
<td align="left">
<p class="tent">_XBS5_LP64_OFF64 (<b>LEGACY</b>)</p>
</td>
<td align="left">
<p class="tent">_SC_XBS5_LP64_OFF64 (<b>LEGACY</b>)</p>
</td>
</tr>
<tr valign="top">
<td align="left">
<p class="tent">_XBS5_LPBIG_OFFBIG (<b>LEGACY</b>)</p>
</td>
<td align="left">
<p class="tent">_SC_XBS5_LPBIG_OFFBIG (<b>LEGACY</b>)</p>
</td>
</tr>
<tr valign="top">
<td align="left">
<p class="tent">_XOPEN_CRYPT</p>
</td>
<td align="left">
<p class="tent">_SC_XOPEN_CRYPT</p>
</td>
</tr>
<tr valign="top">
<td align="left">
<p class="tent">_XOPEN_ENH_I18N</p>
</td>
<td align="left">
<p class="tent">_SC_XOPEN_ENH_I18N <img src="../images/opt-end.gif" alt="[Option End]" border="0"></p>
</td>
</tr>
</table>
</center>
<hr>
<center>
<table border="1" cellpadding="3" align="center">
<tr valign="top">
<th align="center">
<p class="tent"><b>Variable</b></p>
</th>
<th align="center">
<p class="tent"><b>Value of Name</b></p>
</th>
</tr>
<tr valign="top">
<td align="left">
<p class="tent"><sup>[<a href="javascript:open_code('XSI')">XSI</a>]</sup> <img src="../images/opt-start.gif" alt="[Option Start]"
border="0"> _XOPEN_LEGACY</p>
</td>
<td align="left">
<p class="tent">_SC_XOPEN_LEGACY</p>
</td>
</tr>
<tr valign="top">
<td align="left">
<p class="tent">_XOPEN_REALTIME</p>
</td>
<td align="left">
<p class="tent">_SC_XOPEN_REALTIME</p>
</td>
</tr>
<tr valign="top">
<td align="left">
<p class="tent">_XOPEN_REALTIME_THREADS</p>
</td>
<td align="left">
<p class="tent">_SC_XOPEN_REALTIME_THREADS</p>
</td>
</tr>
<tr valign="top">
<td align="left">
<p class="tent">_XOPEN_SHM</p>
</td>
<td align="left">
<p class="tent">_SC_XOPEN_SHM</p>
</td>
</tr>
<tr valign="top">
<td align="left">
<p class="tent">_XOPEN_UNIX</p>
</td>
<td align="left">
<p class="tent">_SC_XOPEN_UNIX</p>
</td>
</tr>
<tr valign="top">
<td align="left">
<p class="tent">_XOPEN_VERSION</p>
</td>
<td align="left">
<p class="tent">_SC_XOPEN_VERSION</p>
</td>
</tr>
<tr valign="top">
<td align="left">
<p class="tent">_XOPEN_XCU_VERSION</p>
</td>
<td align="left">
<p class="tent">_SC_XOPEN_XCU_VERSION <img src="../images/opt-end.gif" alt="[Option End]" border="0"></p>
</td>
</tr>
</table>
</center>
</blockquote>
<h4><a name="tag_03_755_04"></a>RETURN VALUE</h4>
<blockquote>
<p>If <i>name</i> is an invalid value, <i>sysconf</i>() shall return -1 and set <i>errno</i> to indicate the error. If the variable
corresponding to <i>name</i> has no limit, <i>sysconf</i>() shall return -1 without changing the value of <i>errno</i>. Note that
indefinite limits do not imply infinite limits; see <a href="../basedefs/limits.h.html"><i>&lt;limits.h&gt;</i></a>.</p>
<p>Otherwise, <i>sysconf</i>() shall return the current variable value on the system. The value returned shall not be more
restrictive than the corresponding value described to the application when it was compiled with the implementation's <a href=
"../basedefs/limits.h.html"><i>&lt;limits.h&gt;</i></a> or <a href="../basedefs/unistd.h.html"><i>&lt;unistd.h&gt;</i></a>. The
value shall not change during the lifetime of the calling process.</p>
</blockquote>
<h4><a name="tag_03_755_05"></a>ERRORS</h4>
<blockquote>
<p>The <i>sysconf</i>() function shall fail if:</p>
<dl compact>
<dt>[EINVAL]</dt>
<dd>The value of the <i>name</i> argument is invalid.</dd>
</dl>
</blockquote>
<hr>
<div class="box"><em>The following sections are informative.</em></div>
<h4><a name="tag_03_755_06"></a>EXAMPLES</h4>
<blockquote>
<p>None.</p>
</blockquote>
<h4><a name="tag_03_755_07"></a>APPLICATION USAGE</h4>
<blockquote>
<p>As -1 is a permissible return value in a successful situation, an application wishing to check for error situations should set
<i>errno</i> to 0, then call <i>sysconf</i>(), and, if it returns -1, check to see if <i>errno</i> is non-zero.</p>
<p>If the value of <i>sysconf</i>(_SC_2_VERSION) is not equal to the value of the _POSIX2_VERSION symbolic constant, the utilities
available via <a href="../functions/system.html"><i>system</i>()</a> or <a href="../functions/popen.html"><i>popen</i>()</a> might
not behave as described in the Shell and Utilities volume of IEEE&nbsp;Std&nbsp;1003.1-2001. This would mean that the application
is not running in an environment that conforms to the Shell and Utilities volume of IEEE&nbsp;Std&nbsp;1003.1-2001. Some
applications might be able to deal with this, others might not. However, the functions defined in this volume of
IEEE&nbsp;Std&nbsp;1003.1-2001 continue to operate as specified, even if <i>sysconf</i>(_SC_2_VERSION) reports that the utilities
no longer perform as specified.</p>
</blockquote>
<h4><a name="tag_03_755_08"></a>RATIONALE</h4>
<blockquote>
<p>This functionality was added in response to requirements of application developers and of system vendors who deal with many
international system configurations. It is closely related to <a href="../functions/pathconf.html"><i>pathconf</i>()</a> and <a
href="../functions/fpathconf.html"><i>fpathconf</i>()</a>.</p>
<p>Although a conforming application can run on all systems by never demanding more resources than the minimum values published in
this volume of IEEE&nbsp;Std&nbsp;1003.1-2001, it is useful for that application to be able to use the actual value for the
quantity of a resource available on any given system. To do this, the application makes use of the value of a symbolic constant in
<a href="../basedefs/limits.h.html"><i>&lt;limits.h&gt;</i></a> or <a href=
"../basedefs/unistd.h.html"><i>&lt;unistd.h&gt;</i></a>.</p>
<p>However, once compiled, the application must still be able to cope if the amount of resource available is increased. To that
end, an application may need a means of determining the quantity of a resource, or the presence of an option, at execution
time.</p>
<p>Two examples are offered:</p>
<ol>
<li>
<p>Applications may wish to act differently on systems with or without job control. Applications vendors who wish to distribute
only a single binary package to all instances of a computer architecture would be forced to assume job control is never available
if it were to rely solely on the <a href="../basedefs/unistd.h.html"><i>&lt;unistd.h&gt;</i></a> value published in this volume of
IEEE&nbsp;Std&nbsp;1003.1-2001.</p>
</li>
<li>
<p>International applications vendors occasionally require knowledge of the number of clock ticks per second. Without these
facilities, they would be required to either distribute their applications partially in source form or to have 50 Hz and 60 Hz
versions for the various countries in which they operate.</p>
</li>
</ol>
<p>It is the knowledge that many applications are actually distributed widely in executable form that leads to this facility. If
limited to the most restrictive values in the headers, such applications would have to be prepared to accept the most limited
environments offered by the smallest microcomputers. Although this is entirely portable, there was a consensus that they should be
able to take advantage of the facilities offered by large systems, without the restrictions associated with source and object
distributions.</p>
<p>During the discussions of this feature, it was pointed out that it is almost always possible for an application to discern what
a value might be at runtime by suitably testing the various functions themselves. And, in any event, it could always be written to
adequately deal with error returns from the various functions. In the end, it was felt that this imposed an unreasonable level of
complication and sophistication on the application writer.</p>
<p>This runtime facility is not meant to provide ever-changing values that applications have to check multiple times. The values
are seen as changing no more frequently than once per system initialization, such as by a system administrator or operator with an
automatic configuration program. This volume of IEEE&nbsp;Std&nbsp;1003.1-2001 specifies that they shall not change within the
lifetime of the process.</p>
<p>Some values apply to the system overall and others vary at the file system or directory level. The latter are described in <a
href="pathconf.html"><i>pathconf</i>()</a> .</p>
<p>Note that all values returned must be expressible as integers. String values were considered, but the additional flexibility of
this approach was rejected due to its added complexity of implementation and use.</p>
<p>Some values, such as {PATH_MAX}, are sometimes so large that they must not be used to, say, allocate arrays. The
<i>sysconf</i>() function returns a negative value to show that this symbolic constant is not even defined in this case.</p>
<p>Similar to <a href="../functions/pathconf.html"><i>pathconf</i>()</a>, this permits the implementation not to have a limit. When
one resource is infinite, returning an error indicating that some other resource limit has been reached is conforming behavior.</p>
</blockquote>
<h4><a name="tag_03_755_09"></a>FUTURE DIRECTIONS</h4>
<blockquote>
<p>None.</p>
</blockquote>
<h4><a name="tag_03_755_10"></a>SEE ALSO</h4>
<blockquote>
<p><a href="confstr.html"><i>confstr</i>()</a> , <a href="pathconf.html"><i>pathconf</i>()</a> , the Base Definitions volume of
IEEE&nbsp;Std&nbsp;1003.1-2001, <a href="../basedefs/limits.h.html"><i>&lt;limits.h&gt;</i></a>, <a href=
"../basedefs/unistd.h.html"><i>&lt;unistd.h&gt;</i></a>, the Shell and Utilities volume of IEEE&nbsp;Std&nbsp;1003.1-2001, <a href=
"../utilities/getconf.html"><i>getconf</i></a></p>
</blockquote>
<h4><a name="tag_03_755_11"></a>CHANGE HISTORY</h4>
<blockquote>
<p>First released in Issue 3. Included for alignment with the POSIX.1-1988 standard.</p>
</blockquote>
<h4><a name="tag_03_755_12"></a>Issue 5</h4>
<blockquote>
<p>The DESCRIPTION is updated for alignment with the POSIX Realtime Extension and the POSIX Threads Extension.</p>
<p>The _XBS_ variables and name values are added to the table of system variables in the DESCRIPTION. These are all marked EX.</p>
</blockquote>
<h4><a name="tag_03_755_13"></a>Issue 6</h4>
<blockquote>
<p>The symbol CLK_TCK is obsolescent and removed. It is replaced with the phrase &quot;clock ticks per second&quot;.</p>
<p>The symbol {PASS_MAX} is removed.</p>
<p>The following changes were made to align with the IEEE&nbsp;P1003.1a draft standard:</p>
<ul>
<li>
<p>Table entries are added for the following variables: _SC_REGEXP, _SC_SHELL, _SC_REGEX_VERSION, _SC_SYMLOOP_MAX.</p>
</li>
</ul>
<p>The following <i>sysconf</i>() variables and their associated names are added for alignment with
IEEE&nbsp;Std&nbsp;1003.1d-1999:</p>
<blockquote>
<pre>
_POSIX_ADVISORY_INFO
_POSIX_CPUTIME
_POSIX_SPAWN
_POSIX_SPORADIC_SERVER
_POSIX_THREAD_CPUTIME
_POSIX_THREAD_SPORADIC_SERVER
_POSIX_TIMEOUTS
</pre>
</blockquote>
<p>The following changes are made to the DESCRIPTION for alignment with IEEE&nbsp;Std&nbsp;1003.1j-2000:</p>
<ul>
<li>
<p>A statement expressing the dependency of support for some system variables on implementation options is added.</p>
</li>
<li>
<p>The following system variables are added:</p>
<blockquote>
<pre>
_POSIX_BARRIERS
_POSIX_CLOCK_SELECTION
_POSIX_MONOTONIC_CLOCK
_POSIX_READER_WRITER_LOCKS
_POSIX_SPIN_LOCKS
_POSIX_TYPED_MEMORY_OBJECTS
</pre>
</blockquote>
</li>
</ul>
<p>The following system variables are added for alignment with IEEE&nbsp;Std&nbsp;1003.2d-1994:</p>
<blockquote>
<pre>
_POSIX2_PBS
_POSIX2_PBS_ACCOUNTING
_POSIX2_PBS_LOCATE
_POSIX2_PBS_MESSAGE
_POSIX2_PBS_TRACK
</pre>
</blockquote>
<p>The following <i>sysconf</i>() variables and their associated names are added for alignment with
IEEE&nbsp;Std&nbsp;1003.1q-2000:</p>
<blockquote>
<pre>
_POSIX_TRACE
_POSIX_TRACE_EVENT_FILTER
_POSIX_TRACE_INHERIT
_POSIX_TRACE_LOG
</pre>
</blockquote>
<p>The macros associated with the <i>c89</i> programming models are marked LEGACY, and new equivalent macros associated with <a
href="../utilities/c99.html"><i>c99</i></a> are introduced.</p>
</blockquote>
<div class="box"><em>End of informative text.</em></div>
<hr>
<hr size="2" noshade>
<center><font size="2"><!--footer start-->
UNIX &reg; is a registered Trademark of The Open Group.<br>
POSIX &reg; is a registered Trademark of The IEEE.<br>
[ <a href="../mindex.html">Main Index</a> | <a href="../basedefs/contents.html">XBD</a> | <a href=
"../utilities/contents.html">XCU</a> | <a href="../functions/contents.html">XSH</a> | <a href="../xrat/contents.html">XRAT</a>
]</font></center>
<!--footer end-->
<hr size="2" noshade>
</body>
</html>