The Open Group Base Specifications Issue 6
IEEE Std 1003.1, 2004 Edition
Copyright © 2001-2004 The IEEE and The Open Group, All Rights reserved.

## B. Rationale for System Interfaces

### B.1 Introduction

#### B.1.1 Scope

Refer to Scope.

#### B.1.2 Conformance

Refer to Conformance.

#### B.1.3 Normative References

There is no additional rationale provided for this section.

#### B.1.4 Change History

The change history is provided as an informative section, to track changes from previous issues of IEEE Std 1003.1-2001.

The following sections describe changes made to the System Interfaces volume of IEEE Std 1003.1-2001 since Issue 5 of the base document. The CHANGE HISTORY section for each entry details the technical changes that have been made to that entry from Issue 5. Changes between earlier issues of the base document and Issue 5 are not included.

The change history between Issue 5 and Issue 6 also lists the changes since the ISO POSIX-1:1996 standard.

##### Changes from Issue 5 to Issue 6 (IEEE Std 1003.1-2001)

The following list summarizes the major changes that were made in the System Interfaces volume of IEEE Std 1003.1-2001 from Issue 5 to Issue 6:

- This volume of IEEE Std 1003.1-2001 is extensively revised so that it can be both an IEEE POSIX Standard and an Open Group Technical Standard.

- The POSIX System Interfaces requirements incorporate support of FIPS 151-2.

- The POSIX System Interfaces requirements are updated to align with some features of the Single UNIX Specification.

- A RATIONALE section is added to each reference page.

- Networking interfaces from the XNS, Issue 5.2 specification are incorporated.

- IEEE Std 1003.1d-1999 is incorporated.

- IEEE Std 1003.1j-2000 is incorporated.

- IEEE Std 1003.1q-2000 is incorporated.

- IEEE P1003.1a draft standard is incorporated.

- Existing functionality is aligned with the ISO/IEC 9899:1999 standard.

- New functionality from the ISO/IEC 9899:1999 standard is incorporated.

- IEEE PASC Interpretations are applied.

- The Open Group corrigenda and resolutions are applied.

##### New Features in Issue 6

The functions first introduced in Issue 6 (over the Issue 5 Base document) are listed in the table below:

New Functions in Issue 6
acosf() acoshf() acoshl() acosl() asinf() asinhf() asinhl() asinl() atan2f() atan2l() atanf() atanhf() atanhl() atanl() atoll() cabs() cabsf() cabsl() cacos() cacosf() cacosh() cacoshf() cacoshl() cacosl() carg() cargf() cargl() casin() casinf() casinh() casinhf() casinhl() casinl() catan() catanf() catanh() catanhf() | catanhl() catanl() cbrtf() cbrtl() ccos() ccosf() ccosh() ccoshf() ccoshl() ccosl() ceilf() ceill() cexp() cexpf() cexpl() cimag() cimagf() cimagl() clock_getcpuclockid() clock_nanosleep() clog() clogf() clogl() conj() conjf() conjl() copysign() copysignf() copysignl() cosf() coshf() coshl() cosl() cpow() cpowf() cpowl() cproj() | cprojf() cprojl() creal() crealf() creall() csin() csinf() csinh() csinhf() csinhl() csinl() csqrt() csqrtf() csqrtl() ctan() ctanf() ctanh() ctanhf() ctanhl() ctanl() erfcf() erfcl() erff() erfl() exp2() exp2f() exp2l() expf() expl() expm1f() expm1l() fabsf() fabsl() fdim() fdimf() fdiml() feclearexcept()

New Functions in Issue 6
fegetenv() fegetexceptflag() fegetround() feholdexcept() feraiseexcept() fesetenv() fesetexceptflag() fesetround() fetestexcept() feupdateenv() floorf() floorl() fma() fmaf() fmal() fmax() fmaxf() fmaxl() fmin() fminf() fminl() fmodf() fmodl() fpclassify() frexpf() frexpl() hypotf() hypotl() ilogbf() ilogbl() imaxabs() imaxdiv() isblank() isfinite() isgreater() isgreaterequal() isinf() isless() islessequal() islessgreater() isnormal() isunordered() iswblank() ldexpf() | ldexpl() lgammaf() lgammal() llabs() lldiv() llrint() llrintf() llrintl() llround() llroundf() llroundl() log10f() log10l() log1pf() log1pl() log2() log2f() log2l() logbf() logbl() logf() logl() lrint() lrintf() lrintl() lround() lroundf() lroundl() modff() modfl() mq_timedreceive() mq_timedsend() nan() nanf() nanl() nearbyint() nearbyintf() nearbyintl() nextafterf() nextafterl() nexttoward() nexttowardf() nexttowardl() posix_fadvise() | posix_fallocate() posix_madvise() posix_mem_offset() posix_memalign() posix_openpt() posix_spawn() posix_spawn_file_actions_addclose() posix_spawn_file_actions_adddup2() posix_spawn_file_actions_addopen() posix_spawn_file_actions_destroy() posix_spawn_file_actions_init() posix_spawnattr_destroy() posix_spawnattr_getflags() posix_spawnattr_getpgroup() posix_spawnattr_getschedparam() posix_spawnattr_getschedpolicy() posix_spawnattr_getsigdefault() posix_spawnattr_getsigmask() posix_spawnattr_init() posix_spawnattr_setflags() posix_spawnattr_setpgroup() posix_spawnattr_setschedparam() posix_spawnattr_setschedpolicy() posix_spawnattr_setsigdefault() posix_spawnattr_setsigmask() posix_spawnp() posix_trace_attr_destroy() posix_trace_attr_getclockres() posix_trace_attr_getcreatetime() posix_trace_attr_getgenversion() posix_trace_attr_getinherited() posix_trace_attr_getlogfullpolicy() posix_trace_attr_getlogsize() posix_trace_attr_getmaxdatasize() posix_trace_attr_getmaxsystemeventsize() posix_trace_attr_getmaxusereventsize() posix_trace_attr_getname() posix_trace_attr_getstreamfullpolicy() posix_trace_attr_getstreamsize() posix_trace_attr_init() posix_trace_attr_setinherited() posix_trace_attr_setlogfullpolicy() posix_trace_attr_setlogsize() posix_trace_create()

New Functions in Issue 6
posix_trace_attr_setmaxdatasize() posix_trace_attr_setname() posix_trace_attr_setstreamfullpolicy() posix_trace_attr_setstreamsize() posix_trace_clear() posix_trace_close() posix_trace_create_withlog() posix_trace_event() posix_trace_eventid_equal() posix_trace_eventid_get_name() posix_trace_eventid_open() posix_trace_eventset_add() posix_trace_eventset_del() posix_trace_eventset_empty() posix_trace_eventset_fill() posix_trace_eventset_ismember() posix_trace_eventtypelist_getnext_id() posix_trace_eventtypelist_rewind() posix_trace_flush() posix_trace_get_attr() posix_trace_get_filter() posix_trace_get_status() posix_trace_getnext_event() posix_trace_open() posix_trace_rewind() posix_trace_set_filter() posix_trace_shutdown() posix_trace_start() posix_trace_stop() posix_trace_timedgetnext_event() posix_trace_trid_eventid_open() posix_trace_trygetnext_event() posix_typed_mem_get_info() posix_typed_mem_open() powf() powl() pselect() pthread_attr_getstack() pthread_attr_setstack() | pthread_barrier_destroy() pthread_barrier_init() pthread_barrier_wait() pthread_barrierattr_destroy() pthread_barrierattr_getpshared() pthread_barrierattr_init() pthread_barrierattr_setpshared() pthread_condattr_getclock() pthread_condattr_setclock() pthread_getcpuclockid() pthread_mutex_timedlock() pthread_rwlock_timedrdlock() pthread_rwlock_timedwrlock() pthread_setschedprio() pthread_spin_destroy() pthread_spin_init() pthread_spin_lock() pthread_spin_trylock() pthread_spin_unlock() remainderf() remainderl() remquo() remquof() remquol() rintf() rintl() round() roundf() roundl() scalbln() scalblnf() scalblnl() scalbn() scalbnf() scalbnl() sem_timedwait() setegid() setenv() seteuid() | signbit() sinf() sinhf() sinhl() sinl() sockatmark() sqrtf() sqrtl() strerror_r() strtoimax() strtoll() strtoull() strtoumax() tanf() tanhf() tanhl() tanl() tgamma() tgammaf() tgammal() trunc() truncf() truncl() unsetenv() vfprintf() vfscanf() vfwscanf() vprintf() vscanf() vsnprintf() vsprintf() vsscanf() vswscanf() vwscanf() wcstoimax() wcstoll() wcstoull() wcstoumax()

The following new headers are introduced in Issue 6:

New Headers in Issue 6
<complex.h> <fenv.h> <net/if.h> | <spawn.h> <stdbool.h> <stdint.h> | <tgmath.h> <trace.h>

The following table lists the functions and symbols from the XSI extension. These are new since the ISO POSIX-1:1996 standard.

New XSI Functions and Symbols in Issue 6
_longjmp() _setjmp() _tolower() _toupper() a64l() basename() bcmp() bcopy() bzero() catclose() catgets() catopen() closelog() crypt() daylight dbm_clearerr() dbm_close() dbm_delete() dbm_error() dbm_fetch() dbm_firstkey() dbm_nextkey() dbm_open() dbm_store() dirname() dlclose() dlerror() dlopen() dlsym() drand48() ecvt() encrypt() endgrent() endpwent() endutxent() erand48() fchdir() fcvt() ffs() fmtmsg() fstatvfs() ftime() ftok() ftw() gcvt() | getcontext() getdate() getgrent() gethostid() getitimer() getpgid() getpmsg() getpriority() getpwent() getrlimit() getrusage() getsid() getsubopt() gettimeofday() getutxent() getutxid() getutxline() getwd() grantpt() hcreate() hdestroy() hsearch() iconv() iconv_close() iconv_open() index() initstate() insque() isascii() jrand48() killpg() l64a() lchown() lcong48() lfind() lockf() lrand48() lsearch() makecontext() memccpy() mknod() mkstemp() mktemp() mrand48() msgctl() | msgget() msgrcv() msgsnd() nftw() nice() nl_langinfo() nrand48() openlog() poll() posix_openpt() pread() pthread_attr_getguardsize() pthread_attr_setguardsize() pthread_attr_setstack() pthread_getconcurrency() pthread_mutexattr_gettype() pthread_mutexattr_settype() pthread_rwlockattr_init() pthread_rwlockattr_setpshared() pthread_setconcurrency() ptsname() putenv() pututxline() pwrite() random() readv() realpath() remque() rindex() seed48() seekdir() semctl() semget() semop() setcontext() setgrent() setitimer() setkey() setlogmask() setpgrp() setpriority() setpwent() setregid() setreuid() setrlimit() | setstate() setutxent() shmat() shmctl() shmdt() shmget() sigaltstack() sighold() sigignore() siginterrupt() sigpause() sigrelse() sigset() srand48() srandom() statvfs() strcasecmp() strdup() strfmon() strncasecmp() strptime() swab() swapcontext() sync() syslog() tcgetsid() tdelete() telldir() tempnam() tfind() timezone toascii() truncate() tsearch() twalk() ulimit() unlockpt() utimes() waitid() wcswcs() wcswidth() wcwidth() writev()

The following table lists the headers from the XSI extension. These are new since the ISO POSIX-1:1996 standard.

New XSI Headers in Issue 6
<cpio.h> <dlfcn.h> <fmtmsg.h> <ftw.h> <iconv.h> <langinfo.h> <libgen.h> <monetary.h> <ndbm.h> <nl_types.h> | <poll.h> <search.h> <strings.h> <stropts.h> <sys/ipc.h> <sys/mman.h> <sys/msg.h> <sys/resource.h> <sys/sem.h> <sys/shm.h> | <sys/statvfs.h> <sys/time.h> <sys/timeb.h> <sys/uio.h> <syslog.h> <ucontext.h> <ulimit.h> <utmpx.h>

#### B.1.5 Terminology

Refer to Terminology.

#### B.1.6 Definitions

Refer to Definitions.

#### B.1.7 Relationship to Other Formal Standards

There is no additional rationale provided for this section.

#### B.1.8 Portability

Refer to Portability.

##### Codes

Refer to Codes.

#### B.1.9 Format of Entries

Each system interface reference page has a common layout of sections describing the interface. This layout is similar to the manual page or "man" page format shipped with most UNIX systems, and each header has sections describing the SYNOPSIS, DESCRIPTION, RETURN VALUE, and ERRORS. These are the four sections that relate to conformance.

Additional sections are informative, and add considerable information for the application developer. EXAMPLES sections provide example usage. APPLICATION USAGE sections provide additional caveats, issues, and recommendations to the developer. RATIONALE sections give additional information on the decisions made in defining the interface.

FUTURE DIRECTIONS sections act as pointers to related work that may impact the interface in the future, and often cautions the developer to architect the code to account for a change in this area. Note that a future directions statement should not be taken as a commitment to adopt a feature or interface in the future.

The CHANGE HISTORY section describes when the interface was introduced, and how it has changed.

Option labels and margin markings in the page can be useful in guiding the application developer.

UNIX ® is a registered Trademark of The Open Group.
POSIX ® is a registered Trademark of The IEEE.
[ Main Index | XBD | XCU | XSH | XRAT ]