events
news
The Linux Foundation
 
 
ELC/ELCPS

From The Linux Foundation

 

 

 

ELC
PLATFORM SPECIFICATION

Version 1.0


Approved December 2002
The Embedded Linux Consortium

 


 

CONTENTS

  1. Copyright and Licensing Terms
  2. Acknowledgements
  3. Introduction
    1. Purpose
    2. Relationship to Other Industry Standards
    3. How To Use This Specification
    4. Definitions
      1. ELCPS
      2. ELCPS-Compliant Application
      3. ELCPS-Conforming Implementation
      4. Non-ELCPS-Compliant Application
      5. ELCPS Implementation Conformance
      6. ELCPS Application Conformance
      7. ELCPS Strictly Conforming Application
    5. Terminology
      1. can
      2. implementation-defined
      3. may
      4. must
      5. shall
      6. should
      7. undefined
      8. unspecified
  4. System Environments
    1. Minimal System Environment
    2. Intermediate System Environment
    3. Full System Environment
  5. Environment Function Group Tables
    1. Required Environment Function Groups
    2. POSIX 1003.1-2001 Feature Options
  6. Interface Function Groups
    1. Threads
    2. Realtime
    3. Listing of Function Groups
      1. ELC_ASYNCHRONOUS_IO
      2. ELC_C_LANG_JUMP
      3. ELC_C_LANG_MATH
      4. ELC_C_LANG_SUPPORT
      5. ELC_C_LANG_SUPPORT_R
      6. ELC_C_LIB_EXT
      7. ELC_DEVICE_IO
      8. ELC_DEVICE_SPECIFIC
      9. ELC_DEVICE_SPECIFIC_R
      10. ELC_DYNAMIC_LINKING
      11. ELC_FD_MGMT
      12. ELC_FIFO
      13. ELC_FILE_ATTRIBUTES
      14. ELC_FILE_SYSTEM
      15. ELC_FILE_SYSTEM_EXT
      16. ELC_FILE_SYSTEM_R
      17. ELC_IPC
      18. ELC_JOB_CONTROL
      19. ELC_JUMP
      20. ELC_LARGE_FILE
      21. ELC_LSB_THREADS
      22. ELC_LSB_THREADS_EXT
      23. ELC_MEM_MGMT
      24. ELC_MULTI_ADDR_SPACE
      25. ELC_MULTI_PROCESS
      26. ELC_NETWORKING
      27. ELC_NETWORKING_RPC
      28. ELC_PIPE
      29. ELC_POSIX_THREADS
      30. ELC_POSIX_THREADS_EXT
      31. ELC_REGEXP
      32. ELC_SHELL_FUNC
      33. ELC_SIGNALS
      34. ELC_SIGNAL_JUMP
      35. ELC_SINGLE_PROCESS
      36. ELC_STDIO_LOCKING
      37. ELC_SYMBOLIC_LINKS
      38. ELC_SYSTEM_DATABASE
      39. ELC_SYSTEM_DATABASE_R
      40. ELC_SYSTEM_LOGGING
      41. ELC_USER_GROUPS
      42. ELC_USER_GROUPS_R
      43. ELC_WIDE_CHAR
      44. ELC_WIDE_CHAR_DEVICE_IO
  7. Feature Macros and Constants
    1. Location
    2. Version Test Macro
    3. Constants for Environments and Function/Feature Groups
    4. Dynamic Determination of Environment
  8. Rationale
    1. Use of Existing Standards
    2. Realtime
    3. Threads
    4. IPV6
  9. GNU Free Documentation License
    1. Preamble
    2. Applicability and definitions
    3. Verbatim copying
    4. Copying in quantity
    5. Modifications
    6. Combining documents
    7. Collections of documents
    8. Aggregation with independent works
    9. Translation
    10. Termination
    11. Future revisions of this License


1 Copyright and Licensing Terms

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.

Contents


2 Acknowledgements

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

Contents


3 Introduction

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.

3.1 Purpose

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:

  • The Linux Standards Base 1.2.
  • The IEEE POSIX 1003.1-2001 specification, which supersedes the 1996 version and contains updates for Realtime, Threads and Networking.
  • The Single UNIX Specification v3, which supersedes the UNIX98 standard and was produced in conjunction with IEEE POSIX 1003.1-2001.

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:

  • To promote development of embedded Linux systems and applications,
  • To allow for scalability in those environments, based on intended uses,
  • To promote portability of embedded Linux applications,

and it will do this by

  • Using existing Linux and UNIX industry standards
  • Allowing for adaptation to existing Linux common practice
  • Breaking down the environments into recognized sets of function, for configurability.

3.2 Relationship to Other Industry Standards

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

http://www.linuxbase.org/spec/

1

POSIX.1-2001

IEEE POSIX 1003.1-2001

http://www.ieee.org

2

SUSV3

Open Group Single UNIX Specification version 3

http://www.opengroup.org

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.

3.3 How To Use This Specification

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.

3.4 Definitions

3.4.1 ELCPS

This document.

3.4.2 ELCPS-Compliant Application

An application written to reference or invoke only the system APIs and other resources specified in this document.

3.4.3 ELCPS-Conforming Implementation

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.

3.4.4 Non-ELCPS-Compliant Application

An application which has been written to reference or invoke system routines, commands, or other resources not specified in this document.

3.4.5 ELCPS Implementation Conformance

An implementation satisfying the following requirements:

  • The implementation shall provide the interface function groups specified by this document for a given environment.
  • The implementation shall provide all of the mandatory interface function groups for a given environment, in their entirety.
  • The implementation may provide one or more of the non-mandatory interface function groups in a given environment. The optional groups for which conformance is claimed, shall be provided in their entirety. The product documentation shall state which optional interface groups are provided.
  • The implementation may provide additional interfaces with different names. It may also provide additional behavior corresponding to data values outside the standard ranges, for standard named interfaces.

3.4.6 ELCPS Application Conformance

An application with the following characteristics:

  • If it requires any optional interface defined in this document in order to be installed or to execute successfully, the requirement for that optional interface is stated in the application's documentation.
  • It does not use any interface or data format that is not required to be provided by a conforming implementation, unless:
  • If such an interface or data format is supplied by another application through direct invocation of that application during execution, that application is in turn an ELCPS-compliant application.
  • The use of that interface or data format, as well as its source, is identified in the documentation of the application.
  • It must not use any values for a named interface that are reserved for vendor extensions.

3.4.7 ELCPS Strictly Conforming Application

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. 

3.5 Terminology

3.5.1 can

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.

3.5.2 implementation-defined

(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.

3.5.3 may

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.

3.5.4 must

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.

3.5.5 shall

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.

3.5.6 should

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.

3.5.7 undefined

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.

3.5.8 unspecified

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.

Contents


4 System Environments

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.

4.1 Minimal System 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.

4.2 Intermediate System Environment

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.

4.3 Full System Environment

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.

Contents


5 Environment Function Group Tables

5.1 Required Environment Function Groups

The following table represents the API function groups, and their status for each of the System Environments2:

R - Required for this Environment

P - 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.


Minimal
SE
Intermediate
SE
Full
SE

ELC_ASYNCHRONOUS_IO


R
R

ELC_C_LANG_JUMP


R
R

ELC_C_LANG_MATH



R

ELC_C_LANG_SUPPORT

R
R
R

ELC_C_LANG_SUPPORT_R

R
R
R

ELC_C_LIB_EXT


R
R

ELC_DEVICE_IO


R
R

ELC_DEVICE_SPECIFIC



R

ELC_DEVICE_SPECIFIC_R



R

ELC_DYNAMIC_LINKING


R
R

ELC_FD_MGMT


R
R

ELC_FIFO



R

ELC_FILE_ATTRIBUTES



R

ELC_FILE_SYSTEM


R
R

ELC_FILE_SYSTEM_EXT



R

ELC_FILE_SYSTEM_R


R
R

ELC_IPC


R
R

ELC_JOB_CONTROL



R

ELC_JUMP


R
R

ELC_LARGE_FILE


R
R

ELC_LSB_THREADS

L
L
L

ELC_LSB_THREADS_EXT


L
L

ELC_MEM_MGMT


R
R

ELC_MULTI_ADDR_SPACE


R
R

ELC_MULTI_PROCESS


R
R

ELC_NETWORKING



R

ELC_NETWORKING_RPC



R

ELC_PIPE


R
R

ELC_POSIX_THREADS

P
P
P

ELC_POSIX_THREADS_EXT


P
P

ELC_REGEXP



R

ELC_SHELL_FUNC



R

ELC_SIGNALS

R
R
R

ELC_SIGNAL_JUMP


R
R

ELC_SINGLE_PROCESS

R
R
R

ELC_STDIO_LOCKING

R
R
R

ELC_SYMBOLIC_LINKS



R

ELC_SYSTEM_DATABASE



R

ELC_SYSTEM_DATABASE_R



R

ELC_SYSTEM_LOGGING



R

ELC_USER_GROUPS



R

ELC_USER_GROUPS_R



R

ELC_WIDE_CHAR


R
R

ELC_WIDE_CHAR_DEVICE_IO


R
R

 

5.2 POSIX 1003.1-2001 Feature Options

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

 


Minimal
SE
Intermediate
SE
Full
SE

NGROUPS_MAX



>=8

_POSIX_CHOWN_RESTRICTED



R

_POSIX_FSYNC

R
R
R

_POSIX_JOB_CONTROL



R

_POSIX_MESSAGE_PASSING

R
R
R

_POSIX_NO_TRUNC

R
R
R

_POSIX_REGEXP



R

_POSIX_READER_WRITER_LOCKS

R
R
R

_POSIX_SAVED_IDS



R

_POSIX_VDISABLE



R

Contents


6 Interface Function Groups

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:

  • POSIX.1-2001 is a reference to IEEE POSIX 1003.1-2001, including Rationale
  • LSB1.2 is a reference to Linux Standard Base Version 1.2.0
  • SUSv3 is a reference to the Single UNIX Specification, Version 3

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.

6.1 Threads

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.

6.2 Realtime

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.

6.3 Listing of Function Groups

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.

6.3.1 ELC_ASYNCHRONOUS_IO

(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 

6.3.2 ELC_C_LANG_JUMP

(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

6.3.3 ELC_C_LANG_MATH

(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

6.3.4 ELC_C_LANG_SUPPORT

(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

6.3.5 ELC_C_LANG_SUPPORT_R

(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

6.3.6 ELC_C_LIB_EXT

(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]

6.3.7 ELC_DEVICE_IO

(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

6.3.8 ELC_DEVICE_SPECIFIC

(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

6.3.9 ELC_DEVICE_SPECIFIC_R

(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

6.3.10 ELC_DYNAMIC_LINKING

(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

6.3.11 ELC_FD_MGMT

(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

6.3.12 ELC_FIFO

(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

6.3.13 ELC_FILE_ATTRIBUTES

(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

6.3.14 ELC_FILE_SYSTEM

(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

6.3.15 ELC_FILE_SYSTEM_EXT

(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

6.3.16 ELC_FILE_SYSTEM_R

(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

6.3.17 ELC_IPC

(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

6.3.18 ELC_JOB_CONTROL

(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

6.3.19 ELC_JUMP

(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

6.3.20 ELC_LARGE_FILE

(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(),

6.3.21 ELC_LSB_THREADS

(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.

6.3.22 ELC_LSB_THREADS_EXT

(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.

6.3.23 ELC_MEM_MGMT

(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

6.3.24 ELC_MULTI_ADDR_SPACE

(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

6.3.25 ELC_MULTI_PROCESS

(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]

6.3.26 ELC_NETWORKING

(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

6.3.27 ELC_NETWORKING_RPC

(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

6.3.28 ELC_PIPE

(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

6.3.29 ELC_POSIX_THREADS

(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.

6.3.30 ELC_POSIX_THREADS_EXT

(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.

6.3.31 ELC_REGEXP

(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

6.3.32 ELC_SHELL_FUNC

(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

6.3.33 ELC_SIGNALS

(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

6.3.34 ELC_SIGNAL_JUMP

(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

6.3.35 ELC_SINGLE_PROCESS

(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

6.3.36 ELC_STDIO_LOCKING

(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

6.3.37 ELC_SYMBOLIC_LINKS

(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

6.3.38 ELC_SYSTEM_DATABASE

(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

6.3.39 ELC_SYSTEM_DATABASE_R

(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

6.3.40 ELC_SYSTEM_LOGGING

(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

6.3.41 ELC_USER_GROUPS

(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

6.3.42 ELC_USER_GROUPS_R

(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

6.3.43 ELC_WIDE_CHAR

(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

6.3.44 ELC_WIDE_CHAR_DEVICE_IO

(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

Contents


7 Feature Macros and Constants

7.1 Location

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.

7.2 Version Test Macro

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.

7.3 Constants for Environments and Function/Feature Groups

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