Approved December 2002
The Embedded Linux Consortium
Embedded Linux Consortium Platform Specification v1.0
Copyright © 2002 by Embedded Linux Consortium
Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1; with no Invariant Sections, with no Front-Cover Texts, and with no Back-Cover Texts. A copy of the license is included in Section GNU Free Documentation License, "GNU Free Documentation License".
Portions of the text were taken from other copyrighted documents in accordance with the respective license of those documents.
1003.1 is a trademark of the Institute of Electrical and Electronic Engineers, Inc.
UNIX® is a registered trademark and The Open Group" is a trademark of The Open Group in the U.S. and other countries.
POSIX® is a registered trademark of the Institute of Electrical and Electronic Engineers, Inc.
Linux is a trademark of Linus Torvalds.
This specification was prepared by the Embedded Linux Consortium's Core Platform Specification Working Group, whose members were:
Mark
Brown, IBM, Chair
Mitch Bunnell, Lynuxworks, Vice Chair
David A. Braun, Panasonic
Min Suk Choi, Samsung
Lee Courtney, MontaVista
Kevin Dankwardt, K Computing
Joe DeBlaquiere, Red Hat
Thiru Govindan, Wipro Technologies
Bao C. Ha, Hacom
Dr. I. P. Park, Panasonic
Greg Rose, Lynuxworks
Dongjun Shin, Samsung
Victor Yodaiken, FSM Labs
This is Version 1.0 of the Embedded Linux Consortium Platform Specification (ELCPS). An implementation of this version of the specification may not claim to be an implementation of the ELCPS unless it has successfully completed the compliance process as defined by the Embedded Linux Consortium.
The purpose of this specification is to define embedded system application programming environments (or profiles) based on the Linux operating system. This is intended for embedded system implementers and embedded application software developers. Embedded systems are systems either constrained or purposely optimized for a given environment.
This specification is built upon a much larger and widely supported set of standards, in particular:
These allow for the formation of a specification with a sound footing in industry-standard behavior. At the same time, this document is designed to allow for extension and future enhancement as the industry progresses.
This standard defines three environments to reflect the wide range of system requirements presented by embedded designs. The intent is to provide meaningful and coherent sets of interfaces that will present software vendors and consumers with a uniform framework for describing and specifying system capabilities. This allows an application writer to construct an application that may be easily moved to a different system that supports the same environment. Similarly, it allows a vendor to claim conformance with an established specification.
This specification is designed to support the common practice of interconnecting several smaller systems to create larger systems. Each interconnected system may use different ELCPS (or other) environments. For example, one can envision a hierarchical system where the bottom-level elements (e.g., device controllers) use the "minimal" environment, the next level up uses the somewhat larger "intermediate" environment, and so on. For this reason the Platform Specification specifies interfaces for the smaller environments that make no sense for an isolated system. These interfaces are specified to support the construction of hierarchical systems as well as systems of communicating heterogeneous peers.
In summary, the ELCPS aims:
and it will do this by
The specifications listed below are referenced in whole or in part by the ELCPS. Such references may be normative or non-normative1; a reference to specification shall only be considered normative if it is explicitly cited as such. The ELCPS makes normative references to portions of:
ISOC99 ISO/IEC 9899:1999,
Programming Languages - C LSB1.2 Linux Standard
Base 1 POSIX.1-2001 IEEE POSIX
1003.1-2001 2 SUSV3 Open Group Single
UNIX Specification version 3 2,3
Notes:
1. This document is available without charge at the URL cited.
2. These documents are actually the same document, containing
different sections for the appropriate standard. ISO is also
intending to affirm this document as a superseding standard to
ISO/IEC 9945-1:1996. The goal was to get rid of conflicts and
omissions between the various standards.
3. This document (the same text as POSIX.1-2001 under the SUS title)
is publicly available without charge at the URL cited. You will need
to register to obtain a copy at this time.
Any conflict between this specification and any of these standards is unintentional. This document defers to the formal standards, which the ELCPS recognizes as superior, unless explicitly excepted in the specification. In particular, from time to time, when ambiguities or discrepancies are found in the formal standards, the responsible bodies will make interpretations of them, whose findings will become binding on this Specification. Where, as the result of such an interpretation, or for any other reason, any of these formal standards are found to conflict with this specification (and such conflict is not explicitly excepted in the specification), ELCPS-conformant systems may offer behavior defined by the formal standards or by this specification. ELCPS-conformant systems must document which behavior they offer. Application writers should avoid depending exclusively on either behavior in such cases.
The general approach taken in this specification is to create functional groups of system interfaces, taken from the LSB, POSIX, and the SUSv3 sufficient to deliver the functionality typical of current embedded Linux systems. Each environment is specified with full features, to give users clear direction. Implementers must provide all required features for an environment, but may provide means to configure out those parts not needed by a specific application.
Implementers wishing to expand on the specified environments are strongly encouraged to take the added interfaces from current Linux practice or from the base standards, rather than invent new interfaces.
For each profile, the minimum hardware typically required is specified. This is the hardware assumed to be present; implementations may of course have more, but nothing in the profile requires - either directly or indirectly - more than the specified minimum hardware model.
This document should be used in conjunction with the documents it references. This document enumerates the system elements and interfaces it includes, but descriptions and specifications of those elements and interfaces may be included entirely or partly in this document, or entirely in other referenced documents. For example, the section that describes interface groupings includes a list of the system APIs supported in each group, and a pointer to the underlying referenced specification for information about the syntax and semantics of each interface. Only those routines not described in standards referenced by this document, or extensions to those standards, are described in this specification itself. Information referenced in this way is as much a part of this document as is the information explicitly included here.
This document.
An application written to reference or invoke only the system APIs and other resources specified in this document.
An implementation that provides the system environment(s) for applications as described in this document, and has successfully completed the requirements for claiming conformance, as defined by the ELC.
An application which has been written to reference or invoke system routines, commands, or other resources not specified in this document.
An implementation satisfying the following requirements:
An application with the following characteristics:
A strictly conforming application does not require or use any interface, facility, or implementation-defined extension that is not defined in this document in order to be installed or to execute successfully.
Describes a permissible feature or behavior available to the user or application. The feature or behavior is mandatory for an implementation that conforms to this document. An application can rely on the existence of the feature or behavior.
(Same meaning as implementation-dependent.) Describes a value or behavior that is not defined by this document but is selected by an implementer. The value or behavior is allowed to vary among implementations that conform to this document. An application should not rely on the existence of the value or behavior. An application that relies on such a value or behavior cannot be assured to be portable across conforming implementations. The implementer shall document such a value or behavior so that it can be used correctly by an application.
Describes a feature or behavior that is optional for an implementation that conforms to this document. An application should not rely on the existence of the feature or behavior. An application that relies on such a feature or behavior cannot be assured to be portable across conforming implementations. To avoid ambiguity, the opposite of may is expressed as need not, instead of may not.
Describes a feature or behavior that is mandatory for an application or user. An implementation that conforms to this document shall support this feature or behavior.
Describes a feature or behavior that is mandatory for an implementation that conforms to this document. An application can rely on the existence of the feature or behavior.
For an implementation that conforms to this document, describes a feature or behavior that is recommended but not mandatory. An application should not rely on the existence of the feature or behavior. An application that relies on such a feature or behavior cannot be assured to be portable across conforming implementations.
For an application, describes a feature or behavior that is recommended programming practice for optimum portability.
Describes the nature of a value or behavior not defined by this document which results from use of an invalid program construct or invalid data input. The value or behavior may vary among implementations that conform to this document. An application should not rely on the existence or validity of the value or behavior. An application that relies on any particular value or behavior cannot be assured to be portable across conforming implementations.
Describes the nature of a value or behavior not specified by this document which results from use of a valid program construct or valid data input. The value or behavior may vary among implementations that conform to this document. An application should not rely on the existence or validity of the value or behavior. An application that relies on any particular value or behavior cannot be assured to be portable across conforming implementations.
This section defines a set of "system environments for applications" for embedded Linux systems, beginning with a minimal environment and adding groups of function as the environments grow larger and more complex. The organization and makeup of these environments is heavily influenced by the IEEE POSIX 1003.13 "Standardized Application Environment Profile - POSIX Realtime Application Support (AEP)". While this first version of the ELCPS does not directly address RTOS issues, many of the basic principles stated in 1003.13 are the same.
These environments are designed such that it is possible to provide each of them from a fully conforming LSB1.2 system implementation. Each environment is purposely designed to be a proper subset of the next larger environment.
This environment describes systems that are typically deeply embedded and dedicated to isolated/unattended operation of one or more special devices. They require minimal or no user interaction, and may not require such features as mass storage (such as a file system). There is usually only one actual process, possibly with one or more threads of control (Linux tasks or POSIX threads). There may be multiple processes using only one address space (the POSIX fork() API may not be available).
The only hardware assumed in this environment is a single processor with its memory.
This takes the Minimal Environment and adds support for mass storage (file and file system interfaces, including Linux Large File Support), Asynchronous (non-blocking) I/O, dynamic linking of objects (libraries). Multiple processes or address spaces are possible.
The hardware requirements do not assume actual mass storage, the filesystem may be implemented by other means, such as RAM or ROM. One or more processors with associated memory are assumed.
This is essentially a full, multi-purpose Linux environment, including all of the function of the other, smaller environments. This is essentially equivalent to a LSB1.2 system, with the exception that no actual system utilities are specified (but the POSIX shell is indeed specified in this environment via functions such as popen()).
The hardware model includes one or more processors with memory, mass storage, network support and user interface/display devices.
The following table represents the API function groups, and their status for each of the System Environments2:
R - Required for this EnvironmentP - Optional for this Environment, but required for POSIX conformance.
L - Optional for this Environment, but required for LSB1.2 conformance.
In this table, all the entries with no label (R, P, or L) are optional, and can be offered in a given environment but are not mandatory for that environment. Environments with P/L entries must offer at least one, and may offer both. Implementations must document if they are offering P, L, or both. If both are offered, the use and interaction of the two in the environment must be documented.
Implementations must document which optional groups, if any, are provided in an environment.
ELC_ASYNCHRONOUS_IO ELC_C_LANG_JUMP ELC_C_LANG_MATH ELC_C_LANG_SUPPORT ELC_C_LANG_SUPPORT_R ELC_C_LIB_EXT ELC_DEVICE_IO ELC_DEVICE_SPECIFIC ELC_DEVICE_SPECIFIC_R ELC_DYNAMIC_LINKING ELC_FD_MGMT ELC_FIFO ELC_FILE_ATTRIBUTES ELC_FILE_SYSTEM ELC_FILE_SYSTEM_EXT ELC_FILE_SYSTEM_R ELC_IPC ELC_JOB_CONTROL ELC_JUMP ELC_LARGE_FILE ELC_LSB_THREADS ELC_LSB_THREADS_EXT ELC_MEM_MGMT ELC_MULTI_ADDR_SPACE ELC_MULTI_PROCESS ELC_NETWORKING ELC_NETWORKING_RPC ELC_PIPE ELC_POSIX_THREADS ELC_POSIX_THREADS_EXT ELC_REGEXP ELC_SHELL_FUNC ELC_SIGNALS ELC_SIGNAL_JUMP ELC_SINGLE_PROCESS ELC_STDIO_LOCKING ELC_SYMBOLIC_LINKS ELC_SYSTEM_DATABASE ELC_SYSTEM_DATABASE_R ELC_SYSTEM_LOGGING ELC_USER_GROUPS ELC_USER_GROUPS_R ELC_WIDE_CHAR ELC_WIDE_CHAR_DEVICE_IO
SE
SE
SE
The following table represents the POSIX 1003.1-2001 Feature Options, and their status for each of the System Environments. The POSIX Feature Options below are functions that are optional as to base POSIX 1003.1-2001 conformance requirements, but useful in embedded OS environments.
R - required for this Environment
NGROUPS_MAX _POSIX_CHOWN_RESTRICTED _POSIX_FSYNC _POSIX_JOB_CONTROL _POSIX_MESSAGE_PASSING _POSIX_NO_TRUNC _POSIX_REGEXP _POSIX_READER_WRITER_LOCKS _POSIX_SAVED_IDS _POSIX_VDISABLE
SE
SE
SE
The following sections represent the groupings of APIs into areas of function. These groupings are used in the ELCPS to represent what function is required at each level of conformance. Each group's elements will be separated to indicate the specification upon which they are based:
All interfaces included in any one of the function groups below, shall behave as described and defined in the normative parts of the referenced standard containing them.
The ELCPS offers two different versions of thread APIs: LSB1.2-based and POSIX-based. An implementation must support at least one of the two, and may choose to support both.
Applications should be written to deal with either form of threads support. An implementation choosing to support both models and multiple applications, must allow for applications individually choosing which model to use. Sets of cooperating applications must agree on a common threads model to use.
Linux historically has supported the POSIX threads (pthreads) API set, but differed in underlying organization and semantics. The LSB1.2-based groups are included to reflect this historic behavior.
While the purpose of this document is to specify embedded Linux system environments, one set of function (Asynchronous I/O) from the Realtime Options of POSIX.1-2001 has been included in this specification.
Some APIs may be present in more than one function group. This reflects the fact that some interfaces have purposes valid for more than one grouping, and that some interfaces may have different required behaviors when certain optional features such as threads are active.
(Asynchronous I/O)
contains:
The set of APIs described in the POSIX.1-2001 Feature Group
_POSIX_ASYNCHRONOUS_IO:
aio_cancel(), aio_error(), aio_fsync(), aio_read(), aio_return(), aio_suspend(), aio_write(), aio_listio(),
The following APIs as defined in LSB1.2:
aio_cancel64(), aio_error64(), aio_fsync64(), aio_read64(), aio_return64(), aio_suspend64(), aio_write64(), lio_listio64(),
With the exception of the following APIs, which are excluded from this set: None
(ISO C Library Jump
Functions) contains
The set of APIs described in POSIX.1-2001 Appendix E.1,
POSIX_C_LANG_JUMP:
longjmp(), setjmp()
The following APIs as
defined in LSB1.2: None
With the exception of the following APIs, which are excluded from
this set: None
(Math Functions)
contains
The set of APIs described in POSIX.1-2001 Appendix E.1,
POSIX_C_LANG_MATH:
acos(), acosf(), acosh(), acoshf(), acoshl(), acosl(), asin(), asinf(), asinh(), asinhf(), asinhl(), asinl(), atan(), atan2(), atan2f(), atan2l(), atanf(), atanh(), atanhf(), atanhl(), atanl(), cabs(), cabsf(), cabsl(), cacos(), cacosf(), cacosh(), cacoshf(), cacoshl(), cacosl(), carg(), cargf(), cargl(), casin(), casinf(), casinh(), casinhf(), casinhl(), casinl(), catan(), catanf(), catanh(), catanhf(), catanhl(), catanl(), cbrt(), cbrtf(), cbrtl(), ccos(), ccosf(), ccosh(), ccoshf(), ccoshl(), ccosl(), ceil(), ceilf(), ceill(), cexp(), cexpf(), cexpl(), cimag(), cimagf(), cimagl(), clog(), clogf(), clogl(), conj(), conjf(), conjl(), copysign(), copysignf(), copysignl(), cos(), cosf(), cosh(), 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(), erf(), erfc(), erfcf(), erfcl(), erff(), erfl(), exp(), exp2(), exp2f(), exp2l(), expf(), expl(), expm1(), expm1f(), expm1l(), fabs(), fabsf(), fabsl(), fdim(), fdimf(), fdiml(), floor(), floorf(), floorl(), fma(), fmaf(), fmal(), fmax(), fmaxf(), fmaxl(), fmin(), fminf(), fminl(), fmod(), fmodf(), fmodl(), fpclassify(), frexp(), frexpf(), frexpl(), hypot(), hypotf(), hypotl(), ilogb(), ilogbf(), ilogbl(), isfinite(), isgreater(), isgreaterequal(), isinf(), isless(), islessequal(), islessgreater(), isnan(), isnormal(), isunordered(), ldexp(), ldexpf(), ldexpl(), lgamma(), lgammaf(), lgammal(), llrint(), llrintf(), llrintl(), llround(), llroundf(), llroundl(), log(), log10(), log10f(), log10l(), log1p(), log1pf(), log1pl(), log2(), log2f(), log2l(), logb(), logbf(), logbl(), logf(), logl(), lrint(), lrintf(), lrintl(), lround(), lroundf(), lroundl(), modf(), modff(), modfl(), nan(), nanf(), nanl(), nearbyint(), nearbyintf(), nearbyintl(), nextafter(), nextafterf(), nextafterl(), nexttoward(), nexttowardf(), nexttowardl(), pow(), powf(), powl(), remainder(), remainderf(), remainderl(), remquo(), remquof(), remquol(), rint(), rintf(), rintl(), round(), roundf(), roundl(), scalbln(), scalblnf(), scalblnl(), scalbn(), scalbnf(), scalbnl(), signbit(), sin(), sinf(), sinh(), sinhf(), sinhl(), sinl(), sqrt(), sqrtf(), sqrtl(), tan(), tanf(), tanh(), tanhf(), tanhl(), tanl(), tgamma(), tgammaf(), tgammal(), trunc(), truncf(), truncl()
The set of APIs described in SUSv3 Appendix E.1, XSI_MATH:
j0(), j1(), jn(), scalb(), y0(), y1(), yn()
The following APIs as
defined in LSB1.2: None
With the exception of the following APIs, which are excluded from
this set: None
(General ISO C
Library ) contains
The set of APIs described in POSIX.1-2001 Appendix E.1,
POSIX_C_LANG_SUPPORT:
abs(), asctime(), atof(), atoi(), atol(), atoll(), bsearch(), calloc(), ctime(), difftime(), div(), feclearexcept(), fegetenv(), fegetexceptflag(), fegetround(), feholdexcept(), feraiseexcept(), fesetenv(), fesetexceptflag(), fesetround(), fetestexcept(), feupdateenv(), free(), gmtime(), imaxabs(), imaxdiv(), isalnum(), isalpha(), isblank(), iscntrl(), isdigit(), isgraph(), islower(), isprint(), ispunct(), isspace(), isupper(), isxdigit(), labs(), ldiv(), llabs(), lldiv(), localeconv(), localtime(), malloc(), memchr(), memcmp(), memcpy(), memmove(), memset(), mktime(), qsort(), rand(), realloc(), setlocale(), snprintf(), sprintf(), srand(), sscanf(), strcat(), strchr(), strcmp(), strcoll(), strcpy(), strcspn(), strerror(), strftime(), strlen(), strncat(), strncmp(), strncpy(), strpbrk(), strrchr(), strspn(), strstr(), strtod(), strtof(), strtoimax(), strtok(), strtol(), strtold(), strtoll(), strtoul(), strtoull(), strtoumax(), strxfrm(), time(), tolower(), toupper(), tzname, tzset(), va_arg(), va_copy(), va_end(), va_start(), vsnprintf(), vsprintf(), vsscanf()
The set of APIs described in SUSv3 Appendix E.1, XSI_C_LANG_SUPPORT:
_tolower(), _toupper(), a64l(), daylight(), drand48(), erand48(), ffs(), getcontext(), getdate(), getsubopt(), hcreate(), hdestroy(), hsearch(), iconv(), iconv_close(), iconv_open(), initstate(), insque(), isascii(), jrand48(), l64a(), lcong48(), lfind(), lrand48(), lsearch(), makecontext(), memccpy(), mrand48(), nrand48(), random(), remque(), seed48(), setcontext(), setstate(), signgam, srand48(), srandom(), strcasecmp(), strdup(), strfmon(), strncasecmp(), strptime(), swab(), swapcontext(), tdelete(), tfind(), timezone(), toascii(), tsearch(), twalk()
The following APIs as
defined in LSB1.2: None
With the exception of the following APIs, which are excluded from
this set: None
(Thread-Safe General
ISO C Library) contains
The set of APIs described in POSIX.1-2001 Appendix E.1,
POSIX_C_LANG_SUPPORT_R:
asctime_r(), ctime_r(), gmtime_r(), localtime_r(), rand_r(), strerror_r(), strtok_r()
The following APIs as defined in LSB1.2:
random_r(),
With the exception of the following APIs, which are excluded from this set: None
(General C Library
Extension) contains
The set of APIs described in POSIX.1-2001 Appendix E.1,
POSIX_C_LIB_EXT:
fnmatch(), getopt(), optarg, opterr, optind, optopt
The following APIs as defined in LSB1.2:
stime(), getopt_long(), memmem(), getopt_long_only(), memrchr(), stpcpy(), stpncpy(), strcasestr(), strndup(), strnlen(), strsep(), strsignal(), strtoq(), strtouq(), strverscmp(), adjtime(), adjtimex(),
With the exception of the following APIs, which are excluded from this set:
brk() [see ELC_MULTI_ADDR_SPACE]
(Device Input and
Output) contains
The set of APIs described in POSIX.1-2001 Appendix E.1,
POSIX_DEVICE_IO:
FD_CLR(), FD_ISSET(), FD_SET(), FD_ZERO(), clearerr(), close(), fclose(), fdopen(), feof(), ferror(), fflush(), fgetc(), fgets(), fileno(), fopen(), fprintf(), fputc(), fputs(), fread(), freopen(), fscanf(), fwrite(), getc(), getchar(), gets(), open(), perror(), printf(), pselect(), putc(), putchar(), puts(), read(), scanf(), select(), setbuf(), setvbuf(), stderr, stdin, stdout, ungetc(), vfprintf(), vfscanf(), vprintf(), vscanf(), write()
The set of APIs described in SUSv3 Appendix E.1, XSI_DEVICE_IO:
fmtmsg(), poll(), pread(), pwrite(), readv(), writev()
The following APIs as defined in LSB1.2:
vasprintf(), vdprintf(), setbuffer(), err(), error(), errx(), verrx(), warn(), warnx(),
With the exception of the following APIs, which are excluded from this set: None
(General Terminal)
contains
The set of APIs described in POSIX.1-2001 Appendix E.1,
POSIX_DEVICE_SPECIFIC:
cfgetispeed(), cfgetospeed(), cfsetispeed(), cfsetospeed(), ctermid(), isatty(), tcdrain(), tcflow(), tcflush(), tcgetattr(), tcsendbreak(), tcsetattr(), ttyname()
The set of APIs described in SUSv3 Appendix E.1, XSI_DEVICE_SPECIFIC:
grantpt(), posix_openpt(), ptsname(), unlockpt()
The following APIs as
defined in LSB1.2: None
With the exception of the following APIs, which are excluded from
this set: None
(Thread-Safe General
Terminal) contains
The set of APIs described in POSIX.1-2001 Appendix E.1,
POSIX_DEVICE_SPECIFIC_R:
ttyname_r()
The following APIs as defined in LSB1.2:
cfmakeraw(), cfsetspeed(),
With the exception of the following APIs, which are excluded from this set: None
(Dynamic Linking)
contains
The set of APIs described in SUSv3 Appendix E.1, XSI_DYNAMIC_LINKING:
dlclose(), dlerror(), dlopen(), dlsym()
The following APIs as defined in LSB1.2:
dladdr(),
With the exception of the following APIs, which are excluded from this set: None
(File Descriptor
Management) contains
The set of APIs described in POSIX.1-2001 Appendix E.1,
POSIX_FD_MGMT:
dup(), dup2(), fcntl(), fgetpos(), fseek(), fseeko(), fsetpos(), ftell(), ftello(), ftruncate(), lseek(), rewind()
The set of APIs described in SUSv3 Appendix E.1, XSI_FD_MGMT:
truncate()
The following APIs as defined in LSB1.2:
flock()
With the exception of the following APIs, which are excluded from this set: None
(FIFO) contains
The set of APIs described in POSIX.1-2001 Appendix E.1,
POSIX_FIFO:
mkfifo()
The following APIs as
defined in LSB1.2: None
With the exception of the following APIs, which are excluded from
this set: None
(File Attributes)
contains
The set of APIs described in POSIX.1-2001 Appendix E.1,
POSIX_FILE_ATTRIBUTES:
chmod(), chown(), fchmod(), fchown(), umask()
The following APIs as
defined in LSB1.2: None
With the exception of the following APIs, which are excluded from
this set: None
(File System)
contains
The set of APIs described in POSIX.1-2001 Appendix E.1,
POSIX_FILE_SYSTEM:
access(), chdir(), closedir(), creat(), fpathconf(), fstat(), getcwd(), link(), mkdir(), opendir(), pathconf(), readdir(), remove(), rename(), rewinddir(), rmdir(), stat(), tmpfile(), tmpnam(), unlink(), utime()
The set of APIs described in SUSv3 Appendix E.1, XSI_FILE_SYSTEM:
basename(), dirname(), fchdir(), fstatvfs(), ftw(), lchown(), lockf(), mknod(), mkstemp(), nftw(), realpath(), seekdir(), statvfs(), sync(), telldir(), tempnam()
The following APIs as defined in LSB1.2:
alphasort(), statfs(), fstatfs(),
With the exception of the following APIs, which are excluded from this set: None
(File System
Extensions) contains
The set of APIs described in POSIX.1-2001 Appendix E.1,
POSIX_FILE_SYSTEM_EXT:
glob(), globfree()
The following APIs as
defined in LSB1.2: None
With the exception of the following APIs, which are excluded from
this set: None
(Thread-Safe File
System) contains
The set of APIs described in POSIX.1-2001 Appendix E.1,
POSIX_FILE_SYSTEM_R:
readdir_r()
The following APIs as
defined in LSB1.2: None
With the exception of the following APIs, which are excluded from
this set: None
(Interprocess
Communication) contains
The set of APIs described in SUSv3 Appendix E.1, XSI_IPC:
ftok(), msgctl(), msgget(), msgrcv(), msgsnd(), semctl(), semget(), semop(), shmat(), shmctl(), shmdt(), shmget()
The following APIs as
defined in LSB1.2: None
With the exception of the following APIs, which are excluded from
this set: None
(Job Control)
contains
The set of APIs described in POSIX.1-2001 Appendix E.1,
POSIX_JOB_CONTROL:
setpgid(), tcgetpgrp(), tcsetpgrp()
The setof APIs described in SUSv3 Appendix E.1, XSI_JOB_CONTROL:
tcgetsid()
The following APIs as
defined in LSB1.2: None
With the exception of the following APIs, which are excluded from
this set: None
(Extended Jump
Functions) contains
The set of APIs described in SUSv3 Appendix E.1, XSI_JUMP:
_longjmp(), _setjmp()
The following APIs as
defined in LSB1.2: None
With the exception of the following APIs, which are excluded from
this set: None
(Large File Support)
contains
The following APIs as defined in LSB1.2:
globfree64(), glob64(), fopen64(), ftello64(), mkstemp64(), tmpfile64(), freopen64(), ftruncate64(), mmap64(), truncate64(), fseeko64(), ftw64(), nftw64(), alphasort64(), fsetpos64(), getrlimit64(), open64(), creat64(), fstatfs64(), lockf64(), pwrite64(), fgetpos64(), fstatvfs64(), lseek64(), readdir64(),
(LSB-conforming
threads) contains
The set of APIs described in POSIX.1-2001 Option Groups:
_POSIX_THREADS, _POSIX_THREAD_ATTR_STACKADDR,
_POSIX_THREAD_ATTR_STACKSIZE, _POSIX_READER_WRITER_LOCKS,
_POSIX_THREAD_SAFE_FUNCTIONS:
pthread_atfork(), pthread_attr_destroy(), pthread_attr_getdetachstate(), pthread_attr_getguardsize(), pthread_attr_getschedparam(), pthread_attr_getstack(), pthread_attr_getstackaddr(), pthread_attr_getstacksize(), pthread_attr_init(), pthread_attr_setdetachstate(), pthread_attr_setguardsize(), pthread_attr_setschedparam(), pthread_attr_setstack(), pthread_attr_setstackaddr(), pthread_attr_setstacksize(), 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_key_create(), pthread_key_delete(), pthread_kill(), pthread_mutex_destroy(), pthread_mutex_init(), pthread_mutex_lock(), 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_tryrdlock(), pthread_rwlock_trywrlock(), pthread_rwlock_unlock(), pthread_rwlock_wrlock(), pthread_rwlockattr_destroy(), pthread_rwlockattr_init(), pthread_self(), pthread_setcancelstate(), pthread_setcanceltype(), pthread_setconcurrency(), pthread_setspecific(), pthread_sigmask(), pthread_testcancel(), sigwait(), pthread_condattr_init(), pthread_create(), pthread_detach(), pthread_equal(), pthread_exit(), pthread_getconcurrency(), pthread_getspecific(), pthread_join(), asctime_r(), ctime_r(), flockfile(), ftrylockfile(), funlockfile(), getc_unlocked(), getchar_unlocked(), getgrgid_r(), getgrnam_r(), getpwnam_r(), getpwuid_r(), gmtime_r(), localtime_r(), putc_unlocked(), putchar_unlocked(), rand_r(), readdir_r(), strerror_r(), strtok_r()
The following APIs as
defined in LSB1.2: None
With the exception of the following APIs, which are excluded from
this set: None
All APIs in this group behave as defined in LSB1.2.
(LSB-threads
extensions) contains
The set of APIs described in POSIX.1-2001 Option Groups:
_POSIX_THREAD_PROCESS_SHARED:
pthread_mutexattr_getpshared(), pthread_mutexattr_setpshared(), pthread_rwlockattr_getpshared(), pthread_rwlockattr_setpshared(), pthread_condattr_getpshared(), pthread_condattr_setpshared()
The set of APIs described in SUSv3 Appendix E.1: XSI_THREAD_MUTEX_EXT, XSI_THREADS_EXT:
pthread_mutexattr_gettype(), pthread_mutexattr_settype()
The following APIs as
defined in LSB1.2: None
With the exception of the following APIs, which are excluded from
this set: None
All APIs in this group behave as defined in LSB1.2.
(Memory Management)
contains
The set of APIs described in POSIX.1-2001 Option Groups:
_POSIX_MAPPED_FILES, _POSIX_MEMORY_PROTECTION, _POSIX_MEMLOCK,
_POSIX_MEMLOCK_RANGE:
mmap(), mprotect(), msync(), munmap()
The following APIs as
defined in LSB1.2: None
With the exception of the following APIs, which are excluded from
this set: None
(Multiple Address
Spaces) contains
The set of APIs described in POSIX.1-2001 Appendix E.1,
POSIX_MULTI_PROCESS:
fork()
The set of APIs
described in SUSv3 Appendix E.1: None
The following APIs as defined in LSB1.2:
brk()
With the exception of the following APIs, which are excluded from this set: None
(Multiple Processes)
contains
The set of APIs described in POSIX.1-2001 Appendix E.1,
POSIX_MULTI_PROCESS:
_Exit(), _exit(), assert(), atexit(), clock(), execl(), execle(), execlp(), execv(), execve(), execvp(), exit(), getpgrp(), getpid(), getppid(), setsid(), sleep(), times(), wait(), waitpid()
The set of APIs described in SUSv3 Appendix E.1, XSI_MULTI_PROCESS:
getpgid(), getpriority(), getrlimit(), getrusage(), getsid(), nice(), setpgrp(), setpriority(), setrlimit(), ulimit(), usleep(), vfork(), waitid()
The following APIs as defined in LSB1.2:
wait4(), getloadavg(), daemon(),
With the exception of the following APIs, which are excluded from this set:
fork() [see ELC_MULTI_ADDR_SPACE]
(Networking)
contains
The set of APIs described in POSIX.1-2001 Appendix E.1,
POSIX_NETWORKING:
accept(), bind(), connect(), endhostent(), endnetent(), endprotoent(), endservent(), freeaddrinfo(), gai_strerror(), getaddrinfo(), gethostbyaddr(), gethostbyname(), gethostent(), gethostname(), getnameinfo(), getnetbyaddr(), getnetbyname(), getnetent(), getpeername(), getprotobyname(), getprotobynumber(), getprotoent(), getservbyname(), getservbyport(), getservent(), getsockname(), getsockopt(), h_errno, htonl(), htons(), if_freenameindex(), if_indextoname(), if_nameindex(), if_nametoindex(), inet_addr(), inet_ntoa(), inet_ntop(), inet_pton(), listen(), ntohl(), ntohs(), recv(), recvfrom(), recvmsg(), send(), sendmsg(), sendto(), sethostent(), setnetent(), setprotoent(), setservent(), setsockopt(), shutdown(), socket(), sockatmark(), socketpair()
The following APIs as defined in LSB1.2:
sethostname(), sethostid(), bindresvport(), gethostbyname_r(),
With the exception of the following APIs, which are excluded from this set: None
(RPC) contains
The set of APIs described in POSIX.1-2001 Appendix E.1,
POSIX_NETWORKING: None
The following APIs as defined in LSB1.2:
authnone_create(), clnt_create(), clnt_pcreateerror(), clnt_perrno(), clnt_perror(), clnt_spcreateerror(), clnt_sperrno(), clnt_sperror(), key_decryptsession(), svc_getreqset(), svcerr_auth(), svcerr_decode(), svcerr_noproc(), svcerr_noprog(), svcerr_progvers(), svcerr_systemerr(), svcerr_weakauth(), xdr_accepted_reply(), xdr_array(), xdr_bool(), xdr_bytes(), xdr_callhdr(), xdr_callmsg(), xdr_char(), xdr_double(), xdr_enum(), xdr_float(), xdr_free(), xdr_int(), xdr_long(), xdr_opaque(), xdr_opaque_auth(), xdr_pointer(), xdr_reference(), xdr_rejected_reply(), xdr_replymsg(), xdr_short(), xdr_string(), xdr_u_char(), xdr_u_long(), xdr_u_short(), xdr_union(), xdr_vector(), xdr_void(), xdr_wrapstring(), xdrmem_create(), xdrrec_create(), xdrrec_eof(),
With the exception of the following APIs, which are excluded from this set: None
(Pipe) contains
The set of APIs described in POSIX.1-2001 Appendix E.1, POSIX_PIPE:
pipe()
The following APIs as
defined in LSB1.2: None
With the exception of the following APIs, which are excluded from
this set: None
(POSIX-conforming
threads) contains
The set of APIs described in POSIX.1-2001 Option Groups:
_POSIX_THREADS, _POSIX_THREAD_ATTR_STACKADDR,
_POSIX_THREAD_ATTR_STACKSIZE, _POSIX_READER_WRITER_LOCKS,
_POSIX_THREAD_SAFE_FUNCTIONS:
pthread_atfork(), pthread_attr_destroy(), pthread_attr_getdetachstate(), pthread_attr_getguardsize(), pthread_attr_getschedparam(), pthread_attr_getstack(), pthread_attr_getstackaddr(), pthread_attr_getstacksize(), pthread_attr_init(), pthread_attr_setdetachstate(), pthread_attr_setguardsize(), pthread_attr_setschedparam(), pthread_attr_setstack(), pthread_attr_setstackaddr(), pthread_attr_setstacksize(), 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_key_create(), pthread_key_delete(), pthread_kill(), pthread_mutex_destroy(), pthread_mutex_init(), pthread_mutex_lock(), 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_tryrdlock(), pthread_rwlock_trywrlock(), pthread_rwlock_unlock(), pthread_rwlock_wrlock(), pthread_rwlockattr_destroy(), pthread_rwlockattr_init(), pthread_self(), pthread_setcancelstate(), pthread_setcanceltype(), pthread_setconcurrency(), pthread_setspecific(), pthread_sigmask(), pthread_testcancel(), sigwait(), pthread_condattr_init(), pthread_create(), pthread_detach(), pthread_equal(), pthread_exit(), pthread_getconcurrency(), pthread_getspecific(), pthread_join(), asctime_r(), ctime_r(), flockfile(), ftrylockfile(), funlockfile(), getc_unlocked(), getchar_unlocked(), getgrgid_r(), getgrnam_r(), getpwnam_r(), getpwuid_r(), gmtime_r(), localtime_r(), putc_unlocked(), putchar_unlocked(), rand_r(), readdir_r(), strerror_r(), strtok_r()
The following APIs as
defined in LSB1.2: None
With the exception of the following APIs, which are excluded from
this set: None
All APIs in this group behave as defined in POSIX.1-2001.
(POSIX-threads
extensions) contains
The set of APIs described in POSIX.1-2001 Option Groups:
_POSIX_THREAD_PROCESS_SHARED:
pthread_mutexattr_getpshared(), pthread_mutexattr_setpshared(), pthread_rwlockattr_getpshared(), pthread_rwlockattr_setpshared(), pthread_condattr_getpshared(), pthread_condattr_setpshared()
The set of APIs described in SUSv3 Appendix E.1: XSI_THREAD_MUTEX_EXT, XSI_THREADS_EXT:
pthread_mutexattr_gettype(), pthread_mutexattr_settype()
The following APIs as
defined in LSB1.2: None
With the exception of the following APIs, which are excluded from
this set: None
All APIs in this group behave as defined in POSIX.1-2001.
(Regular Expressions)
contains
The set of APIs described in POSIX.1-2001 Appendix E.1, POSIX_REGEXP:
regcomp(), regerror(), regexec(), regfree()
The following APIs as
defined in LSB1.2: None
With the exception of the following APIs, which are excluded from
this set: None
(Shell and Utilities)
contains
The set of APIs described in POSIX.1-2001 Appendix E.1,
POSIX_SHELL_FUNC:
pclose(), popen(), system(), wordexp(), wordfree()
The following APIs as
defined in LSB1.2: None
With the exception of the following APIs, which are excluded from
this set: None
(Signal) contains
The set of APIs described in POSIX.1-2001 Appendix E.1,
POSIX_SIGNALS:
abort(), alarm(), kill(), pause(), raise(), sigaction(), sigaddset(), sigdelset(), sigemptyset(), sigfillset(), sigismember(), signal(), sigpending(), sigprocmask(), sigsuspend(), sigwait()
The set of APIs described in SUSv3 Appendix E.1, XSI_SIGNALS:
bsd_signal(), killpg(), sigaltstack(), sighold(), sigignore(), siginterrupt(), sigpause(), sigrelse(), sigset(), ualarm()
The following APIs as defined in LSB1.2:
psignal(), sigandset(), sigblock(), siggetmask(), sigisemptyset(), sigorset(), sigreturn(),
With the exception of the following APIs, which are excluded from this set: None
(Signal Jump
Functions) contains
The set of APIs described in POSIX.1-2001 Appendix E.1,
POSIX_SIGNAL_JUMP:
siglongjmp(), sigsetjmp()
The following APIs as
defined in LSB1.2: None
With the exception of the following APIs, which are excluded from
this set: None
(Single Process)
contains
The set of APIs described in POSIX.1-2001 Appendix E.1,
POSIX_SINGLE_PROCESS:
confstr(), environ, errno, getenv(), setenv(), sysconf(), uname(), unsetenv()
The set of APIs described in SUSv3 Appendix E.1, XSI_SINGLE_PROCESS:
gethostid(), gettimeofday(), putenv()
The following APIs as
defined in LSB1.2: None
With the exception of the following APIs, which are excluded from
this set: None
(Thread-Safe stdio
Locking) contains
The set of APIs described in POSIX.1-2001 Appendix E.1,
POSIX_FILE_LOCKING:
flockfile(), ftrylockfile(), funlockfile(), getc_unlocked(), getchar_unlocked(), putc_unlocked(), putchar_unlocked()
The following APIs as
defined in LSB1.2: None
With the exception of the following APIs, which are excluded from
this set: None
(Symbolic Links)
contains
The set of APIs described in POSIX.1-2001 Appendix E.1,
POSIX_SYMBOLIC_LINKS:
lstat(), readlink(), symlink()
The following APIs as
defined in LSB1.2: None
With the exception of the following APIs, which are excluded from
this set: None
(System Database)
contains
The set of APIs described in POSIX.1-2001 Appendix E.1,
POSIX_SYSTEM_DATABASE:
getgrgid(), getgrnam(), getpwnam(), getpwuid()
The set of APIs described in SUSv3 Appendix E.1, XSI_SYSTEM_DATABASE:
endpwent(), getpwent(), setpwent()
The following APIs as defined in LSB1.2:
setmntent(),
With the exception of the following APIs, which are excluded from this set: None
(Thread-Safe System
database) contains
The set of APIs described in POSIX.1-2001 Appendix E.1,
POSIX_SYSTEM_DATABASE_R:
getgrgid_r(), getgrnam_r(), getpwnam_r(), getpwuid_r()
The following APIs as
defined in LSB1.2: None
With the exception of the following APIs, which are excluded from
this set: None
(System Logging)
contains
The set of APIs described in SUSv3 Appendix
E.1, XSI_SYSTEM_LOGGING:
closelog(), openlog(), setlogmask(), syslog()
The following APIs as defined in LSB1.2:
acct()
With the exception of the following APIs, which are excluded from this set: None
(User and Group)
contains
The set of APIs described in POSIX.1-2001 Appendix E.1,
POSIX_USER_GROUPS:
getegid(), geteuid(), getgid(), getgroups(), getlogin(), getuid(), setegid(), seteuid(), setgid(), setuid()
The set of APIs described in SUSv3 Appendix E.1, XSI_USER_GROUPS:
endgrent(), endutxent(), getgrent(), getutxent(), getutxid(), getutxline(), pututxline(), setgrent(), setregid(), setreuid(), setutxent()
The following APIs as defined in LSB1.2:
initgroups(), getutent(), setgroups(), setutent(),
With the exception of the following APIs, which are excluded from this set: None
(Thread-Safe User and
Group) contains
The set of APIs described in POSIX.1-2001 Appendix E.1,
POSIX_USER_GROUPS_R:
getlogin_r()
The following APIs as defined in LSB1.2:
getutent_r(),
With the exception of the following APIs, which are excluded from this set: None
(Wide Character
Library) contains
The set of APIs described in SUSv3 Appendix E.1, XSI_WIDE_CHAR:
wcswidth(), wcwidth()
The following APIs as defined in LSB1.2:
mbsnrtowcs(), wcpcpy(), wcpncpy(), wcscasecmp(), wcsncasecmp(), wcsdup(), wcsnlen(), wcsnrtombs(), wcstoq(), wcstouq(),
With the exception of the following APIs, which are excluded from this set: None
(Wide Character
Device Input/Output) contains
The set of APIs described in POSIX.1-2001 Appendix E.1,
POSIX_WIDE_CHAR_DEVICE_IO:
fgetwc(), fgetws(), fputwc(), fputws(), fwide(), fwprintf(), fwscanf(), getwc(), getwchar(), putwc(), putwchar(), ungetwc(), vfwprintf(), vfwscanf(), vwprintf(), vwscanf(), wprintf(), wscanf()
The following APIs as
defined in LSB1.2: None
With the exception of the following APIs, which are excluded from
this set: None
A conforming implementation shall make available an <elcstd.h> header, defining the symbolic constants and types described in this section. The actual values of the constants are unspecified except as shown.
The following symbolic constants shall be defined in <elcstd.h>:
_ELCPS_VERSION
Long integer value indicating version of ELCPS to which the implementation conforms. For implementations conforming to this particular version, the value shall be 200212L.
The following symbolic constants shall be defined in <elcstd.h> and shall have a value of -1, 0, or greater, unless otherwise specified below.
If a symbolic constant is defined with the value -1, the option is not supported. Headers, data types, and function interfaces required only for the option need not be supplied. An application that attempts to use anything associated only with the option is considered to be requiring an extension.
If a symbolic constant is defined with a value greater than zero, the option shall always be supported when the application is executed. All headers, data types, and functions shall be present and shall operate as specified.
If a symbolic constant is defined with the value zero, all headers, data types, and functions shall be present. The application can check at runtime to see whether the option is supported by calling fpathconf(), pathconf(), or sysconf() with the indicated name parameter.
Unless explicitly specified otherwise, the behavior of functions associated with an unsupported option is unspecified, and an application that uses such functions without first checking fpathconf(), pathconf(), or sysconf() is considered to be requiring an extension.
_ELCPS_MINIMAL_ENV
The implementation supports the Minimal System Environment. If this symbol has a value other than -1 or 0, it shall have the value 200212L.
_ELCPS_INTERMEDIATE_ENV
The implementation supports the Intermediate System Environment. If this symbol has a value other than -1 or 0, it shall have the value 200212L.
_ELCPS_FULL_ENV
The implementation supports the Full System Environment. If this symbol has a value other than -1 or 0, it shall have the value 200212L.
_ELC_ASYNCHRONOUS_IO
The implementation supports the Asynchronous I/O interface group. If this symbol has a value other than -1 or 0, it shall have the value 200212L.
_ELC_C_LANG_JUMP
The implementation supports the ISO C Library Jump Functions interface group. If this symbol has a value other than -1 or 0, it shall have the value 200212L.
_ELC_C_LANG_MATH
The implementation supports the Math Functions interface group. If this symbol has a value other than -1 or 0, it shall have the value 200212L.
_ELC_C_LANG_SUPPORT
The implementation supports the General ISO C Library interface group. If this symbol has a value other than -1 or 0, it shall have the value 200212L.
_ELC_C_LANG_SUPPORT_R
The implementation supports the Thread-Safe General ISO C Library interface group. If this symbol has a value other than -1 or 0, it shall have the value 200212L.
_ELC_C_LIB_EXT
The implementation supports the General C Library Extension interface group. If this symbol has a value other than -1 or 0, it shall have the value 200212L.
_ELC_DEVICE_IO
The implementation supports the Device Input and Output interface group. If this symbol has a value other than -1 or 0, it shall have the value 200212L.
_ELC_DEVICE_SPECIFIC
The implementation supports the General Terminal interface group. If this symbol has a value other than -1 or 0, it shall have the value 200212L.
_ELC_DEVICE_SPECIFIC_R
The implementation supports the Thread-Safe General Terminal interface group. If this symbol has a value other than -1 or 0, it shall have the value 200212L.
_ELC_DYNAMIC_LINKING
The implementation supports the Dynamic Linking interface group. If this symbol has a value other than -1 or 0, it shall have the value 200212L.
_ELC_FD_MGMT
The implementation supports the File Descriptor Management interface group. If this symbol has a value other than -1 or 0, it shall have the value 200212L.
_ELC_FIFO _FIFO
The implementation supports the FIFO interface group. If this symbol has a value other than -1 or 0, it shall have the value 200212L.
_ELC_FILE_ATTRIBUTES
The implementation supports the File Attributes interface group. If this symbol has a value other than -1 or 0, it shall have the value 200212L.
_ELC_STDIO_LOCKING
The implementation supports the Thread-Safe stdio Locking interface group. If this symbol has a value other than -1 or 0, it shall have the value 200212L.
_ELC_FILE_SYSTEM
The implementation supports the File System interface group. If this symbol has a value other than -1 or 0, it shall have the value 200212L.
_ELC_FILE_SYSTEM_EXT
The implementation supports the File System Extensions interface group. If this symbol has a value other than -1 or 0, it shall have the value 200212L.
_ELC_FILE_SYSTEM_R
The implementation supports the Thread-Safe File System interface group. If this symbol has a value other than -1 or 0, it shall have the value 200212L.
_ELC_IPC
The implementation supports the Interprocess Communication interface group. If this symbol has a value other than -1 or 0, it shall have the value 200212L.
_ELC_JOB_CONTROL
The implementation supports the Job Control interface group. If this symbol has a value other than -1 or 0, it shall have the value 200212L.
_ELC_JUMP
The implementation supports the Extended Jump Functions interface group. If this symbol has a value other than -1 or 0, it shall have the value 200212L.
_ELC_LARGE_FILE
The implementation supports the Large File Support interface group. If this symbol has a value other than -1 or 0, it shall have the value 200212L.
_ELC_LSB_THREADS
The implementation supports the LSB-Threads interface group. If this symbol has a value other than -1 or 0, it shall have the value 200212L.
_ELC_LSB_THREADS_EXT
The implementation supports the LSB-Threads Extensions interface group. If this symbol has a value other than -1 or 0, it shall have the value 200212L.
_ELC_MEM_MGMT
The implementation supports the Memory Management interface group. If this symbol has a value other than -1 or 0, it shall have the value 200212L.
_ELC_MULTI_ADDR_SPACE
The implementation supports the Multiple Address Space interface group. If this symbol has a value other than -1 or 0, it shall have the value 200212L.
_ELC_MULTI_PROCESS
The implementation supports the Multiple Processes interface group. If this symbol has a value other than -1 or 0, it shall have the value 200212L.
_ELC_NETWORKING
The implementation supports the Networking interface group. If this symbol has a value other than -1 or 0, it shall have the value 200212L.
_ELC_NETWORKING_RPC
The implementation supports the RPC interface group. If this symbol has a value other than -1 or 0, it shall have the value 200212L.
_ELC_PIPE
The implementation supports the Pipe interface group. If this symbol has a value other than -1 or 0, it shall have the value 200212L.
_ELC_POSIX_THREADS
The implementation supports the POSIX-Threads interface group. If this symbol has a value other than -1 or 0, it shall have the value 200212L.
_ELC_POSIX_THREADS_EXT
The implementation supports the POSIX-Threads Extensions interface group. If this symbol has a value other than -1 or 0, it shall have the value 200212L.
_ELC_REGEXP
The implementation supports the Regular Expressions interface group. If this symbol has a value other than -1 or 0, it shall have the value 200212L.
_ELC_SC_MIN_ENV
The value returned from sysconf() for _SC_ELCPS_ENVIRONMENT when operating in the Minimal Environment. This value is implementation-defined.
_ELC_SC_INTER_ENV
The value returned from sysconf() for _SC_ELCPS_ENVIRONMENT when operating in the Intermediate Environment. This value is implementation-defined.
_ELC_SC_FULL_ENV
The value returned from sysconf() for _SC_ELCPS_ENVIRONMENT when operating in the Full Environment. This value is implementation-defined.
_ELC_SHELL_FUNC
The implementati