The Open Group Base Specifications Issue 7
IEEE Std 1003.1, 2013 Edition
Copyright © 2001-2013 The IEEE and The Open Group

## B. Rationale for System Interfaces

### B.1 Introduction

#### B.1.1 Change History

The change history is provided as an informative section, to track changes from earlier versions of this standard.

The following sections describe changes made to the System Interfaces volume of POSIX.1-2008 since Issue 6 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 versions of the base document and Issue 5 are not included.

##### Changes from Issue 6 to Issue 7 (POSIX.1-2008)

The following list summarizes the major changes that were made in the System Interfaces volume of POSIX.1-2008 from Issue 6 to Issue 7:

- The Open Group Technical Standard, 2006, Extended API Set Part 1 is incorporated.

- The Open Group Technical Standard, 2006, Extended API Set Part 2 is incorporated.

- The Open Group Technical Standard, 2006, Extended API Set Part 3 is incorporated.

- The Open Group Technical Standard, 2006, Extended API Set Part 4 is incorporated.

- Existing functionality is aligned with ISO/IEC 9899:1999, Programming Languages - C, ISO/IEC 9899:1999/Cor.2:2004(E)

- Austin Group defect reports, IEEE Interpretations against IEEE Std 1003.1, and responses to ISO/IEC defect reports against ISO/IEC 9945 are applied.

- The Open Group corrigenda and resolutions are applied.

- Features, marked legacy or obsolescent in the base document, have been considered for removal in this version.

- The options within the standard have been revised.

##### New Features in Issue 7

The functions first introduced in Issue 7 (over the Issue 6 base document) are as follows:

New Functions in Issue 7

alphasort()
dirfd()
dprintf()
duplocale()
faccessat()
fchmodat()
fchownat()
fdopendir()
fexecve()
fmemopen()
freelocale()
fstatat()
futimens()
getdelim()
getline()
isalnum_l()
isalpha_l()
isblank_l()
iscntrl_l()
isdigit_l()
isgraph_l()
islower_l()
isprint_l()
ispunct_l()
isspace_l()
isupper_l()
iswalnum_l()
iswalpha_l()
iswblank_l()
iswcntrl_l()
iswctype_l()

iswdigit_l()
iswgraph_l()
iswlower_l()
iswprint_l()
iswpunct_l()
iswspace_l()
iswupper_l()
iswxdigit_l()
isxdigit_l()
linkat()
mbsnrtowcs()
mkdirat()
mkdtemp()
mkfifoat()
mknodat()
newlocale()
openat()
open_memstream()
open_wmemstream()
psiginfo()
psignal()
pthread_mutexattr_getrobust()
pthread_mutexattr_setrobust()
pthread_mutex_consistent()
readlinkat()
renameat()
scandir()
stpcpy()
stpncpy()
strcasecmp_l()
strcoll_l()

strfmon_l()
strncasecmp_l()
strndup()
strnlen()
strsignal()
strxfrm_l()
symlinkat()
tolower_l()
toupper_l()
towctrans_l()
towlower_l()
towupper_l()
unlinkat()
uselocale()
utimensat()
vdprintf()
wcpcpy()
wcpncpy()
wcscasecmp()
wcscasecmp_l()
wcscoll_l()
wcsdup()
wcsncasecmp()
wcsncasecmp_l()
wcsnlen()
wcsnrtombs()
wcsxfrm_l()
wctrans_l()
wctype_l()

##### Newly Mandated Functions in Issue 7

The functions that were previously part of an option group but are now mandatory in Issue 7 are as follows:

Newly Mandated Functions in Issue 7

aio_cancel()
aio_error()
aio_fsync()
aio_read()
aio_return()
aio_suspend()
aio_write()
asctime_r()
catclose()
catgets()
catopen()
clock_getres()
clock_gettime()
clock_nanosleep()
clock_settime()
ctime_r()
dlclose()
dlerror()
dlopen()
dlsym()
fchdir()
flockfile()
fstatvfs()
ftrylockfile()
funlockfile()
getc_unlocked()
getchar_unlocked()
getgrgid_r()
getgrnam_r()
getlogin_r()
getpgid()
getpwnam_r()
getpwuid_r()
getsid()
getsubopt()
gmtime_r()
iconv()
iconv_close()
iconv_open()
lchown()
lio_listio()
localtime_r()
mkstemp()
mmap()
mprotect()
munmap()
nanosleep()
nl_langinfo()
poll()
posix_trace_timedgetnext_event()
pread()

pthread_atfork()
pthread_attr_destroy()
pthread_attr_getdetachstate()
pthread_attr_getguardsize()
pthread_attr_getschedparam()
pthread_attr_init()
pthread_attr_setdetachstate()
pthread_attr_setguardsize()
pthread_attr_setschedparam()
pthread_barrier_destroy()
pthread_barrier_init()
pthread_barrier_wait()
pthread_barrierattr_destroy()
pthread_barrierattr_init()
pthread_cancel()
pthread_cleanup_pop()
pthread_cleanup_push()
pthread_cond_broadcast()
pthread_cond_destroy()
pthread_cond_init()
pthread_cond_signal()
pthread_cond_timedwait()
pthread_cond_wait()
pthread_condattr_destroy()
pthread_condattr_getclock()
pthread_condattr_init()
pthread_condattr_setclock()
pthread_create()
pthread_detach()
pthread_equal()
pthread_exit()
pthread_getspecific()
pthread_join()
pthread_key_create()
pthread_key_delete()
pthread_mutex_destroy()
pthread_mutex_init()
pthread_mutex_lock()
pthread_mutex_timedlock()
pthread_mutex_trylock()
pthread_mutex_unlock()
pthread_mutexattr_destroy()
pthread_mutexattr_gettype()
pthread_mutexattr_init()
pthread_mutexattr_settype()
pthread_once()
pthread_rwlock_destroy()
pthread_rwlock_init()
pthread_rwlock_rdlock()
pthread_rwlock_timedrdlock()
pthread_rwlock_timedwrlock()

pthread_rwlock_tryrdlock()
pthread_rwlock_trywrlock()
pthread_rwlock_unlock()
pthread_rwlock_wrlock()
pthread_rwlockattr_destroy()
pthread_rwlockattr_init()
pthread_self()
pthread_setcancelstate()
pthread_setcanceltype()
pthread_setspecific()
pthread_spin_destroy()
pthread_spin_init()
pthread_spin_lock()
pthread_spin_trylock()
pthread_spin_unlock()
pthread_testcancel()
putc_unlocked()
putchar_unlocked()
pwrite()
rand_r()
readdir_r()
sem_close()
sem_destroy()
sem_getvalue()
sem_init()
sem_open()
sem_post()
sem_timedwait()
sem_trywait()
sem_unlink()
sem_wait()
sigqueue()
sigqueue()
sigtimedwait()
sigwaitinfo()
statvfs()
strcasecmp()
strdup()
strerror_r()
strfmon()
strncasecmp()
strtok_r()
tcgetsid()
timer_create()
timer_delete()
timer_getoverrun()
timer_gettime()
timer_settime()
truncate()
ttyname_r()
waitid()

##### Obsolescent Functions in Issue 7

The base functions moved to obsolescent status in Issue 7 (from the Issue 6 base document) are as follows:

Obsolescent Base Functions in Issue 7
asctime() asctime_r() ctime() ctime_r() | gets() rand_r() tmpnam() utime()

The XSI functions moved to obsolescent status in Issue 7 (from the Issue 6 base document) are as follows:

Obsolescent XSI Functions in Issue 7
_longjmp() _setjmp() _tolower() _toupper() ftw() getitimer() gettimeofday() isascii() | pthread_getconcurrency() pthread_setconcurrency() setitimer() setpgrp() sighold() sigignore() sigpause() sigrelse() | sigset() siginterrupt() tempnam() toascii() ulimit()

##### Removed Functions and Symbols in Issue 7

The functions and symbols removed in Issue 7 (from the Issue 6 base document) are as follows:

Removed Functions and Symbols in Issue 7
bcmp() bcopy() bsd_signal() bzero() ecvt() fcvt() ftime() gcvt() getcontext() | gethostbyaddr() gethostbyname() getwd() h_errno index() makecontext() mktemp() pthread_attr_getstackaddr() pthread_attr_setstackaddr() | rindex() scalb() setcontext() swapcontext() ualarm() usleep() vfork() wcswcs()

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

There is no additional rationale provided for this section.

#### B.1.3 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.

return to top of page

UNIX ® is a registered Trademark of The Open Group.
POSIX ® is a registered Trademark of The IEEE.
Copyright © 2001-2013 The IEEE and The Open Group, All Rights Reserved
[ Main Index | XBD | XSH | XCU | XRAT ]