0% found this document useful (0 votes)
56 views189 pages

IEEE Standard For POSIX Realtime and Embedded Application

Uploaded by

wei.wuster
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
56 views189 pages

IEEE Standard For POSIX Realtime and Embedded Application

Uploaded by

wei.wuster
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 189

IEEE Std 1003.

13™-2003
(Revision of
IEEE Standards IEEE Std 1003.13-1998)

1003.13 TM

IEEE Standard for Information


Technology—
Standardized Application Environment
Profile (AEP)—POSIX® Realtime and
Embedded Application Support

IEEE Computer Society


Sponsored by the
Portable Applications Standards Committee

10 September 2004
Print: SH95191
3 Park Avenue, New York, NY 10016-5997, USA PDF: SS95191

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
Recognized as an IEEE Std 1003.13™-2003
American National Standard (ANSI) (Revision of
IEEE Std 1003.13-1998)

IEEE Standard for Information


Technology—
Standardized Application Environment
Profile (AEP)—POSIX® Realtime and
Embedded Application Support

Sponsor
Portable Applications Standards Committee
of the
IEEE Computer Society

Approved 12 May 2004


American National Standards Institute

Approved 10 December 2003


IEEE-SA Standards Board

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
Abstract: This standard is part of the POSIX series of standardized profiles for open systems.
It defines environment profiles for portable realtime and embedded applications.
Keywords: AEP, application portability, data processing environment, embedded, open sys-
tems, operating system, portable application, POSIX profiles, realtime, realtime application
environments

MS-DOS is a registered trademark of Microsoft Corporation.


QNX is a registered trademark of QNX Software Systems, Ltd.
POSIX is a registered trademark of the Institute of Electrical and Electronics Engineers,
Incorporated.
pSOS is a registered trademark of Wind River Systems, Inc.
RTLinux is a product of FSMLabs, Inc.
RT-11 is a trademark of Mentec Inc.
RSX-11M is a trademark of Mentec Inc.
RTEMS is free software developed by OAR Corporation for the U.S. Army Missile Command.
UNIX is a registered trademark of The Open Group.
VRTX32 is a registered trademark of Mentor Graphics Corporation.
VxWorks is a registered trademark of Wind River Systems, Inc.

The Institute of Electrical and Electronics Engineers, Inc.


3 Park Avenue, New York, NY 10016-5997, USA

Copyright © 2004 by the Institute of Electrical and Electronics Engineers, Inc.


All rights reserved. Published 10 September 2004. Printed in the United States of America.

IEEE is a registered trademark in the U.S. Patent & Trademark Office, owned by the Institute of Electrical and Elec-
tronics Engineers, Incorporated.

Print: ISBN 0-7381-3885-1 SH95191


PDF: ISBN 0-7381-3886-X SS95191

No part of this publication may be reproduced in any form, in an electronic retrieval system or otherwise, without the
prior written permission of the publisher.

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
IEEE Standards documents are developed within the IEEE Societies and the Standards Coordinating Committees of
the IEEE Standards Association (IEEE-SA) Standards Board. The IEEE develops its standards through a consensus
development process, approved by the American National Standards Institute, which brings together volunteers repre-
senting varied viewpoints and interests to achieve the final product. Volunteers are not necessarily members of the
Institute and serve without compensation. While the IEEE administers the process and establishes rules to promote
fairness in the consensus development process, the IEEE does not independently evaluate, test, or verify the accuracy
of any of the information contained in its standards.

Use of an IEEE Standard is wholly voluntary. The IEEE disclaims liability for any personal injury, property or other
damage, of any nature whatsoever, whether special, indirect, consequential, or compensatory, directly or indirectly
resulting from the publication, use of, or reliance upon this, or any other IEEE Standard document.

The IEEE does not warrant or represent the accuracy or content of the material contained herein, and expressly dis-
claims any express or implied warranty, including any implied warranty of merchantability or fitness for a specific pur-
pose, or that the use of the material contained herein is free from patent infringement. IEEE Standards documents are
supplied “AS IS.”

The existence of an IEEE Standard does not imply that there are no other ways to produce, test, measure, purchase,
market, or provide other goods and services related to the scope of the IEEE Standard. Furthermore, the viewpoint
expressed at the time a standard is approved and issued is subject to change brought about through developments in the
state of the art and comments received from users of the standard. Every IEEE Standard is subjected to review at least
every five years for revision or reaffirmation. When a document is more than five years old and has not been reaf-
firmed, it is reasonable to conclude that its contents, although still of some value, do not wholly reflect the present state
of the art. Users are cautioned to check to determine that they have the latest edition of any IEEE Standard.

In publishing and making this document available, the IEEE is not suggesting or rendering professional or other ser-
vices for, or on behalf of, any person or entity. Nor is the IEEE undertaking to perform any duty owed by any other
person or entity to another. Any person utilizing this, and any other IEEE Standards document, should rely upon the
advice of a competent professional in determining the exercise of reasonable care in any given circumstances.
Interpretations: Occasionally questions may arise regarding the meaning of portions of standards as they relate to spe-
cific applications. When the need for interpretations is brought to the attention of IEEE, the Institute will initiate action
to prepare appropriate responses. Since IEEE Standards represent a consensus of concerned interests, it is important to
ensure that any interpretation has also received the concurrence of a balance of interests. For this reason, IEEE and the
members of its societies and Standards Coordinating Committees are not able to provide an instant response to interpre-
tation requests except in those cases where the matter has previously received formal consideration. At lectures, sym-
posia, seminars, or educational courses, an individual presenting information on IEEE standards shall make it clear that
his or her views should be considered the personal views of that individual rather than the formal position, explanation,
or interpretation of the IEEE.

Comments for revision of IEEE Standards are welcome from any interested party, regardless of membership affiliation
with IEEE. Suggestions for changes in documents should be in the form of a proposed change of text, together with
appropriate supporting comments. Comments on standards and requests for interpretations should be addressed to:
Secretary, IEEE-SA Standards Board
445 Hoes Lane
Piscataway, NJ 08854 USA
NOTE−Attention is called to the possibility that implementation of this standard may require use of subject
matter covered by patent rights. By publication of this standard, no position is taken with respect to the exist-
ence or validity of any patent rights in connection therewith. The IEEE shall not be responsible for identifying
patents for which a license may be required by an IEEE standard or for conducting inquiries into the legal valid-
ity or scope of those patents that are brought to its attention.

Authorization to photocopy portions of any individual standard for internal or personal use is granted by the Institute
of Electrical and Electronics Engineers, Inc., provided that the appropriate fee is paid to Copyright Clearance Center.
To arrange for payment of licensing fee, please contact Copyright Clearance Center, Customer Service, 222 Rosewood
Drive, Danvers, MA 01923 USA; +1 978 750 8400. Permission to photocopy portions of any individual standard for
educational classroom use can also be obtained through the Copyright Clearance Center.

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
Contents

PAGE

List of Figures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vii

List of Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . viii

Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . x

Section 1: Overview. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.1 Scope . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2 Taxonomy Position . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2.1 Rationale for Positioning (informative) . . . . . . . . . . . . . . . . . . . . . . . . 2
1.3 Realtime System Profiles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.3.1 Minimal Realtime System Profile (PSE51) . . . . . . . . . . . . . . . . . . . . . 2
1.3.2 Realtime Controller System Profile (PSE52) . . . . . . . . . . . . . . . . . . . 3
1.3.3 Dedicated Realtime System Profile (PSE53). . . . . . . . . . . . . . . . . . . . 3
1.3.4 Multi-Purpose Realtime System Profile (PSE54) . . . . . . . . . . . . . . . . 3
1.4 Units of Functionality. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.5 Development Environment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.6 Summary of Profile Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

Section 2: Normative References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23


2.1 Normative References. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

Section 3: Terms and Definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25


3.1 Terminology . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.2 Definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.3 Rationale for Definitions (informative) . . . . . . . . . . . . . . . . . . . . . . . . . . 28

Section 4: Conventions and Abbreviations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31


4.1 Conventions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
4.2 Abbreviations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

Section 5: Conformance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
5.1 Conformance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
5.1.1 Implementation Conformance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
5.1.2 Application Conformance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

Section 6: Minimal Realtime System Profile (PSE51) . . . . . . . . . . . . . . . . . . . . . 37


6.1 Introduction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
6.1.1 Identification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
6.1.2 Conformance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
6.1.3 Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
6.1.4 The Compilation Environment (C language option) . . . . . . . . . . . . . 38

COPYRIGHT © 2004 IEEE. ALL RIGHTS RESERVED.

iv

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
6.2 Operating System Interface Requirements. . . . . . . . . . . . . . . . . . . . . . . 39
6.2.1 POSIX.1 Interfaces (C Language Option) . . . . . . . . . . . . . . . . . . . . . 39
6.2.2 POSIX.26 Interfaces (C Language Option) . . . . . . . . . . . . . . . . . . . . 40
6.2.3 POSIX.5c Interfaces (Ada Language Option) . . . . . . . . . . . . . . . . . . 40
6.3 Application Constraints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
6.3.1 Constraints related to POSIX.1 Interfaces (C Language Option) . . 42
6.3.2 Constraints related to POSIX.5c Interfaces
(Ada Language Option). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
6.4 Shell and Utility Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
6.5 Development Platform Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
6.5.1 C Language Development Option . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
6.5.2 Ada Language Development Option . . . . . . . . . . . . . . . . . . . . . . . . . 45
6.6 Rationale for Operating System Requirements (informative) . . . . . . . . 46
6.6.1 Operating System Interface Requirements. . . . . . . . . . . . . . . . . . . . 46
6.6.2 Shell and Utility Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
6.6.3 Development Platform Requirements . . . . . . . . . . . . . . . . . . . . . . . . 54

Section 7: Realtime Controller System Profile (PSE52) . . . . . . . . . . . . . . . . . . . . 55


7.1 Introduction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
7.1.1 Identification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
7.1.2 Conformance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
7.1.3 Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
7.1.4 The Compilation Environment (C language option) . . . . . . . . . . . . . 56
7.2 Operating System Interface Requirements. . . . . . . . . . . . . . . . . . . . . . . 57
7.2.1 POSIX.1 Interfaces (C language Option). . . . . . . . . . . . . . . . . . . . . . 57
7.2.2 POSIX.26 Interfaces (C Language Option) . . . . . . . . . . . . . . . . . . . . 58
7.2.3 POSIX.5c Interfaces (Ada Language Option) . . . . . . . . . . . . . . . . . . 59
7.3 Application Constraints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
7.3.1 Constraints Related to POSIX.1 Interfaces (C Language Option). . 61
7.3.2 Constraints related to POSIX.5c Interfaces
(Ada Language Option). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
7.4 Shell and Utility Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
7.5 Development Platform Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
7.5.1 C Language Development Option . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
7.5.2 Ada Language Development Option . . . . . . . . . . . . . . . . . . . . . . . . . 63
7.6 Rationale for Operating System Requirements (informative) . . . . . . . . 63
7.6.1 Operating System Interface Requirements. . . . . . . . . . . . . . . . . . . . 63
7.6.2 Shell and Utility Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
7.6.3 Development Platform Requirements . . . . . . . . . . . . . . . . . . . . . . . . 72

Section 8: Dedicated Realtime System Profile (PSE53) . . . . . . . . . . . . . . . . . . . . 73


8.1 Introduction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
8.1.1 Identification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
8.1.2 Conformance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
8.1.3 Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
8.1.4 The Compilation Environment (C language option) . . . . . . . . . . . . . 74
8.2 Operating System Interface Requirements. . . . . . . . . . . . . . . . . . . . . . . 75
8.2.1 POSIX.1 Interfaces (C Language Option) . . . . . . . . . . . . . . . . . . . . . 75
8.2.2 POSIX.26 Interfaces (C Language Option) . . . . . . . . . . . . . . . . . . . . 77

COPYRIGHT © 2004 IEEE. ALL RIGHTS RESERVED.

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
8.2.3 POSIX.5c Interfaces (Ada Language Option) . . . . . . . . . . . . . . . . . . 77
8.3 Application Constraints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
8.3.1 Constraints related to POSIX.1 Interfaces (C Language Option) . . 79
8.3.2 Constraints related to POSIX.5c Interfaces
(Ada Language Option). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
8.4 Shell and Utility Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
8.5 Development Platform Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
8.5.1 C Language Development Option . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
8.5.2 Ada Language Development Option . . . . . . . . . . . . . . . . . . . . . . . . . 81
8.6 Rationale for Operating System Requirements (informative) . . . . . . . . 81
8.6.1 Operating System Interface Requirements. . . . . . . . . . . . . . . . . . . . 81
8.6.2 Shell and Utility Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
8.6.3 Development Platform Requirements . . . . . . . . . . . . . . . . . . . . . . . . 90

Section 9: Multi-Purpose Realtime System Profile (PSE54) . . . . . . . . . . . . . . . . 91


9.1 Introduction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
9.1.1 Identification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
9.1.2 Conformance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
9.1.3 Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
9.1.4 The Compilation Environment (C language option) . . . . . . . . . . . . . 92
9.2 Operating System Interface Requirements. . . . . . . . . . . . . . . . . . . . . . . 93
9.2.1 POSIX.1 Interfaces (C Language Option) . . . . . . . . . . . . . . . . . . . . . 93
9.2.2 POSIX.26 Interfaces (C Language Option) . . . . . . . . . . . . . . . . . . . . 95
9.2.3 POSIX.5c Interfaces (Ada Language Option) . . . . . . . . . . . . . . . . . . 95
9.3 Application Constraints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
9.3.1 Constraints Related to POSIX.1 Interfaces (C Language Option). . 97
9.3.2 Constraints Related to POSIX.5c Interfaces
(Ada Language Option). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
9.4 Shell and Utility Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
9.5 Development Platform Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
9.5.1 C Language Development Option . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
9.5.2 Ada Language Development Option . . . . . . . . . . . . . . . . . . . . . . . . . 99
9.6 Rationale for Operating System Requirements (informative) . . . . . . . 100
9.6.1 Operating System Interface Requirements. . . . . . . . . . . . . . . . . . . 100
9.6.2 Shell and Utility Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
9.6.3 Development Platform Requirements . . . . . . . . . . . . . . . . . . . . . . . 108

Annex A: POSIX Profiles Package (Ada Language). . . . . . . . . . . . . . . . . . . . . . 109

Annex B: Description of Optional Interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . 111


B.1 POSIX.1 Options. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
B.2 POSIX.5c Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120

Annex C: Bibliography . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123


C.1 Related Open Systems Standards . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
C.2 Other Documents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123

Alphabetic Topical Index. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125

COPYRIGHT © 2004 IEEE. ALL RIGHTS RESERVED.

vi

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
List of Figures

Figure I.1 — Main Building Blocks of the Profiles. . . . . . . . . . . . . . . . . . xvii

Copyr igh t © 2004 IE E E . All r igh t s r eser ved.

vii

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
List of Tables

Table 1-1 — POSIX.1 Units of Functionality . . . . . . . . . . . . . . . . . . . . . . . . 5


Table 1-2 — POSIX.5 Units of Functionality (Ada Language Support) . . 10
Table 1-3 — POSIX.5 Units of Functionality (Device IO) . . . . . . . . . . . . . 11
Table 1-4 — POSIX.5 Units of Functionality (Device Specific) . . . . . . . . . 11
Table 1-5 — POSIX.5 Units of Functionality (Event Management) . . . . . 12
Table 1-6 — POSIX.5 Units of Functionality (FD Management) . . . . . . . 12
Table 1-7 — POSIX.5 Units of Functionality (FIFO) . . . . . . . . . . . . . . . . . 12
Table 1-8 — POSIX.5 Units of Functionality (File Attributes) . . . . . . . . . 12
Table 1-9 — POSIX.5 Units of Functionality (File System) . . . . . . . . . . . 13
Table 1-10 — POSIX.5 Units of Functionality (Job Control). . . . . . . . . . . 13
Table 1-11 — POSIX.5 Units of Functionality (Multi-Process) . . . . . . . . . 14
Table 1-12 — POSIX.5 Units of Functionality (Networking) . . . . . . . . . . 14
Table 1-13 — POSIX.5 Units of Functionality (Pipes) . . . . . . . . . . . . . . . . 14
Table 1-14 — POSIX.5 Units of Functionality (Signals) . . . . . . . . . . . . . . 15
Table 1-15 — POSIX.5 Units of Functionality (Single Process) . . . . . . . . 15
Table 1-16 — POSIX.5 Units of Functionality (System Database) . . . . . . 16
Table 1-17 — POSIX.5 Units of Functionality (User Groups) . . . . . . . . . . 16
Table 1-18 — Units of Functionality Requirements . . . . . . . . . . . . . . . . . 17
Table 1-19 — POSIX.1 Option Requirements . . . . . . . . . . . . . . . . . . . . . . 18
Table 1-21 — POSIX.1 Options vs. POSIX.5c Options . . . . . . . . . . . . . . . 20
Table 1-20 — Requirements for Other Standards . . . . . . . . . . . . . . . . . . . 20
Table 6-1 — POSIX.1 Units of Functionality Requirements . . . . . . . . . . . 39
Table 6-2 — POSIX.1 Option Requirements . . . . . . . . . . . . . . . . . . . . . . . 39
Table 6-3 — POSIX.5c Units of Functionality Requirements . . . . . . . . . . 40
Table 6-4 — POSIX.5c Option Requirements. . . . . . . . . . . . . . . . . . . . . . . 41
Table 6-5 — Functions required to be async-signal-safe . . . . . . . . . . . . . . 42
Table 7-1 — POSIX.1 Units of Functionality Requirements . . . . . . . . . . . 57
Table 7-2 — POSIX.1 Option Requirements . . . . . . . . . . . . . . . . . . . . . . . 57
Table 7-3 — POSIX.5c Units of Functionality Requirements . . . . . . . . . . 59
Table 7-4 — POSIX.5c Option Requirements. . . . . . . . . . . . . . . . . . . . . . . 59
Table 7-5 — Functions required to be async-signal-safe . . . . . . . . . . . . . . 61
Table 8-1 — POSIX.1 Units of Functionality Requirements . . . . . . . . . . . 75
Table 8-2 — POSIX.1 Option Requirements . . . . . . . . . . . . . . . . . . . . . . . 75
Table 8-3 — POSIX.5c Units of Functionality Requirements . . . . . . . . . . 77
Table 8-4 — POSIX.5c Option Requirements. . . . . . . . . . . . . . . . . . . . . . . 77
Table 9-1 — POSIX.1 Units of Functionality Requirements . . . . . . . . . . . 93
Table 9-2 — POSIX.1 Option Requirements . . . . . . . . . . . . . . . . . . . . . . . 94
Table 9-3 — POSIX.1 Units of Functionality Requirements . . . . . . . . . . . 95

Copyr igh t © 2004 IE E E . All r igh t s r eser ved.

viii

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
Table 9-4 — POSIX.5c Option Requirements. . . . . . . . . . . . . . . . . . . . . . . 96
Table 9-5 — Shell and Utilities Option Requirements
(C Language Option) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
Table 9-6 — Shell and Utilities Option Requirements
(Ada Language Option) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
Table B-1 — Functions under each POSIX.1
System Interface Option . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
Table B-2 — Utilities under each POSIX.1 Shell
and Utilities Option . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
Table B-3 — Packages and Subprograms under
Each POSIX.5c Option. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120

Copyr igh t © 2004 IE E E . All r igh t s r eser ved.

ix

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
Introduction

(This introduction is not a normative part of IEEE Std 1003.13™-2003, IEEE Standard for
Information Technology—Standardized Application Environment Profile (AEP)—POSIX® Realtime
and Embedded Application Support.)

The purpose of this standard is to define realtime and embedded application


environments based on the ISO/IEC 9945 series of standards. It is intended for
realtime systems implementors and realtime applications software developers.
This standard is a revision of IEEE Std 1003.13-1998, where four realtime
application environment profiles (or POSIX subsets) are defined. The goal of this
revision is to update each of the four profiles according to implementation
experience and to add the services defined in the following, newly approved POSIX
standards:
— ISO/IEC 9945:2003 {3} (identical to IEEE Std 1003.1™-2003)
— IEEE 1003.26™-2003 {4}
— ISO/IEC 14519:2001 {5}
The base standard, ISO/IEC 9945:2003 {3}, allows profiling standards supporting
functional requirements less than those required in the full base standard to
subset both mandatory and optional functionality required for POSIX
Conformance (see the Base Definitions volume of POSIX.1 {3}, Section 2.1.5.1).
POSIX.13 articulates these subprofiling options through Units of Functionality,
defined herein, and by use of named options defined in the base standard.
This standard specifies realtime profiles both for the C language and for the Ada
language options. Because Ada Bindings to ISO/IEC 9945:2003 {3} are currently
under development, the C language option contains more services than the Ada
language option in the current draft. If these Ada Bindings are completed before
this proposed standard is sent to ballot, the draft will be amended to incorporate
them. Otherwise, an amendment of IEEE Std 1003.13-2003 will be produced in the
future, to incorporate the added Ada language services.
This standard is designed to support building systems where not all the
interconnected boxes use the same profile, for example, a hierarchical system
where the bottom-level device controllers use the “minimal” profile, the next level
up follows the larger “control” profile, and so on. There are interfaces called out for
the smaller profiles that make no sense in an isolated box; those interfaces are
there solely to support the construction of heterogeneous systems and systems of
communicating peers. Such systems are very common in practice.
To summarize, this standard is embedded in a much larger and widely supported
set of standards, which yields benefits during code development, as much

Copyright © 2004 IEEE. All rights reserved.

x Introduction

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
development and testing is done on the larger and more comfortable systems. It
also may be used in the construction of large and heterogeneous systems.
Four profiles have been defined to reflect the wide range of system requirements
presented by realtime designs. The intent is to provide a meaningful and coherent
set of interfaces that will provide software vendors and consumers with a uniform
framework for describing and specifying operating system capabilities. This allows
an application writer to construct an application that may be easily moved to a
different system that supports the same profile. Similarly, it allows a vendor to
claim conformance with an established standard, even if that vendor’s
implementation does not support the full POSIX feature set.
Initially, the focus of this standard is to provide standardized environments
supporting the C language. Options are provided for bindings to the Ada
programming language as well as for the C language. Bindings for other languages
to these services may be developed and this standard will be updated as
appropriate.
Within this standard, the term “POSIX.13” refers to this standard, IEEE Std
1003.13-2003.

Organization of this Standard

This standard is divided into nine elements:


(1) Overview (Section 1)
(2) Normative references (Section 2)
(3) Terms and definitions (Section 3)
(4) Conventions and abbreviations (Section 4)
(5) Conformance (Section 5)
(6) The various realtime profiles (Section 6, Section 7, Section 8, and Section 9)
(7) The POSIX Profiles package in Ada (Annex A)
(8) A description of the optional interfaces of the base standards (Annex B)
(9) Bibliography (Annex C)
References are provided to direct the reader to other related sections.
Informative annexes are not normative parts of the standard and are provided for
information only. They are provided for guidance and to help understanding.

Copyright © 2004 IEEE. All rights reserved.

Introduction xi

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
Base Documents

The various realtime application environments described herein are based on the
ISO/IEC 9945 and IEEE 1003 family of documents as well as ISO 9899 (C99
Language) and 8652 (Ada95 Language).

Scenario

This standard is based directly on existing small and/or realtime [typically non-
UNIX®1)] kernel practice as well as the growing body of practice with POSIX
conformant kernels having realtime features. The general approach taken in
this standard is to specify interfaces (taken from POSIX) sufficient to deliver
the functionality typical of current realtime systems (see Table 1-18 through
Table 1-21).
Each profile is specified with full features, to give users clear direction. Vendors
may provide means to configure out those parts that are not needed by specific
applications. Vendors wishing to expand on the specified profiles are strongly
encouraged to take the added interfaces from other POSIX.13 profiles 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.

Audience

The intended audience for this class of profiles is all persons concerned with an
industry-wide standard realtime application environment based on the POSIX
suite of standards. This includes at least four groups of people:
(1) Persons buying hardware and software systems.
(2) Persons managing companies that are deciding on future corporate comput-
ing directions.
(3) Persons implementing realtime operating systems.
(4) Persons developing realtime applications where portability is a primary
objective.

1) UNIX is a registered trademark of The Open Group.

Copyright © 2004 IEEE. All rights reserved.

xii Introduction

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
Rationale on Background

This clause contains rationale common to all four realtime profiles.


The developers of POSIX.13 represent a cross section of hardware manufacturers,
vendors of operating systems and other software development tools, software
designers, consultants, academics, authors, applications programmers, and
others. In the course of their deliberations, the developers reviewed related U.S.
and international standards, both published and in progress.
Conceptually, POSIX.13 describes a set of application environment profiles (AEPs)
needed for the construction and execution of portable realtime application
programs.
The developers of this standard have tried to capture the functionality of existing
realtime systems in a reasonable number of profiles that specify predominate
application environments. It is felt that these profiles, although not optimum, are
a best fit to existing classes of applications and systems.
Features of several commercial realtime kernels were considered during the
development of the 1998 version of POSIX.13. These included pSOS™,2)
VRTX32®,3) and VxWorks®.4) Since these products were commercially successful,
they must have addressed a significant market segment. In addition, the
uniprocessor subset of VITA’s ORKID specification, NGCR’s “Tiny Real Time”
(TRT), and the uITRON specification were examined. These were all proposed
standard interfaces for small realtime embedded systems.
Features of other commercial realtime kernels such as RTLinux5) and QNX®,6) as
well as free software products such as RTEMS7) were considered during the
development of the current revision of POSIX.13.
The following is a list of features that are representative of current realtime
systems and highlights the range of system requirements. While some concepts are
common to virtually all implementations (e.g., preemptive, priority-based
scheduling), some only apply to smaller systems (e.g., a single address space), and
some only to more full-featured systems (e.g., network support, self-hosting).

Basic Realtime Multitasking and Synchronization

— Multiple flows of control


— Preemptive priority scheduling of flows of control
— One address space for all flows of control

2) pSOS is a registered trademark of Wind River Systems, Inc.


3) VRTX32 is a registered trademark of Mentor Graphics Corporation.
4) VxWorks is a registered trademark of Wind River Systems, Inc.
5) RTLinux is a product of FSMLabs, Inc.
6) QNX is a registered trademark of QNX Software Systems, Ltd.
7) RTEMS is free software developed by OAR Corporation for the U.S. Army Missile Command.

Copyright © 2004 IEEE. All rights reserved.

Introduction xiii

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
— Direct control of location of memory areas
— Inter-thread communications mechanism via message passing
(queues)
— Binary and counting semaphores, without priority inheritance
— Mutual exclusion, with optional priority inheritance or priority ceiling
protocols
— Local or global event flags (one thread awaits multiple things)
— Multiple memory areas, with both fixed- and variable-sized block allo-
cation policies
— System time in units of clock ticks
— Timeouts on all blocking services in units of clock ticks
— Hardware interrupt control and support for user interrupt handlers
— Signals
— Exception handling
— Minimal synchronous I/O interface: open(), close(), read(), write(),
ioctl(), posix_devctl()
— Debugger interface
— No memory protection
— Application runs in privileged (supervisor) mode, if applicable
— Direct I/O, rather than via kernel
— System executable size and memory requirements are major
constraints

I/O

Realtime systems supporting I/O generally provide the following features:


— Named I/O devices
— Support for serial I/O lines
— Pipes
— Installable user device drivers
— Memory-mapped I/O

Copyright © 2004 IEEE. All rights reserved.

xiv Introduction

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
Local File System

Realtime systems supporting a file system generally provide the following


features:
— Named files
— Hierarchical file system (directories)
— Contiguous preallocation of disk space
— May provide media compatibility with another file system [e.g.,
MSDOS®8) or RT-11™9)]
— No user IDs or file protection
Historically, file systems for embedded realtime systems typically have
had a one-level name space, contiguous allocation of disk space, and rela-
tively short filenames. They have not supported an arbitrary hierarchy of
named directories, non-contiguous allocation of disk space, or long file-
names. They may have had numbered directories [e.g., RSX-11M™10)], or
only contiguous allocation of disk space (e.g., RT-11™)
However, recent commercial offerings have supported multilevel named
directories and both contiguous and non-contiguous disk space allocation.
In these implementations, the support of these features with potentially
nondeterministic performance does not preclude an application from
restricting itself to features with deterministic performance. For example,
it is still possible to use contiguous files exclusively. Because it is relatively
easy to implement both, and need not interfere with deterministic perfor-
mance, the working group did not make a distinction between realtime
and time-sharing file systems in this AEP.
Although few embedded systems had a hard drive and a file system,
present flash memory technology has enabled embedded systems, even
those with strict vibration requirements, to have a file system resident on
this kind of nonvolatile media. This has caused the POSIX.13 profile
designed for large embedded systems, the Dedicated Realtime System Pro-
file (PSE53), to incorporate a simplified file system in this new revision of
the standard.
Traditional implementations of POSIX.1 file systems employ a disk buffer
cache to improve average performance by reducing the number of physical
media accesses and by reordering the accesses to take advantage of the
characteristics of rotating media. These implementations have not made a
distinction between the buffering of data transfers [read() and write()], and
directory operations [creat(), link(), unlink(), mkdir(), rmdir(), rename()]. A
result of this is that a system crash at an unexpected moment can leave

8) MS-DOS is a registered trademark of Microsoft Corporation.


9) RT-11 is a trademark of Mentec Inc.
10) RSX-11M is a trademark of Mentec Inc.

Copyright © 2004 IEEE. All rights reserved.

Introduction xv

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
the file system in a corrupted state. This situation is usually corrected at
the next system reboot by a file system checker and recovery program,
such as fsck. The checking and correcting of a corrupted file system may
take a long and variable amount of time to perform, may require a human
operator to monitor and control its progress, and may nonetheless fail to
repair the file system. Any one of these characteristics would make a file
system check unacceptable for some embedded realtime applications. It
was therefore suggested that such applications limit their use of directory
operations to safe times, and that implementations maintain the file sys-
tem in such a way that a file system check during reboot is avoided. This
was considered, but rejected on the grounds that not all applications would
require the capability, and that it was neither specifiable nor testable.

Network Communication

Realtime systems supporting networking generally provide the following


features:
— Compatibility with a protocol stack (e.g., TCP/IP)
— May support applications such as FTP, TELNET, TFTP, rcp

Distributed File System

Realtime systems supporting a distributed (non-local) file system gener-


ally provide the following features:
— Remote access to a file system
— Performance not realtime

Memory Protection

Realtime systems supporting memory protection (typically requiring a


memory management unit) generally provide the following features:
— Memory mapping and protection
— Ability to map to special areas of memory (I/O page, frame buffer)
— Typically do not have demand paging for realtime parts

Multiprocessor Support

Realtime systems supporting multiprocessing generally provide one of the


following methods:
— network
Non-transparent access to remote objects, remote procedure calls
— distributed
Transparent access to objects, no load-balancing

Copyright © 2004 IEEE. All rights reserved.

xvi Introduction

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
— symmetric
Presence of a global task scheduling queue (may also have local sched-
uling queues)

Self-Hosting

Realtime systems supporting the capability for program development, text


editing, compilation, etc., generally provide the following features:
— Shell
— Text editor
— Compiler, assembler, linker, debugger
— May have user ID protection
Only the larger profiles (i.e., PSE54) are likely to be self-hosted.

Overview of the Profiles Structure (Rationale)

This clause contains rationale common to all four realtime profiles.


The four profiles defined in this standard are designed to make applications
upwards compatible to higher profiles. Figure I.1 shows the main building blocks
of each of the four profiles specified in this standard. Please note that the full
differences between the different profiles are more complex than those appearing
on this figure. See 1.6 for a full description of the differences between the profiles.

Multi-Purpose
Asynchronous Multiple
Networking I/O Processes Shell &
Utilities

Message
Queues Multiple
Simple Users
File System
Dedicated
Tracing
Full
File System
Minimal

Core Controller
Others

Figure I.1 — Main Building Blocks of the Profiles

Copyright © 2004 IEEE. All rights reserved.

Introduction xvii

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
The “core” building block in Figure I.1 refers to the Units of Functionality and
options required in all four profiles. See 6.2 for a description of the core services.
Profiles with only one implicit process (PSE51 and PSE52) are shaded in the
figure, to highlight this major difference with the larger profiles, which require
support for multiple processes (and thus require having an MMU).

Related Standards Activities

Activities to extend this standard to address additional requirements are in


progress, and similar efforts can be anticipated in the future.
The following areas are under active consideration at this time or are expected to
become active in the near future11):
(1) Additional system application program interfaces (APIs) in C language
(2) Ada language bindings
(3) Additional realtime facilities
(4) Fault tolerance
(5) Profiles describing application- or user-specific combinations of Open Sys-
tems standards
If you have interest in participating in the Portable Application Standards
Committee (PASC) working groups addressing these issues, please send your
name, address, and telephone number to
Secretary, IEEE Standards Board
Institute of Electrical and Electronics Engineers, Inc.
445 Hoes Lane
Piscataway, NJ 08854
USA
When writing, ask to have your letter forwarded to the chair of the appropriate
PASC working group.
If you have interest in participating in this work at the international level, contact
your ISO/IEC national body.

11) A Standards Status Report that lists all current IEEE Computer Society standards projects is available from
the IEEE Computer Society, 1730 Massachusetts Avenue NW, Washington, DC 20036-1903; Telephone: +1
202 371-0101; FAX: +1 202 728-9614. Working drafts of POSIX standards under development are available
from the Institute of Electrical and Electronics Engineers, Inc., 445 Hoes Lane, Piscataway, NJ 08854 (http:/
/www.standards.ieee.org/).

Copyright © 2004 IEEE. All rights reserved.

xviii Introduction

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
Notice to Users

Errata

Errata, if any, for this and all other standards can be accessed at the
following URL: http://standards.ieee.org/reading/ieee/updates/errata/
index.html. Users are encouraged to check this URL for errata
periodically.

Interpretations

Current interpretations can be accessed at the following URL: http:/stan-


dards.ieee.org/reading/ieee/interp/index.html.

Patents

Attention is called to the possibility that implementation of this standard


may require use of subject matter covered by patent rights. By publication
of this standard, no position is taken with respect to the existence or valid-
ity of any patent rights in connection therewith. The IEEE shall not be
responsible for identifying patents or patent applications for which a
license may be required by to implement an IEEE standard or for conduct-
ing inquiries into the legal validity or scope of those patents that are
brought to its attention.

Participants in the 2003 Version

IEEE Std 1003.13-2003 was prepared by the System Services Working Group—
Realtime, sponsored by the Portable Application Standards Committee of the
IEEE Computer Society. At the time this standard was approved, the membership
of the System Services Working Group—Realtime was as follows:

Portable Application Standards Committee

Chair: Lowell G. Johnson


Vice Chair: Joseph M. Gwinn
Functional Vice Chairs: Jay Ashford
Andrew Josey
Curtis Royster, Jr.
Secretary: Nick Stoughton

Copyright © 2004 IEEE. All rights reserved.

Introduction xix

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
IEEE System Services Working Group—Realtime

Chair: Joseph M. Gwinn


Secretary: Karen D. Gordon
Technical Editor: Michael González
Ballot Coordinator: James T. Oblinger
Technical Reviewer: Michael González

Working Group
At the time this standard was completed, the IEEE System Services Working
Group—Realtime had the following members:

Pierre-Jean Arcos Dave Emery François Riche


Ted Baker Andrew Josey Doug Robinson
Bob Barned Jim Litchfield Greg Shelton
Donald Cragun Franklin C. Prindle Peter van der Veen
Ray Richards

Balloting Committee
The following members of the individual balloting committee voted on this
standard. Balloters may have voted for approval, disapproval, or abstention.
Alejandro Alonso Scott Gudgel François Riche
Pierre-Jean Arcos Joseph M. Gwinn John Riley
Mario Barbacci Barry Hedquist Curtis Royster, Jr.
Mitchell Bonnett Charles Hammons Diane Schleicher
Mark Brown Karl Heubaum Stephen Schwarm
Paul Buerger Lowell G. Johnson Yuriy Sheynin
Donald Cragun Andrew Josey Gil Shultz
John Davies Joerg Kampmann Keld Simonsen
Juan Antonio de la Puente Bill LaPlant Arun Subbarao
Sourav Dutta Roger J. Martin Mark-Rene Uchida
Yaacov Fenster George Miao Srinivasa Vemuru
Michel Gien James T. Oblinger Rina Walach
Michael González Peter Petrov Oren Yuen
Karen D. Gordon Franklin C. Prindle Janusz Zalewski
Vikram Punj

Copyright © 2004 IEEE. All rights reserved.

xx Introduction

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
When the IEEE-SA Standards Board approved this standard on 10 December
2003, it had the following membership:
Don Wright, Chair
Howard M. Frazier, Vice Chair
Judith Gorman, Secretary
H. Stephen Berger Donald N. Heirman Daleep C. Mohla
Joseph A. Bruder Laura Hitchcock William J. Moylan
Bob Davis Richard H. Hulett Paul Nikolich
Richard DeBlasio Anant Kumar Jain Gary S. Robinson
Julian Forster* Lowell G. Johnson Malcolm V. Thaden
Toshio Fukuda Joseph L. Koepfinger* Geoffrey O. Thompson
Arnold M. Greenspan Tom McGean Doug Topping
Raymond Hapeman Steve M. Mills Howard L. Wolfman

*Member Emeritus

Also included are the following nonvoting IEEE-SA Standards Board liaisons:

Alan Cookson, NIST Representative


Satish K. Aggarwal, NRC Representative

Savoula Amanatidis
IEEE Standards Managing Editor

Participants in the 1998 Version

IEEE Std 1003.13-1998 was prepared by the System Services Working Group—
Realtime, sponsored by the Portable Application Standards Committee of the
IEEE Computer Society. At the time this standard was approved, the membership
of the System Services Working Group—Realtime was as follows:

Portable Application Standards Committee

Chair: Lowell G. Johnson


Vice Chair: Joseph M. Gwinn
Functional Vice Chairs: Jay Ashford
Andrew Josey
Curtis Royster, Jr.
Secretary: Nick Stoughton

Copyright © 2004 IEEE. All rights reserved.

Introduction xxi

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
IEEE System Services Working Group—Realtime

Chair: Joseph M. Gwinn


Susan Corwin (to 1995)
Secretary: Karen D. Gordon
Franklin C.Prindle (1996)
Lee Schermerhorn (to 1994)
Technical Editor: Bob Luken
Ballot Coordinators: Andrew E. Wheeler, Jr.
James T. Oblinger
Technical Reviewers: Andrew E. Wheeler, Jr.
Joseph M. Gwinn
Karen D. Gordon

Working Group
Ray Alderman Michael Feustel Dave Lunger
Larry Anderson Bill Gallmeister Bill Maes
Pierre-Jean Arcos Michael González James T. Oblinger
Charles R. Arnold Karen D. Gordon Offer Pazy
V. Raj Avula Randy Greene Carolyn Petersen
Theodore P. Baker Rick Greer Dave Plauger
Todd Bargorek Joseph M. Gwinn Arlan Pool
Robert Barned Steven A. Haaser Franklin C. Prindle
Richard M. Bergman Barbara Haleen François Riche
Nawaf Bitar Geoffrey R. Hall Robert Rose
Steve Brosky Patrick Hebert Gordon W. Ross
David Butenhof Mary R. Hermann Barry Ruzek
Hans Petter Christiansen David Hughes Webb Scales
Dave Cooper Duane Hughes Lee Schermerhorn
Susan Corwin Michael B. Jones Del Swanson
Bill Cox Steven Kleiman Barry Traylor
June R. Curtis Robert Knighten Stephen R. Walli
Peter Dibble C. Douglass Locke Andrew E. Wheeler, Jr.
Christoph Eck Kent Long David Wilner
Maryland R. Edwards Robert D. Luken John Zolnowsky

Balloting Group
The following persons were members of the 1003.13 Balloting Group that approved
the standard for submission to the IEEE Standards Board:

Norman Aaronson Andy R. Bihain Lee Damico


Alejandro Alonso-Muñoz Shirley Bockstahler-Brandt Christoph Eck
Pierre-Jean Arcos Steve Case James A. Eiler
Charles R. Arnold Hu Cheng Philip H. Enslow
Theodore P. Baker Hans Pietter Christiansen Donna K. Fisher
Robert Barned Susan Corwin Michel Gien
Jason Behm Donald Cragun John Gilbert
Richard M. Bergman June R. Curtis Michael González

Copyright © 2004 IEEE. All rights reserved.

xxii Introduction

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
Karen D. Gordon Martin J. Kirk Franklin C. Prindle
Mars J. Gralia Thomas M. Kurihara Paul Rabin
Randy Greene Kevin Lewis Wendy Rauch
Joseph M. Gwinn C. Douglass Locke Henry H. Robbins
Steven A. Haaser Kent Long Steven Schwarm
Geoffrey R. Hall James P. Lonjers Del Swanson
Patrick Hebert Lee W. Lucas Sandra Swearingen
Hans H. Heilborn Robert D. Luken James G. Tanner
Duane Hughes Dave Lunger Mark-Rene Uchida
Hal Jespersen Marshall McKusick Andrew E. Wheeler, Jr.
Michael B. Jones Craig B. Meyers David Wilner
Joe Kelsey Diana Norwood Oren Yuen
Judy Kerner James T. Oblinger John J. Zenor
Lawrence J. Kilgallen Dave Plauger John Zolnowsky
Arlan Pool

When the IEEE-SA Standards Board approved IEEE 1003.13 on 19 March 1998,
it had the following membership:
Richard J. Holleman Chair
Donald N. Heirman, Vice Chair
Judith Gorman, Secretary

Satish K. Aggarwal James H. Gurney L. Bruce McClung


Clyde R. Camp Jim D. Isaak Louis-François Pau
James T. Carlo Lowell G. Johnson Ronald C. Petersen
Gary R. Engmann Robert Kennelly Gerald H. Peterson
Harold E. Epstein E.G. “Al” Kiener John B. Posey
Julian Forster* Joseph L. Koepfinger* Gary S. Robinson
Thomas F. Garrity Stephen R. Lambert Hans E. Weinrich
Ruben D. Garzon Jim Logothetis Donald W. Zispe
Donald C. Loughry

*Member Emeritus

Noelle Humenick
IEEE Standards Project Editor

Copyright © 2004 IEEE. All rights reserved.

Introduction xxiii

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
This page is left intentionally blank.

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
IEEE Standard for Information
Technology—
Standardized Application Environment
Profile (AEP)—POSIX® Realtime and
Embedded Application Support

Section 1: Overview

1.1 Scope

This standard establishes a set of Realtime and Embedded Environment Profiles


based on ISO/IEC 9945:2003 {3}, IEEE Std 1003.26™-2003 {4}, ISO/IEC
14519:2001 {5}, and related standards specifying foundations for realtime applica-
tions. It is a revision of the previous IEEE Std 1003.13™-1998, which established
Realtime Profiles based on ISO/IEC 9945-1:1990, as amended by IEEE Std
1003.1b™-1993, IEEE Std 1003.5b™-1996, and ISO/IEC 9945-2:1993. Both C {2}
and Ada {1} language application program interfaces are addressed in this
standard.
The Application Environment Profiles (AEPs) specified herein are appropriate for
the development and execution of realtime or embedded applications using the ser-
vices and utilities provided by standards called out in this standard.

Copyright © 2004 IEEE. All rights reserved.

1.1 Scope 1

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
IEEE Std 1003.13-2003 STANDARDIZED APPLICATION ENVIRONMENT PROFILE (AEP)

1.2 Taxonomy Position

P— OSE Profiles
AEP— Application Environment Profiles
PS— System Profiles
PSE— Generic Environment Profiles
PSE5— Realtime Environments
PSE51— Minimal Realtime System Profile
PSE52— Realtime Controller System Profile
PSE53— Dedicated Realtime System Profile
PSE54— Multi-Purpose Realtime System Profile

1.2.1 Rationale for Positioning (informative)

(This subclause is not a normative part of IEEE Std 1003.13-2003.)

This standard contains requirements for Application Program Interfaces and


Units of Functionality necessary to support four instances of the Generic Realtime
Environment class of applications. It specifies the behavior to be observed at the
interfaces of the Application Platform on which the class of applications can run.
This subset of an Open System Environment (OSE) profile is complete and
coherent within the context of the class of applications supported. As such, it is a
System Profile class of AEP.

1.3 Realtime System Profiles

This standard describes four realtime profiles and their minimum hardware
requirements.

1.3.1 Minimal Realtime System Profile (PSE51)

PSE51 systems are typically embedded in larger systems dedicated to unattended


control of one or more special I/O devices. Neither user interaction nor a file system
(mass storage) is required. The programming model is that of a single (implicit)

Copyright © 2004 IEEE. All rights reserved.

2 1 Overview

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
POSIX REALTIME AND EMBEDDED APPLICATION SUPPORT IEEE Std 1003.13-2003

POSIX process (corresponding to the processor’s hardware address space),


containing one or more threads of control (POSIX.1 threads or Ada tasks).
Although there is only one process, a Message Passing interface is provided for
communications among threads of control and between PSE5X instantiations.
Special devices are operated and controlled either by memory-mapped I/O or by the
basic I/O interface, which provides a standard way to access the intrinsically
nonstandard I/O hardware and its nonportable control code.
The hardware model for this profile assumes a single processor with its memory,
but no memory management unit (MMU) or common I/O devices are required. (If
there are in fact multiple processors, typically there are multiple instantiations of
the operating system, perhaps communicating via shared memory or a backplane
channel, perhaps isolated.)

1.3.2 Realtime Controller System Profile (PSE52)

These systems are an extension of the Minimal Realtime System Profile. Support
for a file system interface and asynchronous (nonblocking) I/O interfaces has been
added.
The hardware model for this profile assumes a single processor and memory space
(an MMU is not required). Mass storage devices are not required; the file system
may, for instance, be implemented in memory (RAM disk or flash memory).

1.3.3 Dedicated Realtime System Profile (PSE53)

These systems are an extension of the Realtime Controller System Profile. Support
for multiple processes has been added. Although these are usually embedded
systems, flash memory technology enables presence of a simplified file system,
even in those systems with mechanical or environmental requirements that pre-
clude a rotating-media hard drive. Since memory management hardware may be
provided, the functionality of memory locking is provided.
The hardware model for this profile assumes one or more processors, each with its
own MMU, in the same system.

1.3.4 Multi-Purpose Realtime System Profile (PSE54)

These systems include all the functionality of the other three profiles. They provide
comprehensive functionality and run a mix of differing realtime and non-realtime
tasks. This functionality includes most of POSIX.1 {3} and/or POSIX.5c {5}. Since

Copyright © 2004 IEEE. All rights reserved.

1.3 Realtime System Profiles 3

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
IEEE Std 1003.13-2003 STANDARDIZED APPLICATION ENVIRONMENT PROFILE (AEP)

users may conduct interactive sessions on those systems, all the mandatory
elements of the Shell and Utilities volume of POSIX.1 {3} are also included.
Support for multiple multithreaded processes is required so that multitasking may
be done by threads (POSIX.1 threads or Ada tasks), processes, or both.
The hardware model for this profile assumes one or more processors with memory
management units, high-speed storage devices, special interfaces, network sup-
port, and display devices. The system supports a mix of realtime and non-realtime
tasks, some being interactive user tasks.

1.4 Units of Functionality

Some of the profiles specified in this standard do not require support for all the
functionality specified in a referenced standard. In this case, if that referenced
standard does not contain options for specifying just the required functionality,
only those Units of Functionality referenced by the profile may be used by a strictly
conforming application.
Table 1-1 shows the Units of Functionality defined for POSIX.1 {3}; each of these
units represents a Subprofiling Option Group (see the Base Definitions volume of
POSIX.1 {3}, Section 2.1.5.1) and is a set of interfaces that represents a separately
implementable element of POSIX.1 {3}. Table 1-2 through Table 1-17 show the
Units of Functionality defined for POSIX.5c {5}.

1.5 Development Environment

Although the Shell and Utilities part of POSIX.1 {3} is not required for the execu-
tion environment of PSE51, PSE52, or PSE53, option POSIX2_SW_DEV is required
in the development environments for all four profiles. The option POSIX2_C_DEV
is required for C language development environments.

Copyright © 2004 IEEE. All rights reserved.

4 1 Overview

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
POSIX REALTIME AND EMBEDDED APPLICATION SUPPORT IEEE Std 1003.13-2003

Table 1-1 — POSIX.1 Units of Functionality


Unit of Functionality Included Interfaces
POSIX_C_LANG_JUMP longjmp(), setjmp()
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()

Copyright © 2004 IEEE. All rights reserved.

1.5 Development Environment 5

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
IEEE Std 1003.13-2003 STANDARDIZED APPLICATION ENVIRONMENT PROFILE (AEP)

Table 1-1 — POSIX.1 Units of Functionality (Continued)


Unit of Functionality Included Interfaces
POSIX_C_LANG_SUPPORT abs(), asctime(), asctime_r(), atof(), atoi(), atol(),
atoll(), bsearch(), calloc(), ctime(), ctime_r(),
difftime(), div(), feclearexcept(), fegetenv(),
fegetexceptflag(), fegetround(), feholdexcept(),
feraiseexcept(), fesetenv(), fesetexceptflag(),
fesetround(), fetestexcept(), feupdateenv(), free(),
gmtime(), gmtime_r(), imaxabs(), imaxdiv(),
isalnum(), isalpha(), isblank(), iscntrl(), isdigit(),
isgraph(), islower(), isprint(), ispunct(), isspace(),
isupper(), isxdigit(), labs(), ldiv(), llabs(), lldiv(),
localeconv(), localtime(), localtime_r(), malloc(),
memchr(), memcmp(), memcpy(), memmove(),
memset(), mktime(), qsort(), rand(), rand_r(),
realloc(), setlocale(), snprintf(), sprintf(), srand(),
sscanf(), strcat(), strchr(), strcmp(), strcoll(), strcpy(),
strcspn(), strerror(), strerror_r(), strftime(), strlen(),
strncat(), strncmp(), strncpy(), strpbrk(), strrchr(),
strspn(), strstr(), strtod(), strtof(), strtoimax(),
strtok(), strtok_r(), strtol(), strtold(), strtoll(),
strtoul(), strtoull(), strtoumax(), strxfrm(), time(),
tolower(), toupper(), tzn am e, tzset(), va_arg(),
va_copy(), va_end(), va_start(), vsnprintf(), vsprintf(),
vsscanf()
POSIX_C_LANG_WIDE_CHAR btowc(), iswalnum(), iswalpha(), iswblank(),
iswcntrl(), iswctype(), iswdigit(), iswgraph(),
iswlower(), iswprint(), iswpunct(), iswspace(),
iswupper(), iswxdigit(), mblen(), mbrlen(), mbrtowc(),
mbsinit(), mbsrtowcs(), mbstowcs(), mbtowc(),
swprintf(), swscanf(), towctrans(), towlower(),
towupper(), vswprintf(), vswscanf(), wcrtomb(),
wcscat(), wcschr(), wcscmp(), wcscoll(), wcscpy(),
wcscspn(), wcsftime(), wcslen(), wcsncat(), wcsncmp(),
wcsncpy(), wcspbrk(), wcsrchr(), wcsrtombs(),
wcsspn(), wcsstr(), wcstod(), wcstof(), wcstoimax(),
wcstok(), wcstol(), wcstold(), wcstoll(), wcstombs(),
wcstoul(), wcstoull(), wcstoumax(), wcsxfrm(),
wctob(), wctomb(), wctrans(), wctype(), wmemchr(),
wmemcmp(), wmemcpy(), wmemmove(), wmemset()
POSIX_DEVICE_IO clearerr(), close(), fclose(), fdopen(), feof (), ferror(),
fflush (), fgetc(), fgets(), fileno(), fopen(), fprintf(),
fputc(), fputs(), fread(), freopen(), fscanf(), fwrite(),
getc(), getchar(), gets(), open(), perror(), printf(),
putc(), putchar(), puts(), read(), scanf(), setbuf(),
setvbuf(), std err, std in , std ou t, ungetc(), vfprintf (),
vfscanf(), vprintf(), vscanf(), write()

Copyright © 2004 IEEE. All rights reserved.

6 1 Overview

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
POSIX REALTIME AND EMBEDDED APPLICATION SUPPORT IEEE Std 1003.13-2003

Table 1-1 — POSIX.1 Units of Functionality (Continued)


Unit of Functionality Included Interfaces
POSIX_DEVICE_SPECIFIC cfgetispeed(), cfgetospeed(), cfsetispeed(),
cfsetospeed(), ctermid(), isatty(), tcdrain(), tcflow(),
tcflush(), tcgetattr(), tcsendbreak(), tcsetattr(),
ttyname(), ttyname_r()
POSIX_EVENT_MGMT FD_CLR(), FD_ISSET(), FD_SET(), FD_ZERO(),
pselect(), select()
POSIX_FD_MGMT dup(), dup2(), fcntl(), fgetpos(), fseek(), fseeko(),
fsetpos(), ftell(), ftello(), ftruncate(), lseek(), rewind()
POSIX_FIFO mkfifo()
POSIX_FILE_ATTRIBUTES chmod(), chown(), fchmod(), fchown(), umask()
POSIX_FILE_LOCKING flockfile(), ftrylockfile(), funlockfile(), getc_unlocked(),
getchar_unlocked(), putc_unlocked(),
putchar_unlocked()
POSIX_FILE_SYSTEM access(), chdir(), closedir(), creat(), fpathconf(), fstat(),
getcwd(), link(), mkdir(), opendir(), pathconf(),
readdir(), readdir_r(), remove(), rename(),
rewinddir(), rmdir(), stat(), tmpfile(), tmpnam(),
unlink(), utime()
POSIX_FILE_SYSTEM_EXT glob(), globfree()
POSIX_JOB_CONTROL(1) setpgid(), tcgetpgrp(), tcsetpgrp()
POSIX_MULTI_PROCESS _Exit(), _exit(), assert(), atexit(), clock(), execl(),
execle(), execlp(), execv(), execve(), execvp(), exit(),
fork(), getpgrp(), getpid(), getppid(), setsid(), sleep(),
times(), wait(), waitpid()
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 _errn o, 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()
POSIX_PIPE pipe()
POSIX_REGEXP(2) regcomp(), regerror(), regexec(), regfree()

Copyright © 2004 IEEE. All rights reserved.

1.5 Development Environment 7

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
IEEE Std 1003.13-2003 STANDARDIZED APPLICATION ENVIRONMENT PROFILE (AEP)

Table 1-1 — POSIX.1 Units of Functionality (Continued)


Unit of Functionality Included Interfaces
POSIX_RW_LOCKS(3) pthread_rwlock_destroy(), pthread_rwlock_init(),
pthread_rwlock_rdlock(),
pthread_rwlock_timedrdlock()(4),
pthread_rwlock_timedwrlock()d,
pthread_rwlock_tryrdlock(),
pthread_rwlock_trywrlock(),
pthread_rwlock_unlock(), pthread_rwlock_wrlock(),
pthread_rwlockattr_destroy(),
pthread_rwlockattr_getpshared()(5),
pthread_rwlockattr_init(),
pthread_rwlockattr_setpshared()e
POSIX_SHELL_FUNC pclose(), popen(), system(), wordexp(), wordfree()
POSIX_SIGNALS abort(), alarm(), kill(), pause(), raise(), sigaction(),
sigaddset(), sigdelset(), sigemptyset(), sigfillset(),
sigismember(), signal(), sigpending(), sigprocmask(),
sigsuspend(), sigwait()
POSIX_SIGNAL_JUMP siglongjmp(), sigsetjmp()
POSIX_SINGLE_PROCESS confstr(), en viron , errn o, getenv(), setenv(), sysconf(),
uname(), unsetenv()
POSIX_STRING_MATCHING fnmatch(), getopt(), optarg, optin d , opterr, optopt
POSIX_SYMBOLIC_LINKS lstat(), readlink(), symlink()
POSIX_SYSTEM_DATABASE getgrgid(), getgrgid_r(), getgrnam(), getgrnam_r(),
getpwnam(), getpwnam_r(), getpwuid(), getpwuid_r()
POSIX_THREADS_BASE(6) pthread_atfork(), pthread_attr_destroy(),
pthread_attr_getdetachstate(),
pthread_attr_getschedparam(), pthread_attr_init(),
pthread_attr_setdetachstate(),
pthread_attr_setschedparam(), pthread_cancel(),
pthread_cleanup_pop(), pthread_cleanup_push(),
pthread_cond_broadcast(), pthread_cond_destroy(),
pthread_cond_init(), pthread_cond_signal(),
pthread_cond_timedwait(), pthread_cond_wait(),
pthread_condattr_destroy(), pthread_condattr_init(),
pthread_create(), pthread_detach(), pthread_equal(),
pthread_exit(), pthread_getspecific(), pthread_join(),
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_init(), pthread_once(),
pthread_self(), pthread_setcalcelstate(),
pthread_setcanceltype(), pthread_setspecific(),
pthread_sigmask(), pthread_testcancel()

Copyright © 2004 IEEE. All rights reserved.

8 1 Overview

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
POSIX REALTIME AND EMBEDDED APPLICATION SUPPORT IEEE Std 1003.13-2003

Table 1-1 — POSIX.1 Units of Functionality (Continued)


Unit of Functionality Included Interfaces
POSIX_USER_GROUPS getegid(), geteuid(), getgid(), getgroups(), getlogin(),
getlogin_r(), getuid(), setegid(), seteuid(), setgid(),
setuid()
POSIX_WIDE_CHAR_IO fgetwc(), fgetws(), fputwc(), fputws(), fwide(),
fwprintf(), fwscanf(), getwc(), getwchar(), putwc(),
putwchar(), ungetwc(), vfwprintf(), vfwscanf(),
vwprintf(), vwscanf(), wprintf(), wscanf()
XSI_C_LANG_SUPPORT _tolower(), _toupper(), a64l(), d ayligh t, 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(),
sign gam , srand48(), srandom(), strcasecmp(),
strdup(), strfmon(), strncasecmp(), strptime(), swab(),
swapcontext(), tdelete(), tfind(), tim ezon e, toascii(),
tsearch(), twalk()
XSI_DBM dbm_clearerr(), dbm_close(), dbm_delete(),
dbm_error(), dbm_fetch(), dbm_firstkey(),
dbm_nextkey(), dbm_open(), dbm_store()
XSI_DEVICE_IO fmtmsg(), poll(), pread(), pwrite(), readv(), writev()
XSI_DEVICE_SPECIFIC grantpt(), posix_openpt(), ptsname(), unlockpt()
XSI_DYNAMIC_LINKING dlclose(), dlerror(), dlopen(), dlsym()
XSI_FD_MGMT truncate()
XSI_FILE_SYSTEM basename(), dirname(), fchdir(), fstatvfs(), ftw(),
lchown(), lockf(), mknod(), mkstemp(), nftw(),
realpath(), seekdir(), statvfs(), sync(), telldir(),
tempnam()
XSI_I18N catclose(), catgets(), catopen(), nl_langinfo()
XSI_IPC ftok(), msgctl(), msgget(), msgrcv(), msgsnd(),
semctl(), semget(), semop(), shmat(), shmctl(),
shmdt(), shmget()
XSI_JOB_CONTROL tcgetsid()
XSI_JUMP _longjmp(), _setjmp()
XSI_MATH j0(), j1(), jn(), scalb(), y0(), y1(), yn()
XSI_MULTI_PROCESS getpgid(), getpriority(), getrlimit(), getrusage(),
getsid(), nice(), setpgrp(), setpriority(), setrlimit(),
ulimit(), usleep(), vfork(), waitid()
XSI_SIGNALS bsd_signal(), killpg(), sigaltstack(), sighold(),
sigignore(), siginterrupt(), sigpause(), sigrelse(),
sigset (), ualarm()
XSI_SINGLE_PROCESS gethostid(), gettimeofday(), putenv()
XSI_SYSTEM_DATABASE endpwent(), getpwent(), setpwent()
XSI_SYSTEM_LOGGING closelog(), openlog(), setlogmask(), syslog()

Copyright © 2004 IEEE. All rights reserved.

1.5 Development Environment 9

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
IEEE Std 1003.13-2003 STANDARDIZED APPLICATION ENVIRONMENT PROFILE (AEP)

Table 1-1 — POSIX.1 Units of Functionality (Continued)


Unit of Functionality Included Interfaces
XSI_THREAD_MUTEX_EXT pthread_mutexattr_gettype(),
pthread_mutexattr_settype()
XSI_THREADS_EXT pthread_attr_getguardsize(), pthread_attr_getstack(),
pthread_attr_setguardsize(),
pthread_attr_setstack(), pthread_getconcurrency(),
pthread_setconcurrency()
XSI_TIMERS getitimer(), setitimer()
XSI_USER_GROUPS endgrent(), endutxent(), getgrent(), getutxent(),
getutxid(), getutxline(), pututxline(),
setgrent(), setregid(), setreuid(), setutxent()
XSI_WIDE_CHAR wcswidth(), wcwidth()
(1)
There was a _POSIX_JOB_CONTROL option in an earlier version of the POSIX standards that spec-
ified these functions. All of these functions are mandatory in POSIX.1 {3}.
(2)
There was a _POSIX_REGEXP option in an earlier version of the POSIX standards that specified
these functions. All of these functions are mandatory in POSIX.1 {3}.
(3) There was a _POSIX_READER_WRITER_LOCKS option in an earlier version of the POSIX stan-
dards that specified these functions. All of these functions are part of the _POSIX_THREADS option
in POSIX.1 {3}.
(4)
Depen den t on t h e _P OSIX_TIME OUTS opt ion .
(5) Depen den t on t h e _P OSIX_TH RE AD_P ROCE SS_SH ARE D opt ion .
(6)
POSIX_THREADS_BASE is the same as the _POSIX_THREADS option, but without the functions
belonging to the POSIX_RW_LOCKS Unit of Functionality.

Table 1-2 — POSIX.5 Units of Functionality (Ada Language Support)


POSIX_ADA_LANG_SUPPORT
Package Subprograms
System Extra requirements specified in POSIX.5c
{5}, Section 2.8.
System_Storage_Elements All(1)
POSIX_Page_Alignment All
POSIX_Supplement_To_Ada_IO All
Ada_Task_Identification All
Ada_Streams All
(1)
All indicates all subprograms in a package are required to be supported. Where overloaded versions
of a subprogram exist, each instance is required, except as noted. All Image and Value functions
must be supported for all packages provided by the implementation.

Copyright © 2004 IEEE. All rights reserved.

10 1 Overview

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
POSIX REALTIME AND EMBEDDED APPLICATION SUPPORT IEEE Std 1003.13-2003

Table 1-3 — POSIX.5 Units of Functionality (Device IO)


POSIX_DEVICE_IO
Package Subprograms
POSIX_IO Open
Close
Read
Write
Generic_Read
Generic_Write
Is_Open

Table 1-4 — POSIX.5 Units of Functionality (Device Specific)


POSIX_DEVICE_SPECIFIC
Package Subprograms
POSIX_Terminal_Functions Get_Terminal_Characteristics
Get_Controlling_Terminal_Name
Set_Terminal_Characteristics
Terminal_Modes_Of
Define_Terminal_Modes
Bits_Per_Character_Of
Define_Bits_Per_Character
Special_Control_Character_Of
Define_Special_Control_Character
Disable_Control_Character
Input_Time_Of
Define_Input_Time
Minimum_Input_Count_Of
Define_Minimum_Input_Count
Input_Baud_Rate_Of
Output_Baud_Rate_Of
Define_Input_Baud_Rate
Define_Output_Baud_Rate
Send_Break
Drain
Discard_Data
Flow
POSIX_IO Is_A_Terminal
Get_Terminal_Name

Copyright © 2004 IEEE. All rights reserved.

1.5 Development Environment 11

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
IEEE Std 1003.13-2003 STANDARDIZED APPLICATION ENVIRONMENT PROFILE (AEP)

Table 1-5 — POSIX.5 Units of Functionality (Event Management)


POSIX_EVENT_MGMT
Package Subprograms
POSIX_Event_Management(1) Make_Empty
Add
Remove
In_Set
Select_File
For_Every_File_In
(1)
The subprograms listed in this table are those under the Select option in POSIX.5c {5}. But instead
of using this option, a Unit of Functionality has been created because there is no equivalent option in
POSIX.1 {3}.

Table 1-6 — POSIX.5 Units of Functionality (FD Management)


POSIX_FD_MGMT
Package Subprograms
POSIX_File_Locking All
POSIX_IO Duplicate
Duplicate_And_Close
Get_File_Control
Set_File_Control
Get_Close_On_Exec
Set_Close_On_Exec
Seek
File_Size
File_Position

Table 1-7 — POSIX.5 Units of Functionality (FIFO)


POSIX_FIFO
Package Subprograms
POSIX_Files Create_FIFO

Table 1-8 — POSIX.5 Units of Functionality (File Attributes)


POSIX_FILE_ATTRIBUTES
Package Subprograms
POSIX_Permissions Set_Allowed_Process_Permissions
Get_Allowed_Process_Permissions
POSIX_Files Change_Owner_And_Group
Change_Permissions

Copyright © 2004 IEEE. All rights reserved.

12 1 Overview

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
POSIX REALTIME AND EMBEDDED APPLICATION SUPPORT IEEE Std 1003.13-2003

Table 1-9 — POSIX.5 Units of Functionality (File System)


POSIX_FILE_SYSTEM
Package Subprograms
POSIX_Configurable_File_Limits All
POSIX_File_Status All
POSIX_Files For_Every_Directory_Entry
Create_Directory
Unlink
Remove_Directory
Rename
Accessibility
Is_Accessible
Existence
Is_File_Present
Set_File_Times
Link
Filename_Of
Is_File
Is_Directory
Is_FIFO
Is_Character_Special_File
Is_Block_Special_File
Is_Socket
POSIX_Process_Environment Change_Working_Directory
Get_Working_Directory
POSIX_IO Open_Or_Create

Table 1-10 — POSIX.5 Units of Functionality (Job Control)

POSIX_JOB_CONTROL(1)
Package Subprograms
POSIX_Process_Identification Set_Process_Group_Id
Create_Process_Group
POSIX_Terminal_Functions Get_Process_Group_Id
Set_Process_Group_Id
POSIX_Signals Set_Stopped_Child_Signal
Stopped_Child_Signal_Enabled
(1)
The subprograms listed in this table are those under the Job Control option in POSIX.5c {5}. But
instead of using this option, a Unit of Functionality has been created because the equivalent option
in POSIX.1 {3} does not specify the functions that fall under it.

Copyright © 2004 IEEE. All rights reserved.

1.5 Development Environment 13

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
IEEE Std 1003.13-2003 STANDARDIZED APPLICATION ENVIRONMENT PROFILE (AEP)

Table 1-11 — POSIX.5 Units of Functionality (Multi-Process)


POSIX_MULTI_PROCESS
Package Subprograms
POSIX_Process_Primitives All
POSIX_Unsafe_Process_Primitives All
POSIX_Process_Times All
POSIX_Process_Identification Get_Process_Id
Get_Parent_Process_Id

Table 1-12 — POSIX.5 Units of Functionality (Networking)


POSIX_NETWORKING
Package Subprograms
POSIX_IO Get_Owner
Set_Socket_Process_Owner
Set_Socket_Group_Owner
Set_Buffer
Get_Buffer
POSIX_Sockets All(1)
POSIX_Sockets_Local Alla
POSIX_Sockets_Internet All(2)
(1) The POSIX_Sockets and POSIX_Sockets_Local packages depend on the Sockets Detailed Net-
work Interface option (and partly on the Network Management option) defined in POSIX.5c {5}, but
they are included here because there are no equivalent options in POSIX.1 {3}.
(2)
The POSIX_Sockets_Internet package depends on the Sockets Detailed Network Interface option
(and partly on the Internet Protocol, Internet Datagram, and Internet Stream options) defined in
POSIX.5c {5}, but it is included here because there are no equivalent options in POSIX.1 {3}.

Table 1-13 — POSIX.5 Units of Functionality (Pipes)


POSIX_PIPES
Package Subprograms
POSIX_IO Create_Pipe

Copyright © 2004 IEEE. All rights reserved.

14 1 Overview

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
POSIX REALTIME AND EMBEDDED APPLICATION SUPPORT IEEE Std 1003.13-2003

Table 1-14 — POSIX.5 Units of Functionality (Signals)


POSIX_SIGNALS
Package Subprograms
POSIX_Signals Add_Signal
Add_All_Signals
Delete_Signal
Delete_All_Signals
Is_Member
Send_Signal
Set_Blocked_Signals
Block_Signals
Unblock_Signals
Blocked_Signals
Ignore_Signal
Unignore_Signal
Is_Ignored
Install_Empty_Handler
Pending_Signals
Await_Signal(1)
Await_Signal_Or_Timeouta
Interrupt_Task
Get_Signal(2)
Set_Signalb
Get_Notification
Set_Notification
Get_Datab
Set_Datab
(1)
Return type Signal.
(2)
Operation on type Signal_Event.

Table 1-15 — POSIX.5 Units of Functionality (Single Process)


POSIX_SINGLE_PROCESS
Package Subprograms
POSIX All
POSIX_Limits All
POSIX_Options All
POSIX_Profiles All(1)
POSIX_Configurable_System_Limits All
POSIX_Calendar All

Copyright © 2004 IEEE. All rights reserved.

1.5 Development Environment 15

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
IEEE Std 1003.13-2003 STANDARDIZED APPLICATION ENVIRONMENT PROFILE (AEP)

Table 1-15 — POSIX.5 Units of Functionality (Single Process)


POSIX_SINGLE_PROCESS
Package Subprograms
POSIX_Process_Environment Argument_List
Copy_From_Current_Environment
Copy_To_Current_Environment
Copy_Environment
Clear_Environment
Set_Environment_Variable
Delete_Environment_Variable
Length
For_Every_Environment_Variable
For_Every_Current_Environment_Variable
Environment_Value_Of
Is_Environment_Variable
(1)
The POSIX_Profiles package is defined in Annex A of this standard.

Table 1-16 — POSIX.5 Units of Functionality (System Database)


POSIX_SYSTEM_DATABASE
Package Subprograms
POSIX_Group_Database All
POSIX_User_Database All

Table 1-17 — POSIX.5 Units of Functionality (User Groups)


POSIX_USER_GROUPS
Package Subprograms
POSIX_Process_Identification Get_Real_User_ID
Get_Effective_User_ID
Get_Real_Group_ID
Get_Effective_Group_ID
Set_User_ID
Create_Session
Set_Group_ID
Get_Groups
Get_Login_Name
Get_Process_Group_ID

Copyright © 2004 IEEE. All rights reserved.

16 1 Overview

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
POSIX REALTIME AND EMBEDDED APPLICATION SUPPORT IEEE Std 1003.13-2003

1.6 Summary of Profile Features

Table 1-18 through Table 1-20 summarize the requirements of the four profiles
using an X character to represent a required item and a short dash (–) to represent
an item that is not required. Since POSIX.1 {3} and/or POSIX.5c {5} does not
provide sufficient options to remove features unnecessary for some profiles, Units
of Functionality have been developed and are described in Table 1-1 through
Table 1-17.

Table 1-18 — Units of Functionality Requirements


Unit of Functionality PSE51 PSE52 PSE53 PSE54
POSIX_ADA_LANG_SUPPORT (1) X X X X
POSIX_C_LANG_JUMP (2) X X X X
POSIX_C_LANG_MATHb – X X X
POSIX_C_LANG_SUPPORTb X X X X
POSIX_C_LANG_WIDE_CHARb – – – X
POSIX_DEVICE_IO X X X X
POSIX_DEVICE_SPECIFIC – – – X
POSIX_EVENT_MGMT – – X X
POSIX_FD_MGMT – X X X
POSIX_FIFO – – – X
POSIX_FILE_ATTRIBUTES – – – X
POSIX_FILE_LOCKINGb X X X X
POSIX_FILE_SYSTEM – X X X
POSIX_FILE_SYSTEM_EXTb – – – X
POSIX_JOB_CONTROL – – – X
POSIX_MULTI_PROCESS – – X X
POSIX_NETWORKING – – X X
POSIX_PIPE – – X X
POSIX_REGEXPb – – – X
POSIX_RW_LOCKSb – – – –
POSIX_SHELL_FUNCb – – – X
POSIX_SIGNALS X X X X
POSIX_SIGNAL_JUMP b – – X X
POSIX_SINGLE_PROCESS X X X X
POSIX_STRING_MATCHINGb – – – X
POSIX_SYMBOLIC_LINKSb – – – X
POSIX_SYSTEM_DATABASE – – – X
POSIX_THREADS_BASEb X X X X
POSIX_USER_GROUPS – – – X
POSIX_WIDE_CHAR_IOb – – – X

Copyright © 2004 IEEE. All rights reserved.

1.6 Summary of Profile Features 17

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
IEEE Std 1003.13-2003 STANDARDIZED APPLICATION ENVIRONMENT PROFILE (AEP)

Table 1-18 — Units of Functionality Requirements (Continued)


Unit of Functionality PSE51 PSE52 PSE53 PSE54
XSI_C_LANG_SUPPORTb – – – –
XSI_DBMb – – – –
XSI_DEVICE_IOb – – – –
XSI_DEVICE_SPECIFICb – – – –
XSI_DYNAMIC_LINKING b – – – X
XSI_FD_MGMT b – – – –
XSI_FILE_SYSTEM b – – – –
XSI_I18Nb – – – –
XSI_IPCb – – – –
XSI_JOB_CONTROLb – – – –
XSI_JUMPb – – – –
XSI_MATHb – – – –
XSI_MULTI_PROCESS b – – – –
XSI_SIGNALSb – – – –
XSI_SINGLE_PROCESSb – – – –
XSI_SYSTEM_DATABASEb – – – –
XSI_SYSTEM_LOGGINGb – – – X
XSI_THREAD_MUTEX_EXTb X X X X
XSI_THREADS_EXTb X X X X
XSI_TIMERSb – – – –
XSI_USER_GROUPSb – – – –
XSI_WIDE_CHARb – – – –
(1) Required only for the Ada language option.
(2)
Required only for the C language option.

Table 1-19 — POSIX.1 Option Requirements


Option PSE51 PSE52 PSE53 PSE54
_POSIX_ADVISORY_INFO – – – X
_POSIX_ASYNCHRONOUS_IO – – X X
_POSIX_BARRIERS – – – –
_POSIX_CHOWN_RESTRICTED – – – X
_POSIX_CLOCK_SELECTION X X X X
_POSIX_CPUTIME – – X X
_POSIX_FSYNC X X X X
_POSIX_IPV6 – – – –
_POSIX_MAPPED_FILES – X X X
_POSIX_MEMLOCK X X X X
_POSIX_MEMLOCK_RANGE X X X X

Copyright © 2004 IEEE. All rights reserved.

18 1 Overview

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
POSIX REALTIME AND EMBEDDED APPLICATION SUPPORT IEEE Std 1003.13-2003

Table 1-19 — POSIX.1 Option Requirements (Continued)


Option PSE51 PSE52 PSE53 PSE54
_POSIX_MEMORY_PROTECTION – – X X
_POSIX_MESSAGE_PASSING – X X X
_POSIX_MONOTONIC_CLOCK X X X X
_POSIX_NO_TRUNC X X X X
_POSIX_PRIORITIZED_IO – – X X
_POSIX_PRIORITY_SCHEDULING – – X X
_POSIX_RAW_SOCKETS – – X X
_POSIX_REALTIME_SIGNALS X X X X
_POSIX_SAVED_IDS – – – X
_POSIX_SEMAPHORES X X X X
_POSIX_SHARED_MEMORY_OBJECTS X X X X
_POSIX_SPAWN – – X X
_POSIX_SPIN_LOCKS – – – –
_POSIX_SPORADIC_SERVER – – X X
_POSIX_SYNCHRONIZED_IO X X X X
_POSIX_THREAD_ATTR_STACKADDR X X X X
_POSIX_THREAD_ATTR_STACKSIZE X X X X
_POSIX_THREAD_CPUTIME X X X X
_POSIX_THREAD_PRIO_INHERIT X X X X
_POSIX_THREAD_PRIO_PROTECT X X X X
_POSIX_THREAD_PRIORITY_ X X X X
SCHEDULING
_POSIX_THREAD_PROCESS_SHARED – – X X
_POSIX_THREAD_SAFE_FUNCTIONS See Units of Functionality
_POSIX_THREAD_SPORADIC_SERVER X X X X
_POSIX_THREADS See Units of Functionality
_POSIX_TIMEOUTS X X X X
_POSIX_TIMERS X X X X
_POSIX_TRACE – X X X
_POSIX_TRACE_EVENT_FILTER – X X X
_POSIX_TRACE_INHERIT – – – –
_POSIX_TRACE_LOG – X X X
_POSIX_TYPED_MEMORY_OBJECTS – – – –
_POSIX_VDISABLE – – – X
_POSIX2_C_DEV(1) Xb Xb Xb X
_POSIX2_CHAR_TERM – – – X
_POSIX2_FORT_DEV – – – –
_POSIX2_FORT_RUN – – – X
_POSIX2_LOCALEDEF – – – –
_POSIX2_PBS – – – –
_POSIX2_PBS_ACCOUNTING – – – –
_POSIX2_PBS_CHECKPOINT – – – –

Copyright © 2004 IEEE. All rights reserved.

1.6 Summary of Profile Features 19

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
IEEE Std 1003.13-2003 STANDARDIZED APPLICATION ENVIRONMENT PROFILE (AEP)

Table 1-19 — POSIX.1 Option Requirements (Continued)


Option PSE51 PSE52 PSE53 PSE54
_POSIX2_PBS_LOCATE – – – –
_POSIX2_PBS_MESSAGE – – – –
_POSIX2_PBS_TRACK – – – –
_POSIX2_SW_DEV X(2) Xb Xb X
_POSIX2_UPE – – – X
_XOPEN_CRYPT – – – –
_XOPEN_ENH_I18N No interfaces fall under this option
_XOPEN_LEGACY – – – –
_XOPEN_REALTIME See individual suboptions
_XOPEN_REALTIME_THREADS See individual suboptions
_XOPEN_SHM No interfaces fall under this option
_XOPEN_STREAMS – – – –
_XOPEN_UNIX See Units of Functionality
(1) Required only for the C language option.
(2)
Required only for the development platform, which will often differ from the execution platform.

Table 1-20 — Requirements for Other Standards


Standard PSE51 PSE52 PSE53 PSE54
POSIX.26 {4} X X X X

The correspondence between the options listed in Table 1-19 and the options de-
scribed in POSIX.5c {5}, Section 2.5, are shown in Table 1-21.

Table 1-21 — POSIX.1 Options vs. POSIX.5c Options


POSIX.1 Option POSIX.5c Option
_POSIX_ADVISORY_INFO none
_POSIX_ASYNCHRONOUS_IO Asynchronous I/O
_POSIX_BARRIERS none
_POSIX_CHOWN_RESTRICTED Change Owner Restriction
_POSIX_CLOCK_SELECTION none
_POSIX_CPUTIME none
_POSIX_FSYNC File Synchronization
_POSIX_IPV6 none
_POSIX_MAPPED_FILES Memory Mapped Files
_POSIX_MEMLOCK Memory Locking
_POSIX_MEMLOCK_RANGE Memory Range Locking
_POSIX_MEMORY_PROTECTION Memory Protection
_POSIX_MESSAGE_PASSING Message Queues
_POSIX_MONOTONIC_CLOCK none

Copyright © 2004 IEEE. All rights reserved.

20 1 Overview

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
POSIX REALTIME AND EMBEDDED APPLICATION SUPPORT IEEE Std 1003.13-2003

Table 1-21 — POSIX.1 Options vs. POSIX.5c Options (Continued)


POSIX.1 Option POSIX.5c Option
_POSIX_NO_TRUNC Filename Truncation(1)
_POSIX_PRIORITIZED_IO Prioritized I/O
_POSIX_PRIORITY_SCHEDULING Priority Process Scheduling
_POSIX_RAW_SOCKETS none
_POSIX_REALTIME_SIGNALS Realtime Signals
_POSIX_SAVED_IDS Saved IDs Support
_POSIX_SEMAPHORES Semaphores
_POSIX_SHARED_MEMORY_OBJECTS Shared Memory Objects
_POSIX_SPAWN C language-specific
_POSIX_SPIN_LOCKS none
_POSIX_SPORADIC_SERVER none
_POSIX_SYNCHRONIZED_IO Synchronized I/O
_POSIX_THREAD_ATTR_STACKADDR C language-specific
_POSIX_THREAD_ATTR_STACKSIZE C language-specific
_POSIX_THREAD_CPUTIME none
_POSIX_THREAD_PRIO_INHERIT Mutex Priority Inheritance
_POSIX_THREAD_PRIO_PROTECT Mutex Priority Ceiling
_POSIX_THREAD_PRIORITY_SCHEDULING C language-specific
_POSIX_THREAD_PROCESS_SHARED Process Shared
_POSIX_THREAD_SAFE_FUNCTIONS C language-specific
_POSIX_THREAD_SPORADIC_SERVER none
_POSIX_THREADS C language-specific
_POSIX_TIMEOUTS none
_POSIX_TIMERS Timers
_POSIX_TRACE none
_POSIX_TRACE_EVENT_FILTER none
_POSIX_TRACE_INHERIT none
_POSIX_TRACE_LOG none
_POSIX_TYPED_MEMORY_OBJECTS none
_POSIX_VDISABLE C language-specific
_POSIX2_C_DEV not applicable
_POSIX2_CHAR_TERM not applicable
_POSIX2_FORT_DEV not applicable
_POSIX2_FORT_RUN not applicable
_POSIX2_LOCALEDEF not applicable
_POSIX2_PBS not applicable
_POSIX2_PBS_ACCOUNTING not applicable
_POSIX2_PBS_CHECKPOINT not applicable
_POSIX2_PBS_LOCATE not applicable
_POSIX2_PBS_MESSAGE not applicable
_POSIX2_PBS_TRACK not applicable
_POSIX2_SW_DEV not applicable
_POSIX2_UPE not applicable

Copyright © 2004 IEEE. All rights reserved.

1.6 Summary of Profile Features 21

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
IEEE Std 1003.13-2003 STANDARDIZED APPLICATION ENVIRONMENT PROFILE (AEP)

Table 1-21 — POSIX.1 Options vs. POSIX.5c Options (Continued)


POSIX.1 Option POSIX.5c Option
_XOPEN_CRYPT none
_XOPEN_ENH_I18N none
_XOPEN_LEGACY none
_XOPEN_REALTIME none
_XOPEN_REALTIME_THREADS none
_XOPEN_SHM none
_XOPEN_STREAMS none
_XOPEN_UNIX none
Ada language-specific (mutexes are included Mutexes
under the _POSIX_THREADS option)
(1)
Note that the POSIX.5c Filename Truncation option has the opposite sense relative to the POSIX.1
option _POSIX_NO_TRUNC

In all profiles that do not support the POSIX_JOB_CONTROL Unit of Functionality,


the subprogram POSIX_Signals.Set_Stopped_Child_Signal shall fail
silently.
In all profiles that do not support the POSIX_JOB_CONTROL Unit of Functionality,
the subprogram POSIX_Signals.Stopped_Child_Signal_Enabled shall re-
turn False.
POSIX_Limits.Groups_Maxima'First shall be zero for PSE51, PSE52, and
PSE53. For PSE54 it shall be greater than or equal to eight.
POSIX_Terminal_Functions.Disable_Control_Character (which corre-
sponds to _POSIX_VDISABLE is not supported in PSE51, PSE52, and PSE53. For
PSE54, POSIX_Terminal_Functions.Disable_Control_Character shall
not raise POSIX_Error with an error code of Operation_Not_Implemented.
For PSE51 and PSE52, the blocking behavior of all reentrant operations defined
by POSIX.5c {5} shall be per task, i.e., a blocked task cannot prevent any other task
from executing. Therefore, the corresponding Blocking_Behavior constants
shall have the value Tasks. (See POSIX.5c {5}, Section 2.4.1.5.)

Copyright © 2004 IEEE. All rights reserved.

22 1 Overview

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
IEEE Std 1003.13-2003

Section 2: Normative References

2.1 Normative References

The following standards contain provisions which, through references in this text,
constitute provisions of this standard.1) At the time of publication, the editions in-
dicated were valid. All standards are subject to revision, and parties to agreements
based on this profile of IEEE and ISO are encouraged to investigate the possibility
of applying the most recent editions of the standards listed below. Members of IEC
and ISO maintain registers of currently valid International Standards.
{1} ISO/IEC 8652:1995, Information technology—Programming Languages—
Ada.2)
{2} ISO/IEC 9899:1999, Programming Languages—C.
{3} ISO/IEC 9945:2003, Information technology—Portable Operating System In-
terface (POSIX®).3)
{4} IEEE Std 1003.26-2003, IEEE Standard for Information Technology—
Portable Operating System Interface (POSIX®)—Part 26: Device Control
Application Program Interface (API) [C Language].4)
{5} ISO/IEC 14519:2001, Information technology—POSIX® Ada Language Inter-
faces—Binding for System Application Program Interface (API).
{6} ISO/IEC TR 10000-1:1998, Information technology—Framework and taxono-
my of International Standardized Profiles—Part 1: General principles and
documentation framework.
{7} ISO/IEC TR 10000-3:1998, Information technology—Framework and Taxon-
omy of International Standardized Profiles—Part 3: Principles and Taxono-
my for Open System Environment Profiles.

1) Other references to related standards and other documents can be found in Annex C of this standard. Com-
mon names for these standards can be found in 4.2.
2) ISO/IEC documents can be obtained from the ISO office, 1 rue de Varembé, Case Postale 56, CH-1211,
Genève 20, Switzerland/Suisse (http://www.iso.ch/) and from the IEC office, 3 rue de Varembé, Case Postale
131, CH-1211, Genève 20, Switzerland/Suisse (http://www.iec.ch/). ISO/IEC publications are also available
in the United States from the Sales Department, American National Standards Institute, 25 West 43rd
Street, 4th Floor, New York, NY 10036, USA (http://www.ansi.org/).
3) Identical to IEEE Std 1003.1™-2003.
4) IEEE publications are available from the Institute of Electrical and Electronics Engineers, Inc., 445 Hoes
Lane, Piscataway, NJ 08854, USA (http://standards.ieee.org/).

Copyright © 2004 IEEE. All rights reserved.

2.1 Normative References 23

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
This page is left intentionally blank.

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
IEEE Std 1003.13-2003

Section 3: Terms and Definitions

3.1 Terminology

For the purposes of this standard, the following terms apply:

3.1.1 implementation defined: Describes a value or behavior that is not


defined by the standard, but is selected by an implementor. The value or behavior
may vary among implementations that conform to POSIX.13. 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 implementor shall document such a value or behavior in the conformance doc-
ument, so that it can be used correctly by an application.

3.1.2 may: Describes a feature or behavior that is optional for an implementa-


tion that conforms to POSIX.13. 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.1.3 shall: For an implementation that conforms to POSIX.13, describes a fea-


ture or behavior that is mandatory. An application can rely on the existence of the
feature or behavior.
For an application or user, describes a behavior that is mandatory.

3.1.4 should: For an implementation that conforms to POSIX.13, 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 program-
ming practice for optimum portability.

Copyright © 2004 IEEE. All rights reserved.

3.1 Terminology 25

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
IEEE Std 1003.13-2003 STANDARDIZED APPLICATION ENVIRONMENT PROFILE (AEP)

3.1.5 undefined: Describes the nature of a value or behavior not defined by


POSIX.13 which results from use of an invalid program construct or invalid data
input.
The value or behavior may vary among implementations that conform to
POSIX.13. 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.1.6 unspecified: Describes the nature of a value or behavior not specified by


POSIX.13 which results from use of a valid program construct or valid data input.
The value or behavior may vary among implementations that conform to
POSIX.13. 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.2 Definitions

For the purposes of this standard, the following definitions apply.

3.2.1 Application Environment Profile (AEP): An OSE profile which speci-


fies a complete and coherent subset of the Open System Environment. [ISO/IEC
TR 10000-3:1998 {7}]

3.2.2 Application Platform: A set of resources on which an application will


run.

3.2.3 Base Standard: An approved IEEE, national, regional, or international


standard which defines and describes basic functionality and capability. [ISO/IEC
TR 10000-1:1998 {6}]

3.2.4 Component Profile: An Application Environment Profile that specifies a


Unit of Functionality in terms of the interfaces that it supports and the interfaces
that it uses, and the relationships between these interfaces. [ISO/IEC TR 10000-
3:1998 {7}]

3.2.5 Conformance Document: A document provided by an implementor that


contains implementation details as described in 5.1.1.2.

3.2.6 Development Platform: A system used to prepare an application for


execution. Such a system is possibly distinct from the system on which the
application will execute.

Copyright © 2004 IEEE. All rights reserved.

26 3 Terms and Definitions

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
POSIX REALTIME AND EMBEDDED APPLICATION SUPPORT IEEE Std 1003.13-2003

3.2.7 Embedded Computer System: A computer (and its software) is


considered embedded if it is an integral component of a larger system and is used
to control and/or directly monitor that system, using special hardware devices.

3.2.8 Generic Application Environment Profile: An Application Environ-


ment Profile which is not specific to a particular community of use. [ISO/IEC TR
10000-3:1998 {7}]

3.2.9 Generic Interface Profile: An Interface Profile which is not specific to a


particular community of use. [ISO/IEC TR 10000-3:1998 {7}]

3.2.10 Industry Specific Application Environment Profile: An Application


Environment Profile which deals with specific industry requirements. [ISO/IEC
TR 10000-3:1998 {7}]

3.2.11 Industry Specific Interface Profile: An Interface Profile which deals


with specific industry requirements. [ISO/IEC TR 10000-3:1998 {7}]

3.2.12 Interface Profile: An OSE Profile defining one interface of the Open Sys-
tem Environment. [ISO/IEC TR 10000-3:1998 {7}]

3.2.13 International Standardized Profile (ISP): An internationally agreed-


to, harmonized document which identifies a standard or group of standards,
together with options and parameters, necessary to accomplish a function or set of
functions. [ISO/IEC TR 10000-1:1998 {7}]

3.2.14 Open System Environment (OSE): The comprehensive set of interfac-


es, services, and supporting formats for interoperability and/or for portability of
applications, data or people, as specified by information technology standards and
profiles. [ISO/IEC TR 10000-3:1998 {7}]

3.2.15 Priority Inversion: A condition in which a thread that is waiting for a


shared resource (including a CPU) is involuntarily prevented from executing by a
thread with a lower application-specified priority. The delays caused by priority
inversion can be extremely large in the case of unbounded priority inversion. But
there are mechanisms to bound these delays to small predictable intervals. See
also: Unbounded Priority Inversion.

3.2.16 Profile (for ISO standardization): A set of one or more base standards
and, where applicable, chosen classes, subsets, options, and parameters of those
base standards to accomplish a function. [ISO/IEC TR 10000-1:1998 {6}]

3.2.17 Realtime Environment Profile: A profile designed to support applica-


tions requiring bounded response.

Copyright © 2004 IEEE. All rights reserved.

3.2 Definitions 27

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
IEEE Std 1003.13-2003 STANDARDIZED APPLICATION ENVIRONMENT PROFILE (AEP)

3.2.18 System Documentation: All documentation provided with an imple-


mentation, except the conformance document.
Electronically distributed documents for an implementation are considered part of
the system documentation.

3.2.19 Subprofiling Option Group: A Unit of Functionality. See: Unit of


Functionality.

3.2.20 System Profile: An Application Environment Profile that specifies a set


of functions necessary to support a class of applications. It specifies the behavior
to be observed at the interfaces of the application platform on which the class of
applications can run. [ISO/IEC TR 10000-3:1998 {7}]
NOTE: A system profile is defined in terms of component profiles that specify Units of Func-
tionality that can be combined to realize the application platform.

3.2.21 Unbounded Priority Inversion: A priority inversion condition in which


the delay caused to the waiting thread cannot be bounded by the duration of the
intervals during which lower priority threads hold the shared resource. For
example, this can happen when a lower priority thread is holding a lock also
requested by the high priority thread, and then one or more medium priority
threads request execution, thus preempting the lower priority thread. See also:
Priority Inversion.

3.2.22 Unit of Functionality: A separately implementable element of an OSE


system. [ISO/IEC TR 10000-3:1998 {7}]

3.3 Rationale for Definitions (informative)

(This clause is not a normative part of IEEE Std 1003.13-2003.)

Embedded Computer System. For the definition of an embedded computer


system, the following canonical examples were taken into account:
— Are programs that understand physics and/or hardware embedded? For
example, one that uses finite-element methods to predict fluid flow over
airplane wings? No. These programs are never considered to be embedded
because they are not an integral component of a larger system.
— Is the internal microprocessor controlling a disk drive an example of an
embedded system? Yes, regardless of what the disk drive is used for. The
software (firmware, actually) within the disk drive controls the HDA (head
disk assembly) hardware and is hard realtime as well.

Copyright © 2004 IEEE. All rights reserved.

28 3 Terms and Definitions

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
POSIX REALTIME AND EMBEDDED APPLICATION SUPPORT IEEE Std 1003.13-2003

— I/O drivers control hardware, so does presence of an I/O driver imply that
the computer executing the driver is embedded? No, because that computer
may be a general-purpose computer that is not part of a larger system.
— Is a PDA (Personal Digital Assistant) an embedded system? No. People
often say that PDAs are embedded because they are very small and
constrained and because PDA OS and application software is kept in non-
volatile memory, but PDAs parallel the desktop systems used to run office
productivity applications, and no special hardware is being controlled.
— Is the microprocessor controlling a cell phone an embedded system? Yes.
The firmware in the cell phone is controlling the radio hardware.
— Are the computers in a big phased-array radar considered embedded?
These radars are ten-story buildings with one to three 100-foot diameter
radiating patches on the sloped sides of the building. Yes. These computers
were generally some of the most powerful computers available when the
system was built, are located in a large computer room occupying almost
one whole floor of a building, and may be hundreds of meters away from the
radar hardware. However, the software running in these computers
controls the radar hardware; therefore, the computers are an integral
component of a larger system.
— Is a traditional Flight Management System (FMS) built into an airplane
cockpit considered embedded? If the FMS is not connected to the avionics
and is used only for logistics computations, a function readily performed on
a laptop, then the FMS is clearly not embedded.
— Are the computers in a hardware-in-the-loop (HIL) simulator embedded?
Yes, both in the simulator, and in the thing being tested in the HIL simu-
lator. Hardware is being controlled on both sides.
— Is the computer controlling a pacemaker in a person’s chest an embedded
computer? Yes. In this case the “system” is the combination of the
pacemaker and the person’s heart.
— Is the computer controlling fuel injection in an automobile engine
embedded? Yes. It is part of a larger system, the engine, and it is directly
monitoring and controlling the engine through special hardware.

Copyright © 2004 IEEE. All rights reserved.

3.3 Rationale for Definitions (informative) 29

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
This page is left intentionally blank.

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
IEEE Std 1003.13-2003

Section 4: Conventions and Abbreviations

4.1 Conventions

This standard uses the following typographic conventions:


(1) The italic font is used for
— Symbolic parameters that are generally substituted with real values by
the application
— C language data types and function names
— Global external variable names
— Function families; references to groups of closely related functions
(2) The bold font is used in tables to enhance visibility of option names.
(3) The constant-width (Courier) font is used
— For references to utility names and C language headers
— For names of attributes in attributes objects
— For references to Ada identifiers.
(4) Normative references listed in 2.1 are represented as
{1}
(5) Symbolic constants or limits defined in certain headers are represented as
_POSIX_AEP_REALTIME_

In some cases, tabular information is presented “inline”; in others, it is presented


in a separately labeled table. This arrangement was employed purely for ease of
typesetting and there is no normative difference between these two cases.
The conventions listed previously are for ease of reading only. Editorial inconsis-
tencies in the use of typography are unintentional and have no normative meaning
in this standard.

Copyright © 2004 IEEE. All rights reserved.

4.1 Conventions 31

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
IEEE Std 1003.13-2003 STANDARDIZED APPLICATION ENVIRONMENT PROFILE (AEP)

Notes provided as parts of labeled tables and figures are integral parts of this
standard (normative). Footnotes and notes within the body of the text are for
information only (informative).

4.2 Abbreviations

For the purposes of this standard, the following abbreviations apply:

4.2.1 Ada95 RM: ISO/IEC 8652:1995 {1}.

4.2.2 C99 Standard: ISO/IEC 9899:1999 {2}.

4.2.3 COTS: Commercial-off-the-Shelf.

4.2.4 MMU: Memory Management Unit.

4.2.5 POSIX.1: ISO/IEC 9945:2003 {3}.

4.2.6 POSIX.26: IEEE Std 1003.26-2003 {4}.

4.2.7 POSIX.5c: ISO/IEC 14519:2001 {5}.

4.2.8 POSIX.13: This standard.

4.2.9 AEP: Application Environment Profile.

4.2.10 ISP: International Standardized Profile.

4.2.11 OSE: Open System Environment.

4.2.12 PSE: Generic Environment Profile.

4.2.13 PSE51: The Minimal Realtime System Profile defined herein.

4.2.14 PSE52: The Realtime Controller System Profile defined herein.

4.2.15 PSE53: The Dedicated Realtime System Profile defined herein.

4.2.16 PSE54: The Multi-Purpose Realtime System Profile defined herein.

4.2.17 PSE5X: Any one of the PSE51, PSE52, PSE53, or PSE54 profiles.

Copyright © 2004 IEEE. All rights reserved.

32 4 Conventions and Abbreviations

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
IEEE Std 1003.13-2003

Section 5: Conformance

5.1 Conformance

5.1.1 Implementation Conformance

5.1.1.1 Requirements

An implementation may claim conformance to one or more of the profiles defined


by this standard. For any given profile a conforming implementation shall meet all
of the following criteria:
(1) The system shall support all required interfaces referenced in the
appropriate standardized profile. These interfaces shall support the
functional behavior described in the appropriate base standard and any
additional constraints or options described herein.
(2) The system may provide additional functions or facilities not required by
this standard. Nonstandard extensions should be identified as such in the
system documentation. Nonstandard extensions, when used, may change
the behavior of functions or facilities defined in the appropriate base stan-
dard. The conformance document shall define an environment in which an
application can be run with predictable behavior specified by the referenced
standards. In no case shall such an environment require modification of a
Strictly Conforming POSIX.13 Application.

5.1.1.2 Documentation

An implementation conforming to one or more of the profiles defined by this


standard shall provide a conformance document that shall document conformance
in one of two specific manners:
(1) If the implementation is fully conformant to the referenced base stan-
dard(s), then that implementation may cite the separate conformance

Copyright © 2004 IEEE. All rights reserved.

5.1 Conformance 33

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
IEEE Std 1003.13-2003 STANDARDIZED APPLICATION ENVIRONMENT PROFILE (AEP)

documents that document the base standard conformance. This will prima-
rily apply to implementations that support the PSE53 or PSE54 Profiles.
(2) If the implementation does not fully conform to one or more of the refer-
enced base standards, or if separate base standard conformance documents
are not cited, the implementation shall document the specific extent of con-
formance to each such base standard. This specification shall include
— A complete list of interfaces from the base standard that are present in
the implementation.
— Limit values whose specification is normally required in a conformance
document for the base standard (e.g., the limit values found in the
<limits.h> and <unistd.h> headers for the C language option or in
the POSIX_Limits package for the Ada language option), stating
values, the conditions under which those values may change, and the
limits of such variations, if any.
— A description of the behavior of the implementation for all
implementation-defined features specified by those portions of the base
standard that the implementation provides. This requirement shall be
met by listing these features and providing either a specific reference
to the system documentation or providing full syntax and semantics of
these features. The conformance document may specify the behavior of
the implementation for those features where the referenced standards
state that the implementations may vary or where features are
identified as undefined or unspecified.
Regardless of whether separate base standard conformance documents are cited,
the conformance document for these profile(s) shall contain a statement that
indicates the full name, number, and date of the standard (i.e., the profile
standard) that applies. The conformance document may also list international
standards that are available for use by a Conforming POSIX.13 Application.
Applicable characteristics where documentation is required by one of these
standards or by standards of government bodies may also be included.

5.1.2 Application Conformance

An application claiming conformance to one or more of these profiles shall use only
the facilities described in that profile and included referenced standard elements,
and shall fall within one of the categories in 5.1.2.1, 5.1.2.2, or 5.1.2.3.
Any application that conforms to one or more of these profiles under the C
language option also conforms to POSIX.1 {3}. Any application that conforms to
one or more of these profiles under the Ada language option also conforms to
POSIX.5c {5}.

Copyright © 2004 IEEE. All rights reserved.

34 5 Conformance

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
POSIX REALTIME AND EMBEDDED APPLICATION SUPPORT IEEE Std 1003.13-2003

5.1.2.1 Strictly Conforming Application

An application is said to be strictly conforming to a given POSIX.13 profile if the


application requires only the facilities required in that profile. Such an application
shall accept any behavior described in the profile as unspecified or implementation-
defined, and for symbolic constants, shall accept any value in the range permitted
by the profile. Such applications are permitted to adapt to the availability of
facilities whose availability is indicated by the constants in 6.1.3, 7.1.3, 8.1.3, and
9.1.3.

5.1.2.2 Conformant Application

5.1.2.2.1 ISO/IEC Conformant Application

An application is said to be ISO/IEC Conformant to a given POSIX.13 profile if the


application requires only the facilities required in that profile and approved Con-
formant Language bindings for any ISO or IEC standard. Such an application
shall include a statement of conformance that documents all options and limit
dependencies, and all other ISO or IEC standards used.

5.1.2.2.2 <National Body> Conformant POSIX.13 Application

An application is said to be <National Body> Conformant to a given POSIX.13 pro-


file if the application requires only the facilities required in that profile. Such an
application shall include a statement of conformance to document all options and
limit dependencies, and all other <National Body> standards used.

5.1.2.3 Conformant Application Using Extensions

An application is said to be conformant using extensions if it only uses


nonstandard facilities consistent with this standard. Such an application shall
fully document its requirements for these extended facilities, in addition to the
documentation required of a Conformant Application. A Conformant Application
Using Extensions shall be either an ISO/IEC Conformant Application Using
Extensions or a <National Body> Conformant Application Using Extensions. (See
5.1.2.2.1 and 5.1.2.2.2.)

Copyright © 2004 IEEE. All rights reserved.

5.1 Conformance 35

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
This page is left intentionally blank.

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
IEEE Std 1003.13-2003

Section 6: Minimal Realtime System Profile (PSE51)

6.1 Introduction

This section specifies those standards required for conformance to the Minimal
Realtime System Profile option and, where applicable, the state of any options
contained in those standards.
When a referenced standard specifies services beyond those required by the Mini-
mal Realtime System Profile, only those services included in the specified Units of
Functionality referenced by this profile shall be required (see Table 1-1 through
Table 1-17). All the applicable definitions in POSIX.1 {3} and/or POSIX.5c {5} shall
still apply.

6.1.1 Identification

For the C language implementation, symbolic names shall be used to specify the
presence or absence of each option in this profile. Names reserved for use in this
profile begin with the string _POSIX_AEP_REALTIME_. For the Ada language im-
plementation, a set of Boolean subtypes contained in package POSIX_Options
(defined in POSIX.5c {5}, Section 2.5) shall be used to specify the presence or ab-
sence of each option in this profile.

6.1.2 Conformance

Conformance to the Minimal Realtime System Profile option shall be indicated as


follows:
— For the C language implementation, the symbol _POSIX_AEP_-
REALTIME_MINIMAL being defined in the header <unistd.h> to be
200312L.
— For the Ada language implementation, the Boolean subtype POSIX_-
Profiles.Realtime_Minimal subtype having the range True..True,

Copyright © 2004 IEEE. All rights reserved.

6.1 Introduction 37

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
IEEE Std 1003.13-2003 STANDARDIZED APPLICATION ENVIRONMENT PROFILE (AEP)

and the constant POSIX_Profiles.Realtime_AEP_Version having the


value 2003_12.

6.1.3 Options

The presence or absence of optional features shall be indicated as follows:


— For the C language implementation, if any of the following symbols are
defined in the header <unistd.h>, then a corresponding programming
environment is supported:
_POSIX_AEP_REALTIME_LANG_C99
_POSIX_AEP_REALTIME_LANG_Ada95

— For the Ada language implementation, if any of the following Boolean


subtypes has the range True..True, then the corresponding option is
supported:
POSIX_Profiles.Realtime_Lang_C99
POSIX_Profiles.Realtime_Lang_Ada95

6.1.4 The Compilation Environment (C language option)

Certain symbols required by PSE51 are defined in headers. Some of those headers
could also define symbols other than those required by PSE51, potentially conflict-
ing with symbols used by the application. Also, POSIX.1 {3} defines symbols that
are not permitted by other standards to appear in those headers without some con-
trol on the visibility of those symbols. Symbols called “feature test macros” are
used to control the visibility of symbols that might be included in a header.
An application conforming to PSE51 should ensure that the feature test macro
_POSIX_AEP_RT_MINIMAL_C_SOURCE is defined before inclusion of any header.
When an application includes a header described by POSIX.1 {3} and when this
feature test macro is defined to have the value 200312L,
(1) All symbols required by PSE51 to appear when the header is included shall
be made visible.
(2) Symbols that are explicitly permitted, but not required, by PSE51 to appear
in that header (including those in reserved name spaces) may be made
visible.
(3) Additional symbols not required or explicitly permitted by PSE51 to be in
that header shall not be made visible, except when enabled by another fea-
ture test macro.

Copyright © 2004 IEEE. All rights reserved.

38 6 Minimal Realtime System Profile

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
POSIX REALTIME AND EMBEDDED APPLICATION SUPPORT IEEE Std 1003.13-2003

6.2 Operating System Interface Requirements

6.2.1 POSIX.1 Interfaces (C Language Option)

The Minimal Realtime System Profile implementation shall include interfaces as


defined in POSIX.1 {3} for the Units of Functionality shown in Table 6-1 (see
Table 1-1 for a complete list of POSIX.1 Units of Functionality).

Table 6-1 — POSIX.1 Units of Functionality Requirements


Unit of Functionality
POSIX_C_LANG_JUMP
POSIX_C_LANG_SUPPORT
POSIX_DEVICE_IO
POSIX_FILE_LOCKING
POSIX_SIGNALS
POSIX_SINGLE_PROCESS
POSIX_THREADS_BASE
XSI_THREAD_MUTEX_EXT
XSI_THREADS_EXT

An implementation supporting the Minimal Realtime System Profile shall support


the POSIX.1 options shown in Table 6-2.

Table 6-2 — POSIX.1 Option Requirements


Option
_POSIX_CLOCK_SELECTION
_POSIX_FSYNC
_POSIX_MEMLOCK
_POSIX_MEMLOCK_RANGE
_POSIX_MONOTONIC_CLOCK
_POSIX_REALTIME_SIGNALS
_POSIX_SEMAPHORES
_POSIX_SHARED_MEMORY_OBJECTS
_POSIX_SYNCHRONIZED_IO
_POSIX_THREAD_ATTR_STACKADDR
_POSIX_THREAD_ATTR_STACKSIZE
_POSIX_THREAD_CPUTIME
_POSIX_THREAD_PRIO_INHERIT
_POSIX_THREAD_PRIO_PROTECT
_POSIX_THREAD_PRIORITY_SCHEDULING
_POSIX_THREAD_SPORADIC_SERVER
_POSIX_TIMEOUTS
_POSIX_TIMERS

Copyright © 2004 IEEE. All rights reserved.

6.2 Operating System Interface Requirements 39

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
IEEE Std 1003.13-2003 STANDARDIZED APPLICATION ENVIRONMENT PROFILE (AEP)

The value of TIMER_MAX shall be at least 64.


The value of RTSIG_MAX shall be at least 16.
The range of priorities associated with the SCHED_RR scheduling policy shall have
at least 31 distinct values that are less than the maximum priority of the
SCHED_FIFO policy.

An implementation conforming to PSE51 shall provide a mechanism to configure


the system so that the scheduling allocation domain has size one, and so that the
binding of threads to scheduling allocation domains remains static. The mecha-
nism by which this requirement is achieved shall be implementation defined. In
addition, a PSE51 implementation may provide other configurations or facilities to
change the size of the allocation domain and the bindings of threads to allocation
domains. For a description of the scheduling allocation domain, see the System
Interfaces volume of POSIX.1 {3}, Section 2.9.2.

6.2.2 POSIX.26 Interfaces (C Language Option)

An implementation conforming to PSE51 shall support all the interfaces defined


in POSIX.26 {4}. The mechanism to create character special files shall be imple-
mentation defined. This mechanism shall provide a binding to the device driver
when the open() function is called with the name of the created character special
file.

6.2.3 POSIX.5c Interfaces (Ada Language Option)

The Minimal Realtime System Profile implementation shall include interfaces as


defined in POSIX.5c {5} for the Units of Functionality shown in Table 6-3 (see
Table 1-2 through Table 1-17 for a complete list of POSIX.5c Units of
Functionality).

Table 6-3 — POSIX.5c Units of Functionality Requirements


Unit of Functionality
POSIX_ADA_LANG_SUPPORT
POSIX_DEVICE_IO
POSIX_FILE_LOCKING
POSIX_SIGNALS
POSIX_SINGLE_PROCESS

Copyright © 2004 IEEE. All rights reserved.

40 6 Minimal Realtime System Profile

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
POSIX REALTIME AND EMBEDDED APPLICATION SUPPORT IEEE Std 1003.13-2003

The Minimal Realtime System Profile implementation shall support the POSIX.5c
options shown in Table 6-4, by defining the associated option subtypes to have the
range True..True, with the exception of the Filename Truncation option for
which the associated subtype shall have the range False..False.

Table 6-4 — POSIX.5c Option Requirements


Option
File Synchronization
Memory Locking
Memory Range Locking
Filename Truncation
Realtime Signals
Semaphores
Shared Memory Objects
Synchronized I/O
Mutexes
Mutex Priority Inheritance
Mutex Priority Ceiling
Timers

POSIX_Limits.Timers_Maxima'First shall be at least 64.


POSIX_Limits.Realtime_Signals_Maxima'First shall be at least 16.
Regarding task priority scheduling, the implementation shall support the follow-
ing requirements from POSIX.5c {5} and the Ada95 RM {1}:
— The implementation shall support the priority model defined in the Ada95
RM {1}, Section D.1, and the pragmas and package interfaces defined in the
Ada95 RM {1}, Sections D.2–D.5.
— The implementation shall meet the requirements of POSIX.5c {5},
Section 13.3.1.
The blocking behavior of all reentrant operations defined by POSIX.5c {5} shall be
per task, i.e., a blocked task cannot prevent any other task from executing. There-
fore, the corresponding Blocking_Behavior constants shall have the value
Tasks. (See POSIX.5c {5}, Section 2.4.1.5.)
Implementations of the PSE51 profile shall support the POSIX_Profiles pack-
age defined in Annex A of this standard.
The subprogram POSIX_Signals.Set_Stopped_Child_Signal shall fail
silently.
The subprogram POSIX_Signals.Stopped_Child_Signal_Enabled shall re-
turn False.
POSIX_Limits.Groups_Maxima'First shall be zero.

Copyright © 2004 IEEE. All rights reserved.

6.2 Operating System Interface Requirements 41

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
IEEE Std 1003.13-2003 STANDARDIZED APPLICATION ENVIRONMENT PROFILE (AEP)

Subprograms not supported by a given profile shall raise POSIX_Error, returning


an error code of Operation_Not_Supported, except as noted otherwise.
All Image and Value functions that appear in the packages supported by a profile
must be implemented.
Where an overloaded subprogram is required by a Unit of Functionality, all forms
of the subprogram appearing in the referenced clause must be supported, except
as otherwise noted.

6.3 Application Constraints

The Minimal Realtime System profile defined in this standard requires only
specific Units of Functionality of the required standards. The absence of particular
elements of these standards introduces constraints on the use of some of the
features of particular operations. This clause defines the constraints that an
application strictly conforming to one of the profiles shall observe when using each
of the operations required by that profile.

6.3.1 Constraints related to POSIX.1 Interfaces (C Language Option)

Table 6-5 defines a set of functions that shall be either reentrant or noninterrupt-
ible by signals and shall be async-signal-safe. Therefore applications may invoke
them, without restriction, from signal-catching functions. No other function, in-
cluding those defined in the System Interfaces volume of POSIX.1 {3},
Section 2.4.3, is required to be async-safe in an implementation of the PSE51 pro-
file, and thus PSE51 Strictly Conforming Applications shall not use them from in-
side signal handlers.

Table 6-5 — Functions required to be async-signal-safe

alarm() sigaddset() sigpending() timer_getoverrun(


clock_gettime() sigdelset() sigprocmask() )
kill() sigemptyset() sigqueue() timer_gettime()
raise() sigfillset() sigset() timer_settime()
sem_post() sigismember() sysconf() times()
sigaction() signal() time() uname()

Copyright © 2004 IEEE. All rights reserved.

42 6 Minimal Realtime System Profile

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
POSIX REALTIME AND EMBEDDED APPLICATION SUPPORT IEEE Std 1003.13-2003

The sysconf() function has the following constraints:


(1) An application strictly conforming to the PSE51 profile shall not call the
sysconf() function with the parameter _POSIX_VERSION since a meaningful
value cannot be returned.1)
(2) A conforming application must act as if CHILD_MAX=0.
An application strictly conforming to PSE51 shall be considered erroneous if any
signal results in abnormal termination of the process because this profile does not
support multiple processes.
An application strictly conforming to PSE51 shall not call the kill() function with
a negative but not –1 argument because this profile does not require process group
functionality.
An application strictly conforming to PSE51 shall be guaranteed that the file mode
creation mask for any object created by any process is S_IRWXU; that is, the object
shall be fully accessible to the creator.
An application strictly conforming to PSE51 shall not use the open(), fopen(), or
freopen() functions to create new files, since this profile does not require general
file system capabilities.
An application strictly conforming to PSE51 shall use the path or file argument for
any function using a file pathname [e.g., open()] only to specify the name of the ob-
ject without any file system semantics implied, since this profile does not require
general file system semantics.
An application strictly conforming to PSE51 shall not require that any input/
output function (e.g., fclose(), fflush(), fgetc(), fgets(), fopen(), fprintf(), fputc(),
fputs(), fread(), fscanf(), fwrite(), getc(), getchar(), gets(), open(), perror(), printf(),
putc(), putchar(), puts(), read(), scanf(), vfprintf(), vfscanf(), vprintf(), vscanf(),
write()) update an access, creation, or modification time for the device read or
written, because this profile requires no interfaces that could query such an access
time.

6.3.2 Constraints related to POSIX.5c Interfaces (Ada Language Option)

An application strictly conforming to PSE51 shall not call the functions


POSIX_Configurable_System_Limits.System_POSIX_Version or POSIX_-
Configurable_System_Limits.System_POSIX_Ada_Version, since a mean-
ingful value cannot be returned.2)

1) Conformance to this profile can be checked with the symbols defined in 6.1.3.
2) Conformance to this profile can be checked with the subtypes defined in 6.1.3.

Copyright © 2004 IEEE. All rights reserved.

6.3 Application Constraints 43

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
IEEE Std 1003.13-2003 STANDARDIZED APPLICATION ENVIRONMENT PROFILE (AEP)

A conforming application must act as if POSIX_Limits.Child_Processes_-


Maxima'Last=0.
An application strictly conforming to PSE51 shall be considered erroneous if any
signal results in abnormal termination of the process because this profile does not
support multiple processes.
An application strictly conforming to PSE51 shall not call the form of
POSIX_Signals.Send_Signal that takes a process group ID as an argument be-
cause this profile does not require process group functionality.
An application strictly conforming to PSE51 shall not attempt to bind a signal to a
task entry.
An application strictly conforming to PSE51 shall not use the
POSIX_IO.Open_Or_Create function to create new files, since this profile does
not require general file system capabilities.
An application strictly conforming to PSE51 shall use a parameter representing a
pathname (such as the Name parameter of POSIX_IO.Open or
POSIX_IO.Open_Or_Create) only to specify the name of the object without any
file system semantics implied, since this profile does not require general file sys-
tem semantics.
An application strictly conforming to PSE51 shall not require that any input/out-
put function such as POSIX_IO.Read, POSIX_IO.Generic_Read,
POSIX_IO.Write, or POSIX_IO.Generic_Write, update an access, creation, or
modification time for the device read or written, because this profile requires no
interfaces that could query such an access time.
Implementations of PSE51 need not support the Owner, Group, and Other fields
of the form parameter (see POSIX.5c {5}, Section 8.1.1.2), but may instead raise
Use_Error. The default value used shall be Read_Write_Execute.
Implementations of PSE51 need not support the File_Structure field of the
form parameter (see POSIX.5c {5}, Section 8.1.1.2), but may instead raise
Use_Error. All files shall default to regular files.
In addition, the following constraints apply to the usage of the predefined Ada I/O
packages:
(1) An application strictly conforming to PSE51 shall not require any of the
Input/Output operations (Read, Write, Get, Put, etc.) contained in the
predefined Ada I/O packages or their instantiations to update an access,
creation, or modification time for the device read or written, because this
profile requires no interfaces that could query such an access time.
(2) An application strictly conforming to PSE51 shall use the Name of the Open
operations contained in the predefined Ada I/O packages or their
instantiations only to specify the name of the object without any file system
semantics implied, since this profile does not require general file system
capabilities.

Copyright © 2004 IEEE. All rights reserved.

44 6 Minimal Realtime System Profile

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
POSIX REALTIME AND EMBEDDED APPLICATION SUPPORT IEEE Std 1003.13-2003

(3) An application strictly conforming to PSE51 shall not call any of the
Create or Delete operations contained in the predefined Ada I/O
packages or their instantiations, since this profile does not require general
file system capabilities.

6.4 Shell and Utility Requirements

An implementation of the Minimal Realtime System Profile is not required to sup-


port any of the services described in the Shell and Utilities volume of POSIX.1 {3}.

6.5 Development Platform Requirements

One or more of the development options in 6.5.1 and 6.5.2 shall be implemented.

6.5.1 C Language Development Option

If this option is provided, the implementor shall define a Development Platform


and an environment capable of preparing for execution an application conformant
with this standard profile. This platform shall include the POSIX2_C_DEV and
POSIX2_SW_DEV options from the Shell and Utilities volume of POSIX.1 {3}.

6.5.1.1 Option Indicator

The presence of the C Language Development Option shall be indicated by the


symbol _POSIX_AEP_REALTIME_LANG_C99 being defined in the header
<unistd.h>. In addition, the presence of the C Language Development Option
may be indicated by the subtype POSIX_Profiles.Realtime_Lang_C99 having
the range True..True.

6.5.2 Ada Language Development Option

If this option is provided, the implementor shall define a Development Platform


and an environment capable of preparing for execution an application conformant
with this profile including applicable portions of the following:

Copyright © 2004 IEEE. All rights reserved.

6.4 Shell and Utility Requirements 45

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
IEEE Std 1003.13-2003 STANDARDIZED APPLICATION ENVIRONMENT PROFILE (AEP)

— The Ada95 RM {1}


— POSIX.5c {5}
— The POSIX2_SW_DEV option from the Shell and Utilities volume of POSIX.1
{3}.

6.5.2.1 Option Indicator

The presence of the Ada Language Development Option shall be indicated by the
subtype POSIX_Profiles.Realtime_Lang_Ada95 having the range
True..True. In addition, the presence of the Ada Language Development Option
may be indicated by the symbol _POSIX_AEP_REALTIME_LANG_Ada95 being de-
fined in the header <unistd.h>.

6.6 Rationale for Operating System Requirements (informative)

(This clause is not a normative part of IEEE Std 1003.13-2003.)

6.6.1 Operating System Interface Requirements

After reviewing several commercially available small realtime kernels, it was con-
cluded that the POSIX.1 threads model (with all options enabled, but without a file
system) best reflected current industry practice in certain embedded realtime ar-
eas. Instead of full file system support, basic device I/O (read, write, open, close,
control) is considered sufficient for kernels of this size. Systems of this size fre-
quently do not include process isolation hardware or software; therefore, multiple
processes (as opposed to threads) may not be supportable.
System options that allow an application to be upwards compatible without
modifying application source code have been chosen. For example, although the
assumed hardware model implies fixed address space without an MMU, the
symbol _POSIX_MEMLOCK is still defined. This increases portability of the
application code to higher level systems that do not necessarily have the same
restrictions.

Copyright © 2004 IEEE. All rights reserved.

46 6 Minimal Realtime System Profile

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
POSIX REALTIME AND EMBEDDED APPLICATION SUPPORT IEEE Std 1003.13-2003

6.6.1.1 Process Primitives

Because this profile uses the POSIX.1 threads model only as the mechanism to
achieve concurrency, most POSIX.1 process primitives do not apply. This includes
the multi-process, pipes, and signal jump Units of Functionality, as well as the
process spawn option.
The main() function is needed to allow application-specific information to be
passed from boot code to the single (implicit) process (and its threads).

6.6.1.2 Signals

Signal services are a basic mechanism within POSIX-based systems and are
required for error and event handling. Realtime systems typically have several
logically concurrent software elements executing. Each such entity must respond
to several cyclic and/or acyclic stimuli, often in a time-critical manner. Although
purely synchronous models can supply such functionality via the use of additional
processes or threads, the current realtime practice for asynchronous notification
for events such as timeout, message arrival, and hardware interrupt can generally
be expected to offer higher performance and lower latency. Realtime Signals
provide the reliable high-performance mechanism to support such notification.
The minimum number of realtime signals that the implementation is required to
support has been increased from the number specified in POSIX.1 {3}, 8, to 16. The
rationale for this increase is that there are many applications that have more than
8 different kinds of events. Doubling the number of required realtime signals
should have a minimum impact on the signal management overhead, while signif-
icantly increasing the number of event kinds that can be used by a strictly conform-
ing application.

6.6.1.3 Process Environment

The functions from the POSIX.1 Process Environment group are deemed necessary
to allow an application to determine and configure its system environment. This
allows a single version of an application to be run on similar but differing plat-
forms; however, conforming applications must act as if CHILD_MAX=0.

6.6.1.4 Files and Directories

The open() function is needed to do basic device I/O and also to provide device ini-
tialization. Although this requires some form of name resolution, a full pathname
space is specifically not required. Directories also are not required. Units of

Copyright © 2004 IEEE. All rights reserved.

6.6 Rationale for Operating System Requirements (informative) 47

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
IEEE Std 1003.13-2003 STANDARDIZED APPLICATION ENVIRONMENT PROFILE (AEP)

Functionality or options associated with files, such as POSIX_FD_MGMT,


POSIX_FIFO, POSIX_FILE_ATTRIBUTES, POSIX_FILE_SYSTEM, POSIX_FILE_-
SYSTEM_EXT, _POSIX_ADVISORY_INFO, and _POSIX_MAPPED_FILES, are not
required.
Since a file system is not a part of this realtime profile, the _POSIX_NO_TRUNC re-
quirement is applied to the names of devices and shared memory objects.
The File Locking option is required in the C language option to maintain a consis-
tent and safe way of accessing stdio (FIL E *) objects from threads, across the four
realtime profiles.

6.6.1.5 Input and Output Primitives

The functions contained in the Device I/O Unit of Functionality are required to do
basic I/O and device cleanup.
Asynchronous I/O is not required because it can be easily implemented using
threads dedicated to I/O.
The posix_devctl() function defined in POSIX.26 {4} is required to support control
operations on I/O devices.

6.6.1.6 Synchronized Input and Output

The Synchronized (unbuffered) I/O interface (including the File Synchronization


option) is typical for basic device I/O and is required for upward portability.

6.6.1.7 Device- and Class-Specific Functions

POSIX.1 Device- or Class-Specific functions are not required, because small em-
bedded systems usually do not require general-purpose terminal interfaces.

6.6.1.8 System Databases, Users, and Groups

Implementations are not required to support more than one user and group id
since there are not multiple users and groups. No POSIX.1 System Database func-
tions are required.

Copyright © 2004 IEEE. All rights reserved.

48 6 Minimal Realtime System Profile

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
POSIX REALTIME AND EMBEDDED APPLICATION SUPPORT IEEE Std 1003.13-2003

6.6.1.9 Synchronization

Mutexes and Condition Variables are required as part of the threads model of
concurrency.
The Process Shared option is not required because there is only a single process.
Semaphores are required in the PSE51 profile for synchronization between
threads to maintain compatibility with past industry practice. However, mutexes
and condition variables are preferred in most current applications. It must be
noted that POSIX semaphores do not have the mechanisms built in to avoid un-
bounded priority inversion when using them for mutually exclusive access to
shared resources. Mutexes with the appropriate priority inheritance or priority
ceiling (also called priority protection) protocols can be used to avoid this
unbounded priority inversion.
Barriers are not required because they can easily be implemented using mutexes
and condition variables. Although a direct implementation of barriers can have a
significant efficiency benefit in some multiprocessor architectures, a mutex-and-
condition-variable implementation will not be significantly slower in most archi-
tectures, and thus requiring barriers for all implementations is not justified.
Spin locks are not required because, although they are an efficient synchronization
mechanism, they cannot be portably used with the current POSIX.1 interfaces in
realtime applications. If a realtime scheduling policy such as SCHED_FIFO or
SCHED_RR is used, spin locks may cause deadlock on a single processor. On
multiprocessors, to avoid deadlock, it would be necessary for threads using a given
lock to be allocated to different processors. There are no standard APIs in the cur-
rent POSIX.1 {3} to allocate threads to specific processors.
Reader/Writer Locks are not required because they are not designed to avoid
unbounded priority inversion, and thus very long delays could occur in realtime
applications, with a low but nevertheless nonzero probability. It is expected that a
future revision of POSIX.1 {3} will add the priority inheritance and/or priority
ceiling options to reader/writer locks, which would eliminate the unbounded
priority inversion.

6.6.1.10 Priority Scheduling

Thread priority scheduling is required for realtime applications. The Sporadic


Server Scheduling option is also required to enhance support of applications with
aperiodic timing requirements.
A common requirement of realtime systems is that they be able to run threads with
realtime requirements together with threads with no realtime requirements. One
common way of doing this is by having the realtime threads run under the
SCHED_FIFO scheduling policy, while the non-realtime threads run at a lower

Copyright © 2004 IEEE. All rights reserved.

6.6 Rationale for Operating System Requirements (informative) 49

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
IEEE Std 1003.13-2003 STANDARDIZED APPLICATION ENVIRONMENT PROFILE (AEP)

priority under the round-robin policy (SCHED_RR) to fairly share the available
portion of the processor among them. POSIX.1 {3} requires each policy to have a
range of priorities of at least 32 distinct values, but does not impose any
requirements on how these priority ranges relate to each other. It could happen
that most or all of the SCHED_RR priorities were larger than the SCHED_FIFO
priorities, thus making it impossible to mix realtime and non-realtime threads as
required above. To solve this problem in a portable way, this profile requires that
there are at least 31 SCHED_RR priority levels below the maximum priority of
SCHED_FIFO. In this way, a strictly conforming application can use the inclusive
priority range [max_FIFO_prio, max_FIFO_prio-30] with SCHED_FIFO for
realtime threads (with a total of 31 priority levels), and then use the priority value
min(max_FIFO_prio-31,max_RR_prio) with the SCHED_RR policy, for the non-
realtime threads, with guarantee that the latter priority value is valid for the
round-robin policy.
Support for a scheduling allocation domain of size one and static binding of threads
to allocation domains is required in all the realtime profiles to achieve predictable
scheduling behavior. The allocation domain of a thread is the set of processors on
which that thread can be scheduled at any given time. POSIX.1 {3} specifies that
the scheduling rules have predictable effects only if the allocation domain is of size
one; hence the need for this requirement. For single-processor systems the alloca-
tion domain is generally of size one and thus the application can meet the require-
ment just by specifying in the conformance document that the scheduling
allocation domain is of size one and that static binding of threads to allocation
domains is the default behavior.

6.6.1.11 Process Memory Locking

Process memory locking is inherent in systems following this profile because most
PSE51 targets have no MMU and thus swapping is not supported; code and data
stay in physical memory until explicitly removed. Nevertheless, memory locking
APIs are required for upward portability to allow an application developer to take
code intended for a bare PSE51 target and unit test that code on a much larger and
more capable platform, perhaps a PSE54, with minimal modification. In those tar-
gets not using an MMU for virtual memory, the locking functions do nothing and
always report success, while in the larger profiles there really is memory to be
locked. In summary, by requiring this service in the PSE51 profile, it is possible to
write portable application code that runs correctly in all the profiles.

6.6.1.12 Shared Memory

Memory Mapped I/O may be implemented using the Shared Memory facility. An
implementation is required to provide facilities for creating (shared) memory
objects that represent ranges of physical memory that contain device control and

Copyright © 2004 IEEE. All rights reserved.

50 6 Minimal Realtime System Profile

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
POSIX REALTIME AND EMBEDDED APPLICATION SUPPORT IEEE Std 1003.13-2003

status registers or buffers. These facilities encourage the development of portable


applications.
Typed Memory objects are not required because they are useful only to systems
with special hardware architectures that have various often specialized kinds of
memory. Implementors providing support for such special architectures always
have the option to provide typed memory objects as an extension.

6.6.1.13 Clocks and Timers

High-resolution timer functions are required in most realtime systems for imple-
menting time management operations such as periodic activations, short duration
timeouts, etc. The normal POSIX.1 time management functions sleep() and alarm()
only provide a time resolution of one second, but many realtime systems require
finer resolution for specifying time.
The Monotonic Clock is required for realtime applications to ensure that deadlines
and timing requirements are not affected by clock jumps.
The Clock Selection option is required to enable choosing the clock on which sleep
operations are performed and to have access to an absolute sleep operation, which
is a common requirement in realtime applications with periodic timing
requirements.
CPU-Time clocks and timers are required as a means to detect and handle situa-
tions in which a thread overruns its assigned maximum execution time. Bounding
the execution times of the different threads in the application increases predict-
ability and reliability.
The Timeouts option is a general requirement for realtime applications and thus
is required in this profile.
The minimum number of timers that the implementation is required to support
has been increased from the number specified in POSIX.1 {3}, 32, to 64, which is
the required minimum number of threads. The reason for this increase is that
there are many applications that require one timer per thread (either realtime or
CPU-time based).

6.6.1.14 Message Passing

In the PSE51 profile of IEEE Std 1003.13-1998, message queues were required
because commercial realtime kernels available at that time with similar
functionality to the Minimal Realtime System Profile typically included some form
of message queueing mechanism for communication between threads.
However, many embedded realtime applications for small systems do not require
message queues, and this feature makes the implementation larger. Because

Copyright © 2004 IEEE. All rights reserved.

6.6 Rationale for Operating System Requirements (informative) 51

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
IEEE Std 1003.13-2003 STANDARDIZED APPLICATION ENVIRONMENT PROFILE (AEP)

message queues can be easily implemented by the application using mutexes and
condition variables, this version of the standard has dropped the requirement to
support message queues.

6.6.1.15 Threads

The basic assumption in this profile is that the system will consist of a single
(implicit) process, with multiple threads. Therefore, all basic thread services are
required, except for those related to multiple processes. The
POSIX_THREADS_BASE Unit of Functionality was specified in this standard
instead of the _POSIX_THREADS option, because this option requires reader/
writer locks, but this profile does not.

6.6.1.16 Tracing

Tracing is not required for the PSE51 environment to keep the implementation of
this profile small.

6.6.1.17 Networking

Although some small embedded systems require networking services, most do not,
so to keep the implementation small, this Unit of Functionality is not required.

6.6.1.18 Event Management

The select() function is usually associated with networking facilities, which are not
required for PSE51. Although the function could be used for regular device I/O op-
erations, most kernels that do not have networking services do not support select().
Therefore, to keep the implementation small, the Event Management Unit of
Functionality is not required.

6.6.1.19 Interfaces Related to the Shell and Utilities

Interfaces defined in the POSIX_REGEXP and POSIX_SHELL_FUNC Units of Func-


tionality are related to shells and utilities, which are not required in this profile;
therefore, these Units of Functionality are not required either.

Copyright © 2004 IEEE. All rights reserved.

52 6 Minimal Realtime System Profile

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
POSIX REALTIME AND EMBEDDED APPLICATION SUPPORT IEEE Std 1003.13-2003

6.6.1.20 X/Open Units of Functionality and Options

Some XSI Units of Functionality (XSI_C_LANG_SUPPORT, XSI_DEVICE_IO,


XSI_DEVICE_SPECIFIC, XSI_FD_MGMT, XSI_FILE_SYSTEM, XSI_IPC, XSI_JOB_-
CONTROL, XSI_JUMP, XSI_MATH, XSI_MULTI_PROCESS, XSI_SIGNALS,
XSI_SINGLE_PROCESS, XSI_SYSTEM_DATABASE, XSI_TIMERS, XSI_USER_-
GROUPS, XSI_WIDE_CHAR) have interfaces that represent extensions or alterna-
tives to interfaces in other Units of Functionality or POSIX.1 options, and there-
fore are not necessary for PSE51 environments.
The XSI_DBM Unit of Functionality includes interfaces for database management
that are not required in the PSE51 application environment.
The XSI_DYNAMIC_LINKING Unit of Functionality is not required for small em-
bedded systems, which usually operate in a static context.
The XSI_I18N Unit of Functionality provides facilities for natural language mes-
sages to the user, which are not required in small embedded systems, which typi-
cally do not have general-purpose human interfaces.
The XSI_SYSTEM_LOGGING Unit of Functionality provides facilities for logging
system activities, which are not required in PSE51 environments.
The XSI_THREAD_MUTEX_EXT Unit of Functionality is required because it has op-
tions for controlling the behavior of mutexes under erroneous application use. This
capability is interesting for any realtime application, including those targeted at
small embedded systems.
The XSI_THREADS_EXT Unit of Functionality is required because it provides func-
tions to better control a thread’s stack. This is considered useful for any realtime
application.
The _XOPEN_CRYPT option provides cryptography facilities that are not required
in PSE51 environments.
The _XOPEN_LEGACY option provides facilities for backwards compatibility that
are not required in PSE51 environments.
The _XOPEN_STREAMS option provides facilities that are mainly related to net-
working, and thus are not required for PSE51 environments, as discussed in
6.6.1.17.

6.6.1.21 Language-Specific Services for the C Programming Language

Support for the C99 Standard {2} is required in the C language option, with the ex-
ceptions of the POSIX_C_LANG_MATH and POSIX_C_LANG_WIDE_CHAR Units of
Functionality. The reasons for these exceptions are that these are very large librar-
ies that are not necessary for many of the PSE51 applications.

Copyright © 2004 IEEE. All rights reserved.

6.6 Rationale for Operating System Requirements (informative) 53

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
IEEE Std 1003.13-2003 STANDARDIZED APPLICATION ENVIRONMENT PROFILE (AEP)

6.6.1.22 Language-Specific Services for the Ada Programming Language

Support for the Ada language-specific services defined in POSIX.5c {5} is required
in the Ada language option.

6.6.2 Shell and Utility Requirements

Because the Minimal Realtime System Profile is intended for small embedded sys-
tems which usually have no terminal or graphical user interface, such a platform
would be incapable of executing a shell. In such an environment the utilities
described in the Shell and Utilities volume of POSIX.1 {3} are not usually required.

6.6.3 Development Platform Requirements

The embedded nature of the PSE51 execution platform makes it difficult to use as
a development platform. Therefore, the implementation is required to define a
development environment in which a PSE51 application can be prepared for exe-
cution on the target platform. The development platform depends on the language
option chosen by the implementation.

Copyright © 2004 IEEE. All rights reserved.

54 6 Minimal Realtime System Profile

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
IEEE Std 1003.13-2003

Section 7: Realtime Controller System Profile (PSE52)

7.1 Introduction

This section specifies those standards required for conformance to the Realtime
Controller System Profile option and, where applicable, the state of any options
contained in those standards.
When a referenced standard specifies services beyond those required by the Real-
time Controller System Profile, only those services included in the specified Units
of Functionality referenced by this profile shall be required (see Table 1-1 through
Table 1-17). All the applicable definitions in POSIX.1 {3} and/or POSIX.5c {5} still
apply.

7.1.1 Identification

For the C language implementation, symbolic names shall be used to specify the
presence or absence of each option in this profile. Names reserved for use in this
profile begin with the string _POSIX_AEP_REALTIME_. For the Ada language im-
plementation a set of Boolean subtypes contained in package POSIX_Options
(defined in POSIX.5c {5}, Section 2.5) shall be used to specify the presence or
absence of each option in this profile.

7.1.2 Conformance

Conformance to the Realtime Controller System Profile option shall be indicated


as follows:
— For the C language implementation, the symbol _POSIX_AEP_REALTIME_-
CONTROLLER being defined in the header <unistd.h> to be 200312L.

— For the Ada language implementation, the Boolean subtype POSIX_-


Profiles.Realtime_Controller having the range True..True, and
the constant POSIX_Profiles.Realtime_AEP_Version having the
value 2003_12.

Copyright © 2004 IEEE. All rights reserved.

7.1 Introduction 55

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
IEEE Std 1003.13-2003 STANDARDIZED APPLICATION ENVIRONMENT PROFILE (AEP)

7.1.3 Options

The presence or absence of optional features shall be indicated as follows:


— For the C language implementation, if any of the following symbols are de-
fined in the header <unistd.h>, then a corresponding programming en-
vironment is supported:
_POSIX_AEP_REALTIME_LANG_C99
_POSIX_AEP_REALTIME_LANG_Ada95

— For the Ada language implementation, if any of the following Boolean


subtypes has the range True..True, then the corresponding option is
supported:
POSIX_Profiles.Realtime_Lang_C99
POSIX_Profiles.Realtime_Lang_Ada95

7.1.4 The Compilation Environment (C language option)

Certain symbols required by PSE52 are defined in headers. Some of those headers
could also define symbols other than those required by PSE52, potentially conflict-
ing with symbols used by the application. Also, POSIX.1 {3} defines symbols that
are not permitted by other standards to appear in those headers without some con-
trol on the visibility of those symbols. Symbols called “feature test macros” are
used to control the visibility of symbols that might be included in a header.
An application conforming to PSE52 should ensure that the feature test macro
_POSIX_AEP_RT_CONTROLLER_C_SOURCE is defined before inclusion of any
header. When an application includes a header described by POSIX.1 {3} and when
this feature test macro is defined to have the value 200312L,
(1) All symbols required by PSE52 to appear when the header is included shall
be made visible.
(2) Symbols that are explicitly permitted, but not required, by PSE52 to appear
in that header (including those in reserved name spaces) may be made
visible.
(3) Additional symbols not required or explicitly permitted by PSE52 to be in
that header shall not be made visible, except when enabled by another fea-
ture test macro.

Copyright © 2004 IEEE. All rights reserved.

56 7 Realtime Controller System Profile

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
POSIX REALTIME AND EMBEDDED APPLICATION SUPPORT IEEE Std 1003.13-2003

7.2 Operating System Interface Requirements

7.2.1 POSIX.1 Interfaces (C language Option)

The Realtime Controller System Profile implementation shall include interfaces as


defined in POSIX.1 {3} for the Units of Functionality shown in Table 7-1 (see
Table 1-1 for a complete list of POSIX.1 Units of Functionality):

Table 7-1 — POSIX.1 Units of Functionality Requirements


Unit of Functionality
POSIX_C_LANG_JUMP
POSIX_C_LANG_MATH
POSIX_C_LANG_SUPPORT
POSIX_DEVICE_IO
POSIX_FD_MGMT
POSIX_FILE_LOCKING
POSIX_FILE_SYSTEM
POSIX_SIGNALS
POSIX_SINGLE_PROCESS
POSIX_THREADS_BASE
XSI_THREAD_MUTEX_EXT
XSI_THREADS_EXT

An implementation supporting the Realtime Controller System Profile shall sup-


port the POSIX.1 options shown in Table 7-2.

Table 7-2 — POSIX.1 Option Requirements


Option
_POSIX_CLOCK_SELECTION
_POSIX_FSYNC
_POSIX_MAPPED_FILES
_POSIX_MEMLOCK
_POSIX_MEMLOCK_RANGE
_POSIX_MESSAGE_PASSING
_POSIX_MONOTONIC_CLOCK
_POSIX_REALTIME_SIGNALS
_POSIX_SEMAPHORES
_POSIX_SHARED_MEMORY_OBJECTS
_POSIX_SYNCHRONIZED_IO
_POSIX_THREAD_ATTR_STACKADDR
_POSIX_THREAD_ATTR_STACKSIZE
_POSIX_THREAD_CPUTIME
_POSIX_THREAD_PRIO_INHERIT
_POSIX_THREAD_PRIO_PROTECT

Copyright © 2004 IEEE. All rights reserved.

7.2 Operating System Interface Requirements 57

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
IEEE Std 1003.13-2003 STANDARDIZED APPLICATION ENVIRONMENT PROFILE (AEP)

Table 7-2 — POSIX.1 Option Requirements (Continued)


Option
_POSIX_THREAD_PRIORITY_SCHEDULING
_POSIX_THREAD_SPORADIC_SERVER
_POSIX_TIMEOUTS
_POSIX_TIMERS
_POSIX_TRACE
_POSIX_TRACE_EVENT_FILTER
_POSIX_TRACE_LOG

The value of TIMER_MAX shall be at least 64.


The value of RTSIG_MAX shall be at least 16.
The range of priorities associated with the SCHED_RR scheduling policy shall have
at least 31 distinct values that are less than the maximum priority of the
SCHED_FIFO policy.

An implementation conforming to PSE52 shall provide a mechanism to configure


the system so that the scheduling allocation domain has size one, and so that the
binding of threads to scheduling allocation domains remains static. The mecha-
nism by which this requirement is achieved shall be implementation defined. In
addition, a PSE52 implementation may provide other configurations or facilities to
change the size of the allocation domain and the bindings of threads to allocation
domains. For a description of the scheduling allocation domain, see the System
Interfaces volume of POSIX.1 {3}, Section 2.9.2.

7.2.2 POSIX.26 Interfaces (C Language Option)

An implementation conforming to PSE52 shall support all the interfaces defined


in POSIX.26 {4}. The implementation shall also support the POSIX.1 mknod()
function, even if the XSI extension is not supported, as the portable mechanism to
create character special files. Appropriate values for the dev parameter are
implementation defined

Copyright © 2004 IEEE. All rights reserved.

58 7 Realtime Controller System Profile

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
POSIX REALTIME AND EMBEDDED APPLICATION SUPPORT IEEE Std 1003.13-2003

7.2.3 POSIX.5c Interfaces (Ada Language Option)

The Realtime Controller System Profile implementation shall include interfaces as


defined in POSIX.5c {5} for the Units of Functionality shown in Table 7-3 (see
Table 1-1 for a complete list of POSIX.1 Units of Functionality).

Table 7-3 — POSIX.5c Units of Functionality Requirements


Unit of Functionality
POSIX_ADA_LANG_SUPPORT
POSIX_DEVICE_IO
POSIX_FD_MGMT
POSIX_FILE_SYSTEM
POSIX_SIGNALS
POSIX_SINGLE_PROCESS

The Realtime Controller System Profile implementation shall support the


POSIX.5c options shown in Table 7-4, by defining the associated option subtypes
to have the range True..True, with the exception of the Filename Truncation op-
tion for which the associated subtype shall have the range False..False.

Table 7-4 — POSIX.5c Option Requirements


Option
File Synchronization
Memory Mapped Files
Memory Locking
Memory Range Locking
Message Queues
Filename Truncation
Realtime Signals
Semaphores
Shared Memory Objects
Synchronized I/O
Mutexes
Mutex Priority Inheritance
Mutex Priority Ceiling
Timers

POSIX_Limits.Timers_Maxima'First shall be at least 64.


POSIX_Limits.Realtime_Signals_Maxima'First shall be at least 16.
Regarding task priority scheduling, the implementation shall support the follow-
ing requirements from POSIX.5c {5} and the Ada95 RM {1}:

Copyright © 2004 IEEE. All rights reserved.

7.2 Operating System Interface Requirements 59

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
IEEE Std 1003.13-2003 STANDARDIZED APPLICATION ENVIRONMENT PROFILE (AEP)

— The implementation shall support the priority model defined in the Ada95
RM {1}, Section D.1, and the pragmas and package interfaces defined in the
Ada95 RM {1}, Sections D.2–D.5.
— The implementation shall meet the requirements of POSIX.5c {5},
Section 13.3.1.
The blocking behavior of all reentrant operations defined by POSIX.5c {5} shall be
per task, i.e., a blocked task cannot prevent any other task from executing. There-
fore, the corresponding Blocking_Behavior constants shall have the value
Tasks. (See POSIX.5c {5}, Section 2.4.1.5.)
Implementations of the PSE52 profile shall support the POSIX_Profiles pack-
age defined in Annex A of this standard.
The subprogram POSIX_Signals.Set_Stopped_Child_Signal shall fail
silently.
The subprogram POSIX_Signals.Stopped_Child_Signal_Enabled shall re-
turn False.
POSIX_Limits.Groups_Maxima'First shall be zero.
Subprograms not supported by a given profile shall raise POSIX_Error, returning
an error code of Operation_Not_Supported, except as noted otherwise.
All Image and Value functions that appear in the packages supported by a profile
must be implemented.
Where an overloaded subprogram is required by a Unit of Functionality, all forms
of the subprogram appearing in the referenced clause must be supported, except
as otherwise noted.

7.3 Application Constraints

The Realtime Controller System profile defined in this standard requires only
specific Units of Functionality of the required standards. The absence of particular
elements of these standards introduces constraints on the use of some of the
features of particular operations. This clause defines the constraints that an
application strictly conforming to one of the profiles shall observe when using each
of the operations required by that profile.

Copyright © 2004 IEEE. All rights reserved.

60 7 Realtime Controller System Profile

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
POSIX REALTIME AND EMBEDDED APPLICATION SUPPORT IEEE Std 1003.13-2003

7.3.1 Constraints Related to POSIX.1 Interfaces (C Language Option)

Table 7-5 defines a set of functions that shall be either reentrant or noninterrupt-
ible by signals and shall be async-signal-safe. Therefore applications may invoke
them, without restriction, from signal-catching functions. No other function, in-
cluding those defined in the System Interfaces volume of POSIX.1 {3},
Section 2.4.3, is required to be async-safe in an implementation of the PSE52
profile, and thus PSE52 Strictly Conforming Applications shall not use them from
inside signal handlers.

Table 7-5 — Functions required to be async-signal-safe

alarm() sigaddset() sigpending() timer_getoverrun(


clock_gettime() sigdelset() sigprocmask() )
kill() sigemptyset() sigqueue() timer_gettime()
raise() sigfillset() sigset() timer_settime()
sem_post() sigismember() sysconf() times()
sigaction() signal() time() uname()

The sysconf() function has the following constraints:


(1) An application strictly conforming to the PSE52 profile shall not call the
sysconf() function with the parameter _POSIX_VERSION since a meaningful
value cannot be returned.1)
(2) A conforming application must act as if CHILD_MAX=0.
An application strictly conforming to PSE52 shall be considered erroneous if any
signal results in abnormal termination of the process because this profile does not
support multiple processes.
An application strictly conforming to PSE52 shall not call the kill() function with
a negative but not –1 argument because this profile does not require process group
functionality.
An application strictly conforming to PSE52 shall be guaranteed that the file mode
creation mask for any object created by any process is S_IRWXU; that is, the object
shall be fully accessible to the creator.

7.3.2 Constraints related to POSIX.5c Interfaces (Ada Language Option)

An application strictly conforming to PSE52 shall not call the functions


POSIX_Configurable_System_Limits.System_POSIX_Version or

1) Conformance to this profile can be checked with the symbols defined in 7.1.3.

Copyright © 2004 IEEE. All rights reserved.

7.3 Application Constraints 61

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
IEEE Std 1003.13-2003 STANDARDIZED APPLICATION ENVIRONMENT PROFILE (AEP)

POSIX_Configurable_System_Limits.System_POSIX_Ada_Version, since
a meaningful value cannot be returned.2)
A conforming application must act as if POSIX_Limits.Child_Processes_-
Maxima'Last=0.
An application strictly conforming to PSE52 shall be considered erroneous if any
signal results in abnormal termination of the process because this profile does not
support multiple processes.
An application strictly conforming to PSE52 shall not call the form of
POSIX_Signals.Send_Signal that takes a process group ID as an argument be-
cause this profile does not require process group functionality.
An application strictly conforming to PSE52 shall not attempt to bind a signal to a
task entry.
Implementations of PSE52 need not support the File_Structure field of the
form parameter (see POSIX.5c {5}, Section 8.1.1.2), but may instead raise
Use_Error. All files shall default to regular files.

7.4 Shell and Utility Requirements

An implementation of the Realtime Controller System Profile is not required to


support any of the services described in the Shell and Utilities volume of POSIX.1
{3}.

7.5 Development Platform Requirements

One or more of the development options in 7.5.1 and 7.5.2 shall be implemented.

7.5.1 C Language Development Option

If this option is provided, the implementor shall define a Development Platform


and an environment capable of preparing for execution an application conformant
with this standard profile. This platform shall include the POSIX2_C_DEV and
POSIX2_SW_DEV options from the Shell and Utilities volume of POSIX.1 {3}.

2) Conformance to this profile can be checked with the subtypes defined in 7.1.3.

Copyright © 2004 IEEE. All rights reserved.

62 7 Realtime Controller System Profile

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
POSIX REALTIME AND EMBEDDED APPLICATION SUPPORT IEEE Std 1003.13-2003

7.5.1.1 Option Indicator

The presence of the C Language Development Option shall be indicated by the


symbol _POSIX_AEP_REALTIME_LANG_C99 being defined in the header <un-
istd.h>. In addition, the presence of the C Language Development Option may
be indicated by the subtype POSIX_Profiles.Realtime_Lang_C99 having the
range True..True.

7.5.2 Ada Language Development Option

If this option is provided, the implementor shall define a Development Platform


and an environment capable of preparing for execution an application conformant
with this profile including applicable portions of the following:
— The Ada95 RM {1}
— POSIX.5c {5}
— The POSIX2_SW_DEV option from the Shell and Utilities volume of POSIX.1
{3}.

7.5.2.1 Option Indicator

The presence of the Ada Language Development Option shall be indicated by the
subtype POSIX_Profiles.Realtime_Lang_Ada95 having the range
True..True. In addition, the presence of the Ada Language Development Option
may be indicated by the symbol _POSIX_AEP_REALTIME_LANG_Ada95 being de-
fined in the header <unistd.h>.

7.6 Rationale for Operating System Requirements (informative)

(This clause is not a normative part of IEEE Std 1003.13-2003.)

7.6.1 Operating System Interface Requirements

This model introduces system functionality that is more sophisticated than in the
Minimal Realtime System Profile, specifically in the area of I/O. Two general cat-
egories of services are added.

Copyright © 2004 IEEE. All rights reserved.

7.6 Rationale for Operating System Requirements (informative) 63

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
IEEE Std 1003.13-2003 STANDARDIZED APPLICATION ENVIRONMENT PROFILE (AEP)

The first extension is support for a simplified file and directory system. These fea-
tures are used in applications that require an alterable filename space, typically in
systems that support secondary storage and require the ability to create, change,
and delete named regular files located on a storage device. The included functions
allow the creation, deletion, and changing of file attributes of regular files.
This profile assumes the following hardware model: one or more processors with
local memory and one or more serial interfaces. (It is anticipated that the serial
interface(s) may be removed in final production systems.) Driver-level I/O to
standard and nonstandard devices are supported. In addition, a file system device
is supported. The hardware is not required to provide memory management.

7.6.1.1 Process Primitives

Because this profile uses the POSIX.1 threads model only as the mechanism to
achieve concurrency, most POSIX.1 process primitives do not apply. This includes
the multi-process, pipes, and signal jump Units of Functionality, as well as the
process spawn option. Although PSE52 has only a single (implicit) process, some
interprocess APIs are required to support communication between applications.
The main() function is needed to allow application-specific information to be
passed from boot code to the single process (and its threads).

7.6.1.2 Signals

Signal services are a basic mechanism within POSIX-based systems and are re-
quired for error and event handling. Realtime systems typically have several logi-
cally concurrent software elements executing. Each such entity must respond to
several cyclic and/or acyclic stimuli, often in a time-critical manner. Although
purely synchronous models can supply such functionality via the use of additional
processes or threads, the current realtime practice for asynchronous notification
for events such as timeout, message arrival, and hardware interrupt can generally
be expected to offer higher performance and lower latency. Realtime Signals pro-
vide the reliable high-performance mechanism to support such notification.
The minimum number of realtime signals that the implementation is required to
support has been increased from the number specified in POSIX.1 {3}, 8, to 16. The
rationale for this increase is that there are many applications that have more than
8 different kinds of events. Doubling the number of required realtime signals
should have a minimum impact on the signal management overhead, while signif-
icantly increasing the number of event kinds that can be used by a strictly conform-
ing application.

Copyright © 2004 IEEE. All rights reserved.

64 7 Realtime Controller System Profile

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
POSIX REALTIME AND EMBEDDED APPLICATION SUPPORT IEEE Std 1003.13-2003

7.6.1.3 Process Environment

The functions from the POSIX.1 Process Environment group are deemed necessary
to allow an application to determine and configure its system environment. This
allows a single version of an application to be run on similar but differing plat-
forms; however, conforming applications must act as if CHILD_MAX=0.

7.6.1.4 Files and Directories

Since this profile has a file system, all POSIX.1 functions that manage basic file
systems are required. However, the file system in a PSE52 platform is a simplified
version of a full POSIX.1 file system, and for this reason the POSIX_FIFO,
POSIX_FILE_ATTRIBUTES, and POSIX_FILE_SYSTEM_EXT, Units of Functional-
ity, and the _POSIX_ADVISORY_INFO option are not required.
The File Locking option is required in the C language option to maintain a consis-
tent and safe way of accessing stdio (FILE *) objects from threads, across the four
realtime profiles.

7.6.1.5 Input and Output Primitives

The functions contained in the Device I/O and File Descriptor Management Units
of Functionality are required to do basic I/O and device cleanup.
Asynchronous I/O is not required because it can be easily implemented using
threads dedicated to I/O.
The posix_devctl() function defined in POSIX.26 {4} is required to support control
operations on I/O devices.

7.6.1.6 Synchronized Input and Output

The Synchronized (unbuffered) I/O interface (including the File Synchronization


option) is typical for basic device I/O and is required for upward portability.
Those realtime systems that use file management systems will frequently require
synchronized I/O to provide data integrity and/or relinquish resources to other
users. Synchronized I/O as defined in POSIX.1 {3} provides these mechanisms.

Copyright © 2004 IEEE. All rights reserved.

7.6 Rationale for Operating System Requirements (informative) 65

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
IEEE Std 1003.13-2003 STANDARDIZED APPLICATION ENVIRONMENT PROFILE (AEP)

7.6.1.7 Device- and Class-Specific Functions

POSIX.1 Device- or Class-Specific functions are not required, because PSE52 sys-
tems usually do not require general-purpose terminal interfaces.

7.6.1.8 System Databases, Users, and Groups

Implementations are not required to support more than one user and group id
since there are not multiple users and groups. No POSIX.1 System Database func-
tions are required.

7.6.1.9 Synchronization

Mutexes and Condition Variables are required as part of threads model of


concurrency.
The Process Shared option is not required because there is only a single process.
Semaphores are required in the PSE52 profile for synchronization between
threads to maintain compatibility with past industry practice. However, mutexes
and conditional variables are preferred in most current applications. It must be
noted that POSIX semaphores do not have the mechanisms built in to avoid un-
bounded priority inversion when using them for mutually exclusive access to
shared resources. Mutexes with the appropriate priority inheritance or priority
ceiling (also called priority protection) protocols can be used to avoid this unbound-
ed priority inversion.
Barriers are not required because they can easily be implemented using mutexes
and condition variables. Although a direct implementation of barriers can have a
significant efficiency benefit in some multiprocessor architectures, a mutex-and-
condition-variable implementation will not be significantly slower in most
architectures, and thus requiring barriers for all implementations is not justified.
Spin locks are not required because, although they are an efficient synchronization
mechanism, they cannot be portably used with the current POSIX.1 interfaces in
realtime applications. If a realtime scheduling policy such as SCHED_FIFO or
SCHED_RR is used, spin locks may cause deadlock on a single processor. On
multiprocessors, to avoid deadlock, it would be necessary for threads using a given
lock to be allocated to different processors. There are no standard APIs in the cur-
rent POSIX.1 {3} to allocate threads to specific processors.
Reader/Writer Locks are not required because they are not designed to avoid un-
bounded priority inversion, and thus very long delays could occur in realtime ap-
plications, with a low but nevertheless nonzero probability. It is expected that a
future revision of POSIX.1 {3} will add the priority inheritance and/or priority

Copyright © 2004 IEEE. All rights reserved.

66 7 Realtime Controller System Profile

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
POSIX REALTIME AND EMBEDDED APPLICATION SUPPORT IEEE Std 1003.13-2003

ceiling options to reader/writer locks, which would eliminate the unbounded prior-
ity inversion.

7.6.1.10 Priority Scheduling

Thread priority scheduling is required for realtime applications. The Sporadic


Server Scheduling option is also required to enhance support of applications with
aperiodic timing requirements.
A common requirement of realtime systems is that they be able to run threads with
realtime requirements together with threads with no realtime requirements. One
common way of doing this is by having the realtime threads run under the
SCHED_FIFO scheduling policy, while the non-realtime threads run at a lower
priority under the round-robin policy (SCHED_RR) to fairly share the available
portion of the processor among them. POSIX.1 {3} requires each policy to have a
range of priorities of at least 32 distinct values, but does not impose any
requirements on how these priority ranges relate to each other. It could happen
that most or all of the SCHED_RR priorities were larger than the SCHED_FIFO
priorities, thus making it impossible to mix realtime and non-realtime threads as
required above. To solve this problem in a portable way, this profile requires that
there are at least 31 SCHED_RR priority levels below the maximum priority of
SCHED_FIFO. In this way, a strictly conforming application can use the inclusive
priority range [max_FIFO_prio, max_FIFO_prio-30] with SCHED_FIFO for
realtime threads (with a total of 31 priority levels), and then use the priority value
min(max_FIFO_prio-31,max_RR_prio) with the SCHED_RR policy, for the non-
realtime threads, with guarantee that the latter priority value is valid for the
round-robin policy.
Support for a scheduling allocation domain of size one and static binding of threads
to allocation domains is required in all the realtime profiles to achieve predictable
scheduling behavior. The allocation domain of a thread is the set of processors on
which that thread can be scheduled at any given time. POSIX.1 {3} specifies that
the scheduling rules have predictable effects only if the allocation domain is of size
one; hence the need for this requirement. For single-processor systems the alloca-
tion domain is generally of size one, and thus the application can meet the require-
ment just by specifying in the conformance document that the scheduling
allocation domain is of size one and that static binding of threads to allocation
domains is the default behavior.

7.6.1.11 Process Memory Locking

Process memory locking is inherent in systems following this profile because most
PSE52 targets have no MMU and thus swapping is not supported; code and data
stays in physical memory until explicitly removed. Nevertheless, memory locking
APIs are required for upward portability to allow an application developer to take

Copyright © 2004 IEEE. All rights reserved.

7.6 Rationale for Operating System Requirements (informative) 67

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
IEEE Std 1003.13-2003 STANDARDIZED APPLICATION ENVIRONMENT PROFILE (AEP)

code intended for a bare PSE52 target and unit test that code on a much larger and
more capable platform, perhaps a PSE54, with minimal modification. In those tar-
gets not using an MMU for virtual memory, the locking functions do nothing and
always report success, while in the larger profiles there really is memory to be
locked. In summary, by requiring this service in the PSE52 profile, it is possible to
write portable application code that runs correctly in all the profiles.

7.6.1.12 Shared Memory

Memory Mapped I/O may be implemented using the Shared Memory facility. An
implementation is required to provide facilities for creating (shared) memory
objects that represent ranges of physical memory that contain device control and
status registers or buffers. These facilities encourage the development of portable
applications.
The Memory Mapped Files option is included because the implementation has file-
system capabilities, and memory-mapped files are a convenient paradigm for
reading and writing information in applications following this profile. In memory-
mapped files, I/O is not managed by the programmer because data can be
manipulated as memory. The implementation of memory-mapped files does not
require a significant amount of additional memory or execution overhead to
achieve the additional capability.
System vendors are expected to implement the chosen interface in a manner that
meets the needs of the applications. In particular, a rotating media-based imple-
mentation is allowed but not required by the interface definition.
Typed Memory objects are not required because they are useful only to systems
with special hardware architectures that have various often specialized kinds of
memory. Implementors providing support for such special architectures always
have the option to provide typed memory objects as an extension.

7.6.1.13 Clocks and Timers

High-resolution timer functions are required in most realtime systems for imple-
menting time management operations such as periodic activations, short duration
timeouts, etc. The normal POSIX.1 time management functions sleep() and alarm()
only provide a time resolution of one second, but many realtime systems require
finer resolution for specifying time.
The Monotonic Clock is required for realtime applications to ensure that deadlines
and timing requirements are not affected by clock jumps.
The Clock Selection option is required to enable choosing the clock on which sleep
operations are performed and to have access to an absolute sleep operation, which

Copyright © 2004 IEEE. All rights reserved.

68 7 Realtime Controller System Profile

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
POSIX REALTIME AND EMBEDDED APPLICATION SUPPORT IEEE Std 1003.13-2003

is a common requirement in realtime applications with periodic timing


requirements.
CPU-Time clocks and timers are required as a means to detect and handle situa-
tions in which a thread overruns its assigned maximum execution time. Bounding
the execution times of the different threads in the application provides temporal
partitioning in realtime applications, and thus increases predictability and
reliability.
The Timeouts option is a general requirement for realtime applications and thus
is required in this profile.
The minimum number of timers that the implementation is required to support
has been increased from the number specified in POSIX.1 {3}, 32, to 64, which is
the required minimum number of threads. The reason for this increase is that
there are many applications that require one timer per thread (either realtime or
CPU-time based).

7.6.1.14 Message Passing

Currently available commercial realtime kernels with similar functionality to the


Realtime Controller System Profile typically include some form of message
queueing mechanism for communication between threads. The POSIX.1 Message
Passing offers an appropriate level of performance to provide this functionality.

7.6.1.15 Threads

The basic assumption in this profile is that the system will consist of a single
(implicit) process, with multiple threads. Therefore, all basic thread services are
required, except for those related to multiple processes. The
POSIX_THREADS_BASE Unit of Functionality was specified in this standard
instead of the _POSIX_THREADS option, because this option requires reader/
writer locks, but this profile does not.

7.6.1.16 Tracing

Tracing is required for the PSE52 environment because most of these systems
work in an unattended mode for long periods of time, and tracing provides an ex-
cellent mechanism to support post-failure analysis, particularly for failures having
a low probability of occurrence.

Copyright © 2004 IEEE. All rights reserved.

7.6 Rationale for Operating System Requirements (informative) 69

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
IEEE Std 1003.13-2003 STANDARDIZED APPLICATION ENVIRONMENT PROFILE (AEP)

The Trace Event Filtering option is required for the system to be able to filter out
those trace events that are not meaningful for the application, thus making better
use of system resources by capturing only the interesting events.
The presence of a file system in the PSE52 profile facilitates the recording of the
trace events, through the Trace Log option, which is required for this profile.

7.6.1.17 Networking

Although some small controller systems require networking services, most do not,
so to keep the implementation small, this Unit of Functionality is not required.

7.6.1.18 Event Management

The select() function is usually associated with networking facilities, which are not
required for PSE52. Although the function could be used for regular device I/O op-
erations, most kernels that do not have networking services do not support select().
Therefore, to keep the implementation small, the Event Management Unit of
Functionality is not required.

7.6.1.19 Interfaces Related to the Shell and Utilities

Interfaces defined in the POSIX_REGEXP and POSIX_SHELL_FUNC Units of Func-


tionality are related to shells and utilities, which are not required in this profile;
therefore, these Units of Functionality are not required either.

7.6.1.20 X/Open Units of Functionality and Options

Some XSI Units of Functionality (XSI_C_LANG_SUPPORT, XSI_DEVICE_IO,


XSI_DEVICE_SPECIFIC, XSI_FD_MGMT, XSI_FILE_SYSTEM, XSI_IPC, XSI_JOB_-
CONTROL, XSI_JUMP, XSI_MATH, XSI_MULTI_PROCESS, XSI_SIGNALS,
XSI_SINGLE_PROCESS, XSI_SYSTEM_DATABASE, XSI_TIMERS, XSI_USER_-
GROUPS, XSI_WIDE_CHAR) have interfaces that represent extensions or alterna-
tives to interfaces in other Units of Functionality or POSIX.1 options, and there-
fore are not necessary for PSE52 environments.
The XSI_DBM Unit of Functionality includes interfaces for database management
that are not required in the PSE52 application environment.
The XSI_DYNAMIC_LINKING Unit of Functionality is not required for small em-
bedded systems, which usually operate in a static context.

Copyright © 2004 IEEE. All rights reserved.

70 7 Realtime Controller System Profile

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
POSIX REALTIME AND EMBEDDED APPLICATION SUPPORT IEEE Std 1003.13-2003

The XSI_I18N Unit of Functionality provides facilities for natural language


messages to the user, which are not required in realtime controller systems, which
typically do not have general-purpose human interfaces.
The XSI_SYSTEM_LOGGING Unit of Functionality provides facilities for logging
system activities, which are not required in PSE52 environments.
The XSI_THREAD_MUTEX_EXT Unit of Functionality is required because it has op-
tions for controlling the behavior of mutexes under erroneous application use. This
capability is interesting for any realtime application, including those targeted at
control systems.
The XSI_THREADS_EXT Unit of Functionality is required because it provides func-
tions to better control a thread’s stack. This is considered useful for any realtime
application.
The _XOPEN_CRYPT option provides cryptography facilities that are not required
in PSE52 environments.
The _XOPEN_LEGACY option provides facilities for backwards compatibility that
are not required in PSE52 environments.
The _XOPEN_STREAMS option provides facilities that are mainly related to net-
working, and thus are not required for PSE52 environments, as discussed in
7.6.1.17.

7.6.1.21 Language-Specific Services for the C Programming Language

Support for the C99 Standard {2} is required in the C language option, with the ex-
ception of the POSIX_C_LANG_WIDE_CHAR Unit of Functionality. The reason for
this exception is that this is a very large library that is not necessary for many of
the PSE52 applications.

7.6.1.22 Language-Specific Services for the Ada Programming Language

Support for the Ada language-specific services defined in POSIX.5c {5} is required
in the Ada language option.

7.6.2 Shell and Utility Requirements

Because the Realtime Controller System Profile is intended for control systems
which usually have no terminal or graphical user interface, such a platform would
be incapable of executing a shell. In such an environment, the utilities described
in the Shell and Utilities volume of POSIX.1 {3} are not usually required.

Copyright © 2004 IEEE. All rights reserved.

7.6 Rationale for Operating System Requirements (informative) 71

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
IEEE Std 1003.13-2003 STANDARDIZED APPLICATION ENVIRONMENT PROFILE (AEP)

7.6.3 Development Platform Requirements

The special-purpose nature of the PSE52 execution platform makes it difficult to


use as a development platform. Therefore, the implementation is required to de-
fine a development environment in which a PSE52 application can be prepared for
execution on the target platform. The development platform depends on the lan-
guage option chosen by the implementation.

Copyright © 2004 IEEE. All rights reserved.

72 7 Realtime Controller System Profile

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
IEEE Std 1003.13-2003

Section 8: Dedicated Realtime System Profile (PSE53)

8.1 Introduction

This section specifies those standards required for conformance to the Dedicated
Realtime System Profile option and, where applicable, the state of any options con-
tained in those standards.
When a referenced standard specifies services beyond those required by the Dedi-
cated Realtime System Profile, only those services included in the specified Units
of Functionality referenced by this profile shall be required (see Table 1-1 through
Table 1-17). All the applicable definitions in POSIX.1 {3} and/or POSIX.5c {5} still
apply.

8.1.1 Identification

For the C language implementation, symbolic names shall be used to specify the
presence or absence of each option in this profile. Names reserved for use in this
profile begin with the string _POSIX_AEP_REALTIME_. For the Ada language im-
plementation, a set of Boolean subtypes contained in package POSIX_Options
(defined in POSIX.5c {5}, Section 2.5) shall be used to specify the presence or
absence of each option in this profile.

8.1.2 Conformance

Conformance to the Dedicated Realtime System Profile option shall be indicated


as follows:
— For the C language implementation, the symbol _POSIX_AEP_REALTIME_-
DEDICATED being defined in the header <unistd.h> to be 200312L.

— For the Ada language implementation, the Boolean subtype


POSIX_Profiles.Realtime_Dedicated subtype having the range
True..True, and the constant POSIX_Profiles.Realtime_AEP_-
Version having the value 2003_12.

Copyright © 2004 IEEE. All rights reserved.

8.1 Introduction 73

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
IEEE Std 1003.13-2003 STANDARDIZED APPLICATION ENVIRONMENT PROFILE (AEP)

8.1.3 Options

The presence or absence of optional features shall be indicated as follows:


— For the C language implementation, if any of the following symbols are
defined in the header <unistd.h>, then a corresponding programming
environment is supported:
_POSIX_AEP_REALTIME_LANG_C99
_POSIX_AEP_REALTIME_LANG_Ada95

— For the Ada language implementation, if any of the following Boolean


subtypes has the range True..True, then the corresponding option is
supported:
POSIX_Profiles.Realtime_Lang_C99
POSIX_Profiles.Realtime_Lang_Ada95

8.1.4 The Compilation Environment (C language option)

Certain symbols required by PSE53 are defined in headers. Some of those headers
could also define symbols other than those required by PSE53, potentially conflict-
ing with symbols used by the application. Also, POSIX.1 {3} defines symbols that
are not permitted by other standards to appear in those headers without some con-
trol on the visibility of those symbols. Symbols called “feature test macros” are
used to control the visibility of symbols that might be included in a header.
An application conforming to PSE53 should ensure that the feature test macro
_POSIX_AEP_RT_DEDICATED_C_SOURCE is defined before inclusion of any head-
er. When an application includes a header described by POSIX.1 {3} and when this
feature test macro is defined to have the value 200312L,
(1) All symbols required by PSE53 to appear when the header is included shall
be made visible.
(2) Symbols that are explicitly permitted, but not required, by PSE53 to appear
in that header (including those in reserved name spaces) may be made vis-
ible.
(3) Additional symbols not required or explicitly permitted by PSE53 to be in
that header shall not be made visible, except when enabled by another fea-
ture test macro.

Copyright © 2004 IEEE. All rights reserved.

74 8 Dedicated Realtime System Profile

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
POSIX REALTIME AND EMBEDDED APPLICATION SUPPORT IEEE Std 1003.13-2003

8.2 Operating System Interface Requirements

8.2.1 POSIX.1 Interfaces (C Language Option)

The Dedicated Realtime System Profile implementation shall include interfaces as


defined in POSIX.1 {3} for the Units of Functionality shown in Table 8-1 (see
Table 1-1 for a complete list of POSIX.1 Units of Functionality).

Table 8-1 — POSIX.1 Units of Functionality Requirements


Unit of Functionality
POSIX_C_LANG_JUMP
POSIX_C_LANG_MATH
POSIX_C_LANG_SUPPORT
POSIX_DEVICE_IO
POSIX_EVENT_MGMT
POSIX_FD_MGMT
POSIX_FILE_LOCKING
POSIX_FILE_SYSTEM
POSIX_MULTI_PROCESS
POSIX_NETWORKING
POSIX_PIPE
POSIX_SIGNALS
POSIX_SIGNAL_JUMP
POSIX_SINGLE_PROCESS
POSIX_THREADS_BASE
XSI_THREAD_MUTEX_EXT
XSI_THREADS_EXT

An implementation supporting the Dedicated Realtime System Profile shall sup-


port the POSIX.1 options shown in Table 8-2.

Table 8-2 — POSIX.1 Option Requirements


Option
_POSIX_ASYNCHRONOUS_IO
_POSIX_CLOCK_SELECTION
_POSIX_CPUTIME
_POSIX_FSYNC
_POSIX_MAPPED_FILES
_POSIX_MEMLOCK
_POSIX_MEMLOCK_RANGE
_POSIX_MEMORY_PROTECTION
_POSIX_MESSAGE_PASSING
_POSIX_MONOTONIC_CLOCK
_POSIX_PRIORITIZED_IO

Copyright © 2004 IEEE. All rights reserved.

8.2 Operating System Interface Requirements 75

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
IEEE Std 1003.13-2003 STANDARDIZED APPLICATION ENVIRONMENT PROFILE (AEP)

Table 8-2 — POSIX.1 Option Requirements (Continued)


Option
_POSIX_PRIORITY_SCHEDULING
_POSIX_RAW_SOCKETS
_POSIX_REALTIME_SIGNALS
_POSIX_SEMAPHORES
_POSIX_SHARED_MEMORY_OBJECTS
_POSIX_SPAWN
_POSIX_SPORADIC_SERVER
_POSIX_SYNCHRONIZED_IO
_POSIX_THREAD_ATTR_STACKADDR
_POSIX_THREAD_ATTR_STACKSIZE
_POSIX_THREAD_CPUTIME
_POSIX_THREAD_PRIO_INHERIT
_POSIX_THREAD_PRIO_PROTECT
_POSIX_THREAD_PRIORITY_SCHEDULING
_POSIX_THREAD_PROCESS_SHARED
_POSIX_THREAD_SPORADIC_SERVER
_POSIX_TIMEOUTS
_POSIX_TIMERS
_POSIX_TRACE
_POSIX_TRACE_EVENT_FILTER
_POSIX_TRACE_LOG

The value of TIMER_MAX shall be at least 64.


The value of RTSIG_MAX shall be at least 16.
The range of priorities associated with the SCHED_RR scheduling policy shall have
at least 31 distinct values that are less than the maximum priority of the
SCHED_FIFO policy.

An implementation conforming to PSE53 shall support the


PTHREAD_SCOPE_SYSTEM scheduling contention scope. In addition, it may sup-
port PTHREAD_SCOPE_PROCESS. For a description of the scheduling contention
scope, see the System Interfaces volume of POSIX.1 {3}, Section 2.9.2.
An implementation conforming to PSE53 shall provide a mechanism to configure
the system so that the scheduling allocation domain has size one, and so that the
binding of threads to scheduling allocation domains remains static. The mecha-
nism by which this requirement is achieved shall be implementation defined. In
addition, a PSE53 implementation may provide other configurations or facilities to
change the size of the allocation domain and the bindings of threads to allocation
domains. For a description of the scheduling allocation domain, see the System
Interfaces volume of POSIX.1 {3}, Section 2.9.2.

Copyright © 2004 IEEE. All rights reserved.

76 8 Dedicated Realtime System Profile

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
POSIX REALTIME AND EMBEDDED APPLICATION SUPPORT IEEE Std 1003.13-2003

8.2.2 POSIX.26 Interfaces (C Language Option)

An implementation conforming to PSE53 shall support all the interfaces defined


in POSIX.26 {4}. The implementation shall also support the POSIX.1 mknod()
function, even if the XSI extension is not supported, as the portable mechanism to
create character special files. Appropriate values for the dev parameter are imple-
mentation defined.

8.2.3 POSIX.5c Interfaces (Ada Language Option)

The Dedicated Realtime System Profile implementation shall include interfaces as


defined in POSIX.5c {5} for the Units of Functionality shown in Table 8-3 (see
Table 1-2 through Table 1-17 for a complete list of POSIX.5c Units of
Functionality).

Table 8-3 — POSIX.5c Units of Functionality Requirements


Unit of Functionality
POSIX_ADA_LANG_SUPPORT
POSIX_DEVICE_IO
POSIX_EVENT_MGMT
POSIX_FD_MGMT
POSIX_FILE_SYSTEM
POSIX_MULTI_PROCESS(1)
POSIX_NETWORKING
POSIX_PIPE
POSIX_SIGNALS
POSIX_SINGLE_PROCESS
(1)
The POSIX_MULTI_PROCESS Unit of Functionality shall be supported, with the provi-
sion that the package POSIX_Unsafe_Process_Primitives is not required

The Dedicated Realtime System Profile implementation shall support the


POSIX.5c options shown in Table 8-4, by defining the associated option subtypes
to have the range True..True, with the exception of the Filename Truncation op-
tion for which the associated subtype shall have the range False..False.

Table 8-4 — POSIX.5c Option Requirements


Option
Asynchronous I/O
File Synchronization
Memory Mapped Files
Memory Locking
Memory Range Locking
Memory Protection

Copyright © 2004 IEEE. All rights reserved.

8.2 Operating System Interface Requirements 77

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
IEEE Std 1003.13-2003 STANDARDIZED APPLICATION ENVIRONMENT PROFILE (AEP)

Table 8-4 — POSIX.5c Option Requirements (Continued)


Option
Message Queues
Filename Truncation
Prioritized I/O
Priority Process Scheduling
Realtime Signals
Semaphores
Shared Memory Objects
Synchronized I/O
Mutexes
Mutex Priority Inheritance
Mutex Priority Ceiling
Process Shared
Timers

POSIX_Limits.Timers_Maxima'First shall be at least 64.


POSIX_Limits.Realtime_Signals_Maxima'First shall be at least 16.
Regarding task priority scheduling, the implementation shall support the follow-
ing requirements from POSIX.5c {5} and the Ada95 RM {1}:
— The implementation shall support the priority model defined in the Ada95
RM {1}, Section D.1, and the pragmas and package interfaces defined in the
Ada95 RM {1}, Sections D.2–D.5.
— The implementation shall meet the requirements of POSIX.5c {5},
Section 13.3.1.
Implementations of the PSE53 profile shall support the POSIX_Profiles pack-
age defined in Annex A of this standard.
The subprogram POSIX_Signals.Set_Stopped_Child_Signal shall fail
silently.
The subprogram POSIX_Signals.Stopped_Child_Signal_Enabled shall re-
turn False.
POSIX_Limits.Groups_Maxima'First shall be zero.
Subprograms not supported by a given profile shall raise POSIX_Error, returning
an error code of Operation_Not_Supported, except as noted otherwise.
All Image and Value functions that appear in the packages supported by a profile
must be implemented.
Where an overloaded subprogram is required by a Unit of Functionality, all forms
of the subprogram appearing in the referenced clause must be supported, except
as otherwise noted.

Copyright © 2004 IEEE. All rights reserved.

78 8 Dedicated Realtime System Profile

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
POSIX REALTIME AND EMBEDDED APPLICATION SUPPORT IEEE Std 1003.13-2003

8.3 Application Constraints

The Dedicated Realtime System profile defined in this standard requires only
specific Units of Functionality of the required standards. The absence of particular
elements of these standards introduces constraints on the use of some of the
features of particular operations. This clause defines the constraints that an
application strictly conforming to one of the profiles shall observe when using each
of the operations required by that profile.

8.3.1 Constraints related to POSIX.1 Interfaces (C Language Option)

The sysconf() function has the following constraints:


(1) An application strictly conforming to the PSE53 profile shall not call the
sysconf() function with the parameter _POSIX_VERSION since a meaningful
value cannot be returned.1)
An application strictly conforming to PSE53 shall not call the kill() function with
a negative argument because this profile does not require process group
functionality.
An application strictly conforming to PSE53 shall be guaranteed that the file mode
creation mask for any object created by any process is S_IRWXU; that is, the object
shall be fully accessible to the creator.

8.3.2 Constraints related to POSIX.5c Interfaces (Ada Language Option)

An application strictly conforming to PSE53 shall not call the functions


POSIX_Configurable_System_Limits.System_POSIX_Version or POSIX_-
Configurable_System_Limits.System_POSIX_Ada_Version, since a mean-
ingful value cannot be returned.2)
An application strictly conforming to PSE53 shall not call the subprograms
contained in the package Posix_Unsafe_Process_Primitives, but shall
instead rely upon either Posix_Process_Primitives.Start_Process or
Posix_Process_Primitives.Start_Process_Search to create new
processes.
An application strictly conforming to PSE53 shall not call the form of
POSIX_Signals.Send_Signal that takes a process group ID as an argument be-
cause this profile does not require process group functionality.

1) Conformance to this profile can be checked with the symbols defined in 8.1.3.
2) Conformance to this profile can be checked with the subtypes defined in 8.1.3.

Copyright © 2004 IEEE. All rights reserved.

8.3 Application Constraints 79

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
IEEE Std 1003.13-2003 STANDARDIZED APPLICATION ENVIRONMENT PROFILE (AEP)

An application strictly conforming to PSE53 shall not attempt to bind a signal to a


task entry.
Implementations of PSE53 need not support the File_Structure field of the
form parameter (see POSIX.5c {5}, Section 8.1.1.2), but may instead raise
Use_Error. All files shall default to regular files.

8.4 Shell and Utility Requirements

An implementation of the Dedicated Realtime System Profile is not required to


support any of the services described in the Shell and Utilities volume of POSIX.1
{3}.

8.5 Development Platform Requirements

One or more of the development options in 8.5.1 and 8.5.2 shall be implemented.

8.5.1 C Language Development Option

If this option is provided, the implementor shall define a Development Platform


and an environment capable of preparing for execution an application conformant
with this standard profile. This platform shall include the POSIX2_C_DEV, and
POSIX2_SW_DEV options from the Shell and Utilities volume of POSIX.1 {3}.

8.5.1.1 Option Indicator

The presence of the C Language Development Option shall be indicated by the


symbol _POSIX_AEP_REALTIME_LANG_C99 being defined in the header
<unistd.h>. In addition, the presence of the C Language Development Option
may be indicated by the subtype POSIX_Profiles.Realtime_Lang_C99 having
the range True..True.

Copyright © 2004 IEEE. All rights reserved.

80 8 Dedicated Realtime System Profile

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
POSIX REALTIME AND EMBEDDED APPLICATION SUPPORT IEEE Std 1003.13-2003

8.5.2 Ada Language Development Option

If this option is provided, the implementor shall define a Development Platform


and an environment capable of preparing for execution an application conformant
with this profile including applicable portions of the following:
— The Ada95 RM {1}
— POSIX.5c {5}
— The POSIX2_SW_DEV option from the Shell and Utilities volume of POSIX.1
{3}

8.5.2.1 Option Indicator

The presence of the Ada Language Development Option shall be indicated by the
subtype POSIX_Profiles.Realtime_Lang_Ada95 having the range
True..True. In addition, the presence of the Ada Language Development Option
may be indicated by the symbol _POSIX_AEP_REALTIME_LANG_Ada95 being de-
fined in the header <unistd.h>.

8.6 Rationale for Operating System Requirements (informative)

(This clause is not a normative part of IEEE Std 1003.13-2003.)

8.6.1 Operating System Interface Requirements

This profile is based on existing practice in large embedded systems (a single user
is assumed). Traditionally, these applications are designed to run with either a
home-grown or standard operating system providing process, I/O, time, memory,
and event management services. These applications require support for a simpli-
fied file system.
Where convenient, the AEP profile working group has chosen system options that
allow an application to be upwardly portable without modifying application source
code.

Copyright © 2004 IEEE. All rights reserved.

8.6 Rationale for Operating System Requirements (informative) 81

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
IEEE Std 1003.13-2003 STANDARDIZED APPLICATION ENVIRONMENT PROFILE (AEP)

8.6.1.1 Process Primitives

Applications that correspond to the Dedicated Realtime System Environment are


usually large embedded systems that require multiple processes for handling mul-
tiple, concurrent activities with independent address spaces. The process control
functions (which include process creation and execution) are the basic operating
system services required to support multiple processes and are therefore required
in these systems.

8.6.1.2 Signals

Signal services are a basic mechanism within POSIX-based systems and are re-
quired for error and event handling. Realtime systems typically have several logi-
cally concurrent software elements executing. Each such entity must respond to
several cyclic and/or acyclic stimuli, often in a time-critical manner. Although
purely synchronous models can supply such functionality via the use of additional
processes or threads, the current realtime practice for asynchronous notification
for events such as timeout, message arrival, and hardware interrupt can generally
be expected to offer higher performance and lower latency. Realtime Signals pro-
vide the reliable high-performance mechanism to support such notification.
The minimum number of realtime signals that the implementation is required to
support has been increased from the number specified in POSIX.1 {3}, 8, to 16. The
rationale for this increase is that there are many applications that have more than
8 different kinds of events. Doubling the number of required realtime signals
should have a minimum impact on the signal management overhead, while signif-
icantly increasing the number of event kinds that can be used by a strictly conform-
ing application.

8.6.1.3 Process Environment

The functions from the POSIX.1 Process Environment group are deemed necessary
to allow an application to determine and configure its system environment. This
allows a single version of an application to be run on similar but differing
platforms.
Since these systems require multiple processes, but not users or groups, the func-
tions defined by the POSIX_MULTI_PROCESS Unit of Functionality are required.

Copyright © 2004 IEEE. All rights reserved.

82 8 Dedicated Realtime System Profile

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
POSIX REALTIME AND EMBEDDED APPLICATION SUPPORT IEEE Std 1003.13-2003

8.6.1.4 Files and Directories

Since this profile has a file system, all POSIX.1 functions that manage basic file
systems are required. However, the file system in a PSE53 platform is a simplified
version of a full POSIX.1 file system, and for this reason, the POSIX_FIFO,
POSIX_FILE_ATTRIBUTES, and POSIX_FILE_SYSTEM_EXT, Units of Functional-
ity, and the _POSIX_ADVISORY_INFO option are not required.
The File Locking option is required in the C language option to maintain a consis-
tent and safe way of accessing stdio (FIL E *) objects from threads, across the four
realtime profiles.
The File Descriptor Management Unit of Functionality is included to aid the
handling of file descriptors across the process creation and program execution
operations.

8.6.1.5 Input and Output Primitives

The functions contained in the Device I/O Unit of Functionality are required to do
basic I/O and device cleanup.
Although asynchronous I/O can be easily implemented using threads dedicated to
I/O, it is required in the PSE53 profile to support portability of applications that
may have been developed before POSIX threads implementations were widely
available.
The posix_devctl() function defined in POSIX.26 {4} is required to support control
operations on I/O devices.

8.6.1.6 Synchronized Input and Output

The Synchronized (unbuffered) I/O interface (including the File Synchronization


option) is typical for basic device I/O and is required for upward portability.
Those realtime systems that use file management systems will frequently require
synchronized I/O to provide data integrity and/or relinquish resources to other
users. Synchronized I/O as defined in POSIX.1 {3} provides these mechanisms.

8.6.1.7 Device- and Class-Specific Functions

POSIX.1 Device- or Class-Specific functions are not required, because embedded


systems usually do not require general-purpose terminal interfaces.

Copyright © 2004 IEEE. All rights reserved.

8.6 Rationale for Operating System Requirements (informative) 83

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
IEEE Std 1003.13-2003 STANDARDIZED APPLICATION ENVIRONMENT PROFILE (AEP)

8.6.1.8 System Databases, Users, and Groups

Implementations are not required to support more than one user and group id
since there are not multiple users and groups. No POSIX.1 System Database func-
tions are required.

8.6.1.9 Synchronization

Mutexes and Condition Variables are required as part of threads model of


concurrency.
Semaphores are required to support portability of applications that might be using
this mechanism instead of the preferred mutexes and condition variables. It must
be noted, however, that POSIX semaphores do not have the mechanisms built in
to avoid unbounded priority inversion when using them for mutually exclusive
access to shared resources. Mutexes with the appropriate priority inheritance or
priority ceiling (also called priority protection) protocols can be used to avoid this
unbounded priority inversion. The Process Shared option is required to support
applications requiring this mechanism for synchronization across different
processes.
Barriers are not required because they can easily be implemented using mutexes
and condition variables. Although a direct implementation of barriers can have a
significant efficiency benefit in some multiprocessor architectures, a mutex-and-
condition-variable implementation will not be significantly slower in most
architectures, and thus requiring barriers for all implementations is not justified.
Spin locks are not required because, although they are an efficient synchronization
mechanism, they cannot be portably used with the current POSIX.1 interfaces in
realtime applications. If a realtime scheduling policy such as SCHED_FIFO or
SCHED_RR is used, spin locks may cause deadlock on a single processor. On
multiprocessors, to avoid deadlock, it would be necessary for threads using a given
lock to be allocated to different processors. There are no standard APIs in the cur-
rent POSIX.1 {3} to allocate threads to specific processors.
Reader/Writer Locks are not required because they are not designed to avoid
unbounded priority inversion, and thus very long delays could occur in realtime
applications, with a low but nevertheless nonzero probability. It is expected that a
future revision of POSIX.1 {3} will add the priority inheritance and/or priority
ceiling options to reader/writer locks, which would eliminate the unbounded
priority inversion.

Copyright © 2004 IEEE. All rights reserved.

84 8 Dedicated Realtime System Profile

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
POSIX REALTIME AND EMBEDDED APPLICATION SUPPORT IEEE Std 1003.13-2003

8.6.1.10 Priority Scheduling

Thread and process priority scheduling are required for realtime applications. The
Sporadic Server Scheduling option is also required for processes and threads, to
enhance support of applications with aperiodic timing requirements.
A common requirement of realtime systems is that they be able to run threads or
processes with realtime requirements together with threads with no realtime
requirements. One common way of doing this is by having the realtime threads run
under the SCHED_FIFO scheduling policy, while the non-realtime threads run at a
lower priority under the round-robin policy (SCHED_RR) to fairly share the
available portion of the processor among them. POSIX.1 {3} requires each policy to
have a range of priorities of at least 32 distinct values, but does not impose any
requirements on how these priority ranges relate to each other. It could happen
that most or all of the SCHED_RR priorities were larger than the SCHED_FIFO
priorities, thus making it impossible to mix realtime and non-realtime threads as
required above. To solve this problem in a portable way, this profile requires that
there are at least 31 SCHED_RR priority levels below the maximum priority of
SCHED_FIFO. In this way, a strictly conforming application can use the inclusive
priority range [max_FIFO_prio, max_FIFO_prio-30] with SCHED_FIFO for
realtime threads (with a total of 31 priority levels), and then use the priority value
min(max_FIFO_prio-31,max_RR_prio) with the SCHED_RR policy, for the non-
realtime threads, with guarantee that the latter priority value is valid for the
round-robin policy.
The implementation is required to support the PTHREAD_SYSTEM_SCOPE thread-
scheduling contention scope. The contention scope of a thread defines the set of
threads with which the thread competes for use of the processing resources. A
thread created with PTHREAD_SCOPE_SYSTEM scheduling contention scope
contends for resources with all other threads in the system that have the same
scheduling allocation domain. This allows a consistent scheduling of threads
across the system, and therefore a predictable timing behavior. As a consequence,
this is the preferred method for realtime systems.
The current POSIX.1 {3} allows implementations to support either system-wide or
process-wide contention scope, or both. This represents a compromise that tries to
address the requirements of both realtime and non-realtime applications, but
introduces a potential source for nonportability. Because the realtime profiles are
specifically targeted at realtime systems, the system-wide contention scope option
is required in the profiles that support multiple processes. Process-wide contention
scope may also be provided, perhaps for the non-realtime threads of the
application.
Support for a scheduling allocation domain of size one and static binding of threads
to allocation domains is required in all the realtime profiles to achieve predictable
scheduling behavior. The allocation domain of a thread is the set of processors on
which that thread can be scheduled at any given time. POSIX.1 {3} specifies that
the scheduling rules have predictable effects only if the allocation domain is of size
one; hence the need for this requirement. For single-processor systems, the

Copyright © 2004 IEEE. All rights reserved.

8.6 Rationale for Operating System Requirements (informative) 85

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
IEEE Std 1003.13-2003 STANDARDIZED APPLICATION ENVIRONMENT PROFILE (AEP)

allocation domain is generally of size one, and thus the application can meet the
requirement just by specifying in the conformance document that the scheduling
allocation domain is of size one and that static binding of threads to allocation do-
mains is the default behavior.

8.6.1.11 Process Memory Locking

Realtime processes must be able to guarantee memory residency to reduce the


latency for instruction fetches, data access, I/O operations, etc. The mechanism
described in the POSIX.1 Process Memory Locking extension will satisfy this
requirement.

8.6.1.12 Shared Memory

The Shared Memory Objects option provides the capability for more than one
execution entity to share memory, without incurring the overhead of the shared
memory object on permanent media. Memory Mapped I/O may be implemented
using the Shared Memory facility. An implementation must provide facilities for
creating a block of physical memory in which the application may place devices and
facilities for binding to a user-provided pathname through which a device may
subsequently be opened as a Shared Memory special file and mapped into the
process address space for the purpose of performing I/O or other functions from
applications programs.
Typed Memory objects are not required because they are useful only to systems
with special hardware architectures that have various often specialized kinds of
memory. Implementors providing support for such special architectures always
have the option to provide typed memory objects as an extension.

8.6.1.13 Clocks and Timers

High-resolution timer functions are required in most realtime systems for imple-
menting time management operations such as periodic activations, short duration
timeouts, etc. The normal POSIX.1 time management functions sleep() and alarm()
only provide a time resolution of one second, but many realtime systems require
finer resolution for specifying time.
The Monotonic Clock is required for realtime applications to ensure that deadlines
and timing requirements are not affected by clock jumps.
The Clock Selection option is required to enable choosing the clock on which sleep
operations are performed and to have access to an absolute sleep operation, which

Copyright © 2004 IEEE. All rights reserved.

86 8 Dedicated Realtime System Profile

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
POSIX REALTIME AND EMBEDDED APPLICATION SUPPORT IEEE Std 1003.13-2003

is a common requirement in realtime applications with periodic timing


requirements.
CPU-Time clocks and timers are required as a means to detect and handle
situations in which a thread overruns its assigned maximum execution time.
Bounding the execution times of the different threads in the application provides
temporal partitioning in realtime applications, and thus increases predictability
and reliability.
The Timeouts option is a general requirement for realtime applications and thus
is required in this profile.
The minimum number of per-process timers that the implementation is required
to support has been increased from the number specified in POSIX.1 {3}, 32, to 64,
which is the required minimum number of threads per process. The reason for this
increase is that there are many applications that require one timer per thread (ei-
ther realtime or CPU-time based).

8.6.1.14 Message Passing

These realtime systems typically include some form of message queuing


mechanism for communication among processes or threads. The POSIX.1 message
passing offers an appropriate level of performance to provide this functionality.

8.6.1.15 Threads

The basic assumption in this profile is that the system will consist of one or more
processes with multiple threads. Therefore, all thread services are required. The
POSIX_THREADS_BASE Unit of Functionality was specified in this standard in-
stead of the _POSIX_THREADS option, because this option requires reader/writer
locks, but this profile does not.

8.6.1.16 Tracing

Tracing is required for the PSE53 environment because most of these systems
work in an unattended mode for long periods of time, and tracing provides an ex-
cellent mechanism to support post-failure analysis, particularly for failures having
a low probability of occurrence.
The Trace Event Filtering option is required for the system to be able to filter out
those trace events that are not meaningful for the application, thus making better
use of system resources by capturing only the interesting events.

Copyright © 2004 IEEE. All rights reserved.

8.6 Rationale for Operating System Requirements (informative) 87

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
IEEE Std 1003.13-2003 STANDARDIZED APPLICATION ENVIRONMENT PROFILE (AEP)

Because the PSE53 profile does not require general file system capabilities, the
Trace Log option is not required for this profile.

8.6.1.17 Networking

Today, most of the platforms and applications belonging to the PSE53


environment require network communications, and thus the networking Unit of
Functionality is required in this profile. The Raw Sockets option is required to aid
reconfiguration of networked applications and to implement special protocols
directly, without the weight of a full protocol stack. The Internet Protocol Version 6
option is not required because most applications are not using this version of the
protocol yet.

8.6.1.18 Event Management

The select() function is usually associated with networking facilities, which are
required for PSE53, and thus the Event Management Unit of Functionality is
required in the PSE53 environment.

8.6.1.19 Interfaces Related to the Shell and Utilities

Interfaces defined in the POSIX_REGEXP and POSIX_SHELL_FUNC Units of Func-


tionality are related to shells and utilities, which are not required in this profile;
therefore, these Units of Functionality are not required either.

8.6.1.20 X/Open Units of Functionality and Options

Some XSI Units of Functionality (XSI_C_LANG_SUPPORT, XSI_DEVICE_IO,


XSI_DEVICE_SPECIFIC, XSI_FD_MGMT, XSI_FILE_SYSTEM, XSI_IPC, XSI_JOB_-
CONTROL, XSI_JUMP, XSI_MATH, XSI_MULTI_PROCESS, XSI_SIGNALS,
XSI_SINGLE_PROCESS, XSI_SYSTEM_DATABASE, XSI_TIMERS, XSI_USER_-
GROUPS, XSI_WIDE_CHAR) have interfaces that represent extensions or alterna-
tives to interfaces in other Units of Functionality or POSIX.1 options, and there-
fore are not necessary for PSE53 environments.
The XSI_DBM Unit of Functionality includes interfaces for database management
that are not required in the PSE53 application environment.
The XSI_DYNAMIC_LINKING Unit of Functionality is not required for embedded
systems, which usually operate in a static context.

Copyright © 2004 IEEE. All rights reserved.

88 8 Dedicated Realtime System Profile

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
POSIX REALTIME AND EMBEDDED APPLICATION SUPPORT IEEE Std 1003.13-2003

The XSI_I18N Unit of Functionality provides facilities for natural language mes-
sages to the user, which are not required in embedded systems, which typically do
not have general-purpose human interfaces.
The XSI_SYSTEM_LOGGING Unit of Functionality provides facilities for logging
system activities, which are not required in PSE53 environments.
The XSI_THREAD_MUTEX_EXT Unit of Functionality is required because it has op-
tions for controlling the behavior of mutexes under erroneous application use. This
capability is interesting for any realtime application, including those targeted at
small embedded systems.
The XSI_THREADS_EXT Unit of Functionality is required because it provides func-
tions to better control a thread’s stack. This is considered useful for any realtime
application.
The _XOPEN_CRYPT option provides cryptography facilities that are not required
in most PSE53 environments.
The _XOPEN_LEGACY option provides facilities for backwards compatibility that
are not required in PSE53 environments.
The _XOPEN_STREAMS option provides facilities that are not required in most
PSE53 environments.

8.6.1.21 Language-Specific Services for the C Programming Language

Support for the C99 Standard {2} is required in the C language option, with the ex-
ception of the POSIX_C_LANG_WIDE_CHAR Unit of Functionality. The reason for
this exception is that this is a very large library that is not necessary for many of
the PSE53 applications.

8.6.1.22 Language-Specific Services for the Ada Programming Language

Support for the Ada language-specific services defined in POSIX.5c {5} is required
in the Ada language option.

8.6.2 Shell and Utility Requirements

Because the Dedicated Realtime System Profile is intended for embedded systems
which usually have no terminal or general-purpose graphical user interface, such
a platform would be incapable of executing a shell. In such an environment, the
utilities described in the Shell and Utilities volume of POSIX.1 {3} are not usually
required.

Copyright © 2004 IEEE. All rights reserved.

8.6 Rationale for Operating System Requirements (informative) 89

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
IEEE Std 1003.13-2003 STANDARDIZED APPLICATION ENVIRONMENT PROFILE (AEP)

8.6.3 Development Platform Requirements

The embedded nature of the PSE53 execution platform makes it difficult to use as
a development platform. Therefore, the implementation is required to define a
development environment in which a PSE53 application can be prepared for exe-
cution on the target platform. The development platform depends on the language
option chosen by the implementation.

Copyright © 2004 IEEE. All rights reserved.

90 8 Dedicated Realtime System Profile

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
IEEE Std 1003.13-2003

Section 9: Multi-Purpose Realtime System Profile (PSE54)

9.1 Introduction

This section specifies those standards required for conformance to the Multi-
Purpose Realtime System Profile option and, where applicable, the state of any
options contained in those standards.
When a referenced standard specifies services beyond those required by the Multi-
Purpose Realtime System Profile, only those services included in the specified
Units of Functionality referenced by this profile shall be required (see Table 1-1
through Table 1-17). All the applicable definitions in POSIX.1 {3} and/or POSIX.5c
{5} still apply.

9.1.1 Identification

For the C language implementation, symbolic names shall be used to specify the
presence or absence of each option in this profile. Names reserved for use in this
profile begin with the string _POSIX_AEP_REALTIME_. For the Ada language im-
plementation, a set of Boolean subtypes contained in package POSIX_Options
(defined in POSIX.5c {5}, Section 2.5) shall be used to specify the presence or ab-
sence of each option in this profile.

9.1.2 Conformance

Conformance to the Multi-Purpose Realtime System Profile option shall be indicat-


ed as follows:
— For the C language implementation, the symbol _POSIX_AEP_REALTIME_-
MULTI being defined in the header <unistd.h> to be 200312L.

— For the Ada language implementation, the Boolean subtype POSIX_-


Profiles.Realtime_Multi subtype having the range True..True, and
the constant POSIX_Profiles.Realtime_AEP_Version having the
value 2003_12.

Copyright © 2004 IEEE. All rights reserved.

9.1 Introduction 91

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
IEEE Std 1003.13-2003 STANDARDIZED APPLICATION ENVIRONMENT PROFILE (AEP)

9.1.3 Options

The presence or absence of optional features shall be indicated as follows:


— For the C language implementation, if any of the following symbols are
defined in the header <unistd.h>, then a corresponding programming
environment is supported:
_POSIX_AEP_REALTIME_LANG_C99
_POSIX_AEP_REALTIME_LANG_Ada95

— For the Ada language implementation, if any of the following Boolean


subtypes has the range True..True, then the corresponding option is
supported:
POSIX_Profiles.Realtime_Lang_C99
POSIX_Profiles.Realtime_Lang_Ada95

9.1.4 The Compilation Environment (C language option)

Certain symbols required by PSE54 are defined in headers. Some of those headers
could also define symbols other than those required by PSE54, potentially conflict-
ing with symbols used by the application. Also, POSIX.1 {3} defines symbols that
are not permitted by other standards to appear in those headers without some con-
trol on the visibility of those symbols. Symbols called “feature test macros” are
used to control the visibility of symbols that might be included in a header.
An application conforming to PSE54 should ensure that the feature test macro
_POSIX_AEP_RT_MULTI_C_SOURCE is defined before inclusion of any header.
When an application includes a header described by POSIX.1 {3} and when this
feature test macro is defined to have the value 200312L,
(1) All symbols required by PSE54 to appear when the header is included shall
be made visible.
(2) Symbols that are explicitly permitted, but not required, by PSE54 to appear
in that header (including those in reserved name spaces) may be made
visible.
(3) Additional symbols not required or explicitly permitted by PSE54 to be in
that header shall not be made visible, except when enabled by another fea-
ture test macro.

Copyright © 2004 IEEE. All rights reserved.

92 9 Multi-Purpose Realtime System Profile

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
POSIX REALTIME AND EMBEDDED APPLICATION SUPPORT IEEE Std 1003.13-2003

9.2 Operating System Interface Requirements

9.2.1 POSIX.1 Interfaces (C Language Option)

The Multi-Purpose Realtime System Profile implementation shall include inter-


faces as defined in POSIX.1 {3} for the Units of Functionality shown in Table 9-1
(see Table 1-1 for a complete list of POSIX.1 Units of Functionality).

Table 9-1 — POSIX.1 Units of Functionality Requirements


Unit of Functionality
POSIX_C_LANG_JUMP
POSIX_C_LANG_MATH
POSIX_C_LANG_SUPPORT
POSIX_C_LANG_WIDE_CHAR
POSIX_DEVICE_IO
POSIX_DEVICE_SPECIFIC
POSIX_EVENT_MGMT
POSIX_FD_MGMT
POSIX_FIFO
POSIX_FILE_ATTRIBUTES
POSIX_FILE_LOCKING
POSIX_FILE_SYSTEM
POSIX_FILE_SYSTEM_EXT
POSIX_JOB_CONTROL
POSIX_MULTI_PROCESS
POSIX_NETWORKING
POSIX_PIPE
POSIX_REGEXP
POSIX_SHELL_FUNC
POSIX_SIGNALS
POSIX_SIGNAL_JUMP
POSIX_SINGLE_PROCESS
POSIX_STRING_MATCHING
POSIX_SYMBOLIC_LINKS
POSIX_SYSTEM_DATABASE
POSIX_THREADS_BASE
POSIX_USER_GROUPS
POSIX_WIDE_CHAR_IO
XSI_DYNAMIC_LINKING
XSI_SYSTEM_LOGGING
XSI_THREAD_MUTEX_EXT
XSI_THREADS_EXT

Copyright © 2004 IEEE. All rights reserved.

9.2 Operating System Interface Requirements 93

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
IEEE Std 1003.13-2003 STANDARDIZED APPLICATION ENVIRONMENT PROFILE (AEP)

An implementation supporting the Multi-Purpose Realtime System Profile shall


support the POSIX.1 options shown in Table 9-2.

Table 9-2 — POSIX.1 Option Requirements


Option
_POSIX_ADVISORY_INFO
_POSIX_ASYNCHRONOUS_IO
_POSIX_CHOWN_RESTRICTED
_POSIX_CLOCK_SELECTION
_POSIX_CPUTIME
_POSIX_FSYNC
_POSIX_MAPPED_FILES
_POSIX_MEMLOCK
_POSIX_MEMLOCK_RANGE
_POSIX_MEMORY_PROTECTION
_POSIX_MESSAGE_PASSING
_POSIX_MONOTONIC_CLOCK
_POSIX_PRIORITIZED_IO
_POSIX_PRIORITY_SCHEDULING
_POSIX_RAW_SOCKETS
_POSIX_REALTIME_SIGNALS
_POSIX_SAVED_IDS
_POSIX_SEMAPHORES
_POSIX_SHARED_MEMORY_OBJECTS
_POSIX_SPAWN
_POSIX_SPORADIC_SERVER
_POSIX_SYNCHRONIZED_IO
_POSIX_THREAD_ATTR_STACKADDR
_POSIX_THREAD_ATTR_STACKSIZE
_POSIX_THREAD_CPUTIME
_POSIX_THREAD_PRIO_INHERIT
_POSIX_THREAD_PRIO_PROTECT
_POSIX_THREAD_PRIORITY_SCHEDULING
_POSIX_THREAD_PROCESS_SHARED
_POSIX_THREAD_SAFE_FUNCTIONS
_POSIX_THREAD_SPORADIC_SERVER
_POSIX_TIMEOUTS
_POSIX_TIMERS
_POSIX_TRACE
_POSIX_TRACE_EVENT_FILTER
_POSIX_TRACE_LOG
_POSIX_VDISABLE

The type off_t shall be capable of storing any value contained in type long.
The value of TIMER_MAX shall be at least 64.
The value of RTSIG_MAX shall be at least 16.

Copyright © 2004 IEEE. All rights reserved.

94 9 Multi-Purpose Realtime System Profile

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
POSIX REALTIME AND EMBEDDED APPLICATION SUPPORT IEEE Std 1003.13-2003

The range of priorities associated with the SCHED_RR scheduling policy shall have
at least 31 distinct values that are less than the maximum priority of the
SCHED_FIFO policy.

An implementation conforming to PSE54 shall support the


PTHREAD_SCOPE_SYSTEM scheduling contention scope. In addition, it may sup-
port PTHREAD_SCOPE_PROCESS. For a description of the scheduling contention
scope, see the System Interfaces volume of POSIX.1 {3}, Section 2.9.2.
An implementation conforming to PSE54 shall provide a mechanism to configure
the system so that the scheduling allocation domain has size one, and so that the
binding of threads to scheduling allocation domains remains static. The mecha-
nism by which this requirement is achieved shall be implementation defined. In
addition, a PSE54 implementation may provide other configurations or facilities to
change the size of the allocation domain and the bindings of threads to allocation
domains. For a description of the scheduling allocation domain, see the System
Interfaces volume of POSIX.1 {3}, Section 2.9.2.

9.2.2 POSIX.26 Interfaces (C Language Option)

An implementation conforming to PSE52 shall support all the interfaces defined


in POSIX.26 {4}. The implementation shall also support the POSIX.1 mknod()
function, even if the XSI extension is not supported, as the portable mechanism to
create character special files. Appropriate values for the d ev parameter are
implementation defined.

9.2.3 POSIX.5c Interfaces (Ada Language Option)

The Multi-Purpose Realtime System Profile implementation shall include inter-


faces as defined in POSIX.5c {5} for the Units of Functionality shown in Table 9-3
(see Table 1-2 through Table 1-17 for a complete list of POSIX.5c Units of
Functionality).

Table 9-3 — POSIX.1 Units of Functionality Requirements


Unit of Functionality
POSIX_ADA_LANG_SUPPORT
POSIX_DEVICE_IO
POSIX_DEVICE_SPECIFIC
POSIX_EVENT_MGMT
POSIX_FD_MGMT
POSIX_FIFO
POSIX_FILE_ATTRIBUTES
POSIX_FILE_SYSTEM

Copyright © 2004 IEEE. All rights reserved.

9.2 Operating System Interface Requirements 95

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
IEEE Std 1003.13-2003 STANDARDIZED APPLICATION ENVIRONMENT PROFILE (AEP)

Table 9-3 — POSIX.1 Units of Functionality Requirements (Continued)


Unit of Functionality
POSIX_JOB_CONTROL
POSIX_MULTI_PROCESS
POSIX_NETWORKING
POSIX_PIPE
POSIX_SIGNALS
POSIX_SINGLE_PROCESS
POSIX_SYSTEM_DATABASE
POSIX_USER_GROUPS

The Multi-Purpose Realtime System Profile implementation shall support the


POSIX.5c options shown in Table 9-4, by defining the associated option subtypes
to have the range True..True, with the exception of the Filename Truncation op-
tion for which the associated subtype shall have the range False..False.

Table 9-4 — POSIX.5c Option Requirements


POSIX.5c Option
Asynchronous I/O
Change Owner Restriction
File Synchronization
Memory Mapped Files
Memory Locking
Memory Range Locking
Memory Protection
Message Queues
Filename Truncation
Prioritized I/O
Priority Process Scheduling
Realtime Signals
Saved IDs Support
Semaphores
Shared Memory Objects
Synchronized I/O
Mutexes
Mutex Priority Inheritance
Mutex Priority Ceiling
Process Shared
Timers

The service POSIX_Terminal_Functions.Disable_Control_Character


shall not raise POSIX_Error with an error code of Operation_Not_-
Implemented.
POSIX_Limits.Child_Processes_Maxima'First shall be at least 25.
POSIX_Limits.Groups_Maxima'First shall be at least 8.

Copyright © 2004 IEEE. All rights reserved.

96 9 Multi-Purpose Realtime System Profile

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
POSIX REALTIME AND EMBEDDED APPLICATION SUPPORT IEEE Std 1003.13-2003

POSIX_Limits.Timers_Maxima'First shall be at least 64.


POSIX_Limits.Realtime_Signals_Maxima'First shall be at least 16.
Regarding task priority scheduling, the implementation shall support the follow-
ing requirements from POSIX.5c {5} and the Ada95 RM {1}:
— The implementation shall support the priority model defined in the Ada95
RM {1}, Section D.1, and the pragmas and package interfaces defined in the
Ada95 RM {1}, Sections D.2–D.5.
— The implementation shall meet the requirements of POSIX.5c {5},
Section 13.3.1.
Implementations of the PSE54 profile shall support the POSIX_Profiles pack-
age defined in Annex A of this standard.
Subprograms not supported by a given profile shall raise POSIX_Error, returning
an error code of Operation_Not_Supported, except as noted otherwise.
All Image and Value functions that appear in the packages supported by a profile
must be implemented.
Where an overloaded subprogram is required by a Unit of Functionality, all forms
of the subprogram appearing in the referenced clause must be supported, except
as otherwise noted.

9.3 Application Constraints

The Multi-Purpose Realtime System Profile defined in this standard requires only
specific Units of Functionality of the required standards. The absence of particular
elements of these standards introduces constraints on the use of some of the fea-
tures of particular operations. This clause defines the constraints that an applica-
tion strictly conforming to one of the profiles shall observe when using each of the
operations required by that profile.

9.3.1 Constraints Related to POSIX.1 Interfaces (C Language Option)

This profile has no constraints on the application related to POSIX.1 interfaces, be-
cause it requires the implementation to be POSIX.1 conforming.

Copyright © 2004 IEEE. All rights reserved.

9.3 Application Constraints 97

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
IEEE Std 1003.13-2003 STANDARDIZED APPLICATION ENVIRONMENT PROFILE (AEP)

9.3.2 Constraints Related to POSIX.5c Interfaces (Ada Language


Option)

An application strictly conforming to PSE54 shall not attempt to bind a signal to a


task entry.

9.4 Shell and Utility Requirements

An implementation of the Multi-Purpose Realtime System Profile shall provide all


the mandatory utilities in the Shell and Utilities volume of POSIX.1 {3} with all
the functional behavior described therein. The system shall support the Large File
capabilities described in the Shell and Utilities volume of POSIX.1 {3}.
If the C language option is supported, the options of the Shell and Utilities volume
of POSIX.1 {3} shown in Table 9-5 shall be supported.

Table 9-5 — Shell and Utilities Option Requirements


(C Language Option)
Option

POSIX2_C_DEV
POSIX2_CHAR_TERM
POSIX2_FORT_RUN
POSIX2_SW_DEV
POSIX2_UPE

If the Ada language option is supported, the options of the Shell and Utilities vol-
ume of POSIX.1 {3} shown in Table 9-6 shall be supported.

Table 9-6 — Shell and Utilities Option Requirements


(Ada Language Option)
Option
POSIX2_CHAR_TERM
POSIX2_FORT_RUN
POSIX2_SW_DEV
POSIX2_UPE

Copyright © 2004 IEEE. All rights reserved.

98 9 Multi-Purpose Realtime System Profile

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
POSIX REALTIME AND EMBEDDED APPLICATION SUPPORT IEEE Std 1003.13-2003

9.5 Development Platform Requirements

One or more of the development options in 9.5.1 and 9.5.2 shall be implemented.

9.5.1 C Language Development Option

If this option is provided, the implementor shall define a Development Platform


and an environment capable of preparing for execution an application conformant
with this standard profile. This platform shall include the POSIX2_C_DEV and
POSIX2_SW_DEV options from the Shell and Utilities volume of POSIX.1 {3}.

9.5.1.1 Option Indicator

The presence of the C Language Development Option shall be indicated by the


symbol _POSIX_AEP_REALTIME_LANG_C99 being defined in the header
<unistd.h>. In addition, the presence of the C Language Development Option
may be indicated by the subtype POSIX_Profiles.Realtime_Lang_C99 having
the range True..True.

9.5.2 Ada Language Development Option

If this option is provided, the implementor shall define a Development Platform


and an environment capable of preparing for execution an application conformant
with this profile including applicable portions of the following:
— The Ada95 RM {1}
— POSIX.5c {5}
— The POSIX2_SW_DEV option from the Shell and Utilities volume of POSIX.1
{3}

9.5.2.1 Option Indicator

The presence of the Ada Language Development Option shall be indicated by the
subtype POSIX_Profiles.Realtime_Lang_Ada95 having the range
True..True. In addition, the presence of the Ada Language Development Option
may be indicated by the symbol _POSIX_AEP_REALTIME_LANG_Ada95 being
defined in the header <unistd.h>.

Copyright © 2004 IEEE. All rights reserved.

9.5 Development Platform Requirements 99

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
IEEE Std 1003.13-2003 STANDARDIZED APPLICATION ENVIRONMENT PROFILE (AEP)

9.6 Rationale for Operating System Requirements (informative)

(This clause is not a normative part of IEEE Std 1003.13-2003.)

9.6.1 Operating System Interface Requirements

This profile is based on existing practice in realtime systems that are built using
general-purpose computers, such as workstations. These systems have general-
purpose computing requirements such as a full-featured file system, networking,
virtual memory management, graphical user interfaces, multiuser access control,
etc. In addition, they have realtime requirements and thus the need for a realtime
operating system that provides a full POSIX.1 implementation and also the real-
time extensions described in this profile.

9.6.1.1 Process Primitives

The process control functions (which include process creation and execution) are
the basic operating system services required to support multiple processes, and are
therefore required by both realtime and non-realtime applications in these real-
time systems.

9.6.1.2 Signals

Signal services are a basic mechanism within POSIX-based systems and are re-
quired for error and event handling. Realtime systems typically have several logi-
cally concurrent software elements executing. Each such entity must respond to
several cyclic and/or acyclic stimuli, often in a time-critical manner. Although
purely synchronous models can supply such functionality via the use of additional
processes or threads, the current realtime practice for asynchronous notification
for events such as timeout, message arrival, and hardware interrupt can generally
be expected to offer higher performance and lower latency. Realtime Signals pro-
vide the reliable high-performance mechanism to support such notification.
The minimum number of realtime signals that the implementation is required to
support has been increased from the number specified in POSIX.1 {3}, 8, to 16. The
rationale for this increase is that there are many applications that have more than
8 different kinds of events. Doubling the number of required realtime signals
should have a minimum impact on the signal management overhead, while signif-
icantly increasing the number of event kinds that can be used by a strictly conform-
ing application.

Copyright © 2004 IEEE. All rights reserved.

100 9 Multi-Purpose Realtime System Profile

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
POSIX REALTIME AND EMBEDDED APPLICATION SUPPORT IEEE Std 1003.13-2003

9.6.1.3 Process Environment

The functions from the POSIX.1 Process Environment group are deemed necessary
to allow an application to determine and configure its system environment. This
allows a single version of an application to be run on similar but differing
platforms.
Since the systems will require multiple processes and multiple users, and because
they must support both COTS and realtime applications, the entire set of ID func-
tions is needed.

9.6.1.4 Files and Directories

All file and directory operations are required to support system applications and
their file systems. Although only a few of the path operation functions are required
to support realtime activities, the whole set is required for systems that support
COTS applications.
The Advisory Information option is required to allow the application to provide
hints about the way in which it is going to perform file operations, so that
implementations can provide a better degree of timing predictability for those
operations.
The File Locking option is required in the C language option to maintain a consis-
tent and safe way of accessing stdio (FILE *) objects from threads, across the four
realtime profiles.
The File Descriptor Management Unit of Functionality is included to aid the
handling of file descriptors across the process creation and program execution
operations.

9.6.1.5 Input and Output Primitives

The functions contained in the Device I/O Unit of Functionality are required to
support I/O on devices, files, and special files.
Although asynchronous I/O can be easily implemented using threads dedicated to
I/O, it is required in the PSE54 profile to support portability of applications that
may have been developed before POSIX threads implementations were widely
available.
The posix_devctl() function defined in POSIX.26 {4} is required to support control
operations on I/O devices.

Copyright © 2004 IEEE. All rights reserved.

9.6 Rationale for Operating System Requirements (informative) 101

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
IEEE Std 1003.13-2003 STANDARDIZED APPLICATION ENVIRONMENT PROFILE (AEP)

9.6.1.6 Synchronized Input and Output

These realtime systems that use file management systems will frequently require
synchronized I/O to provide data integrity and/or relinquish resources to other pro-
cesses. Synchronized I/O as defined in POSIX.1 {3} provides these mechanisms.

9.6.1.7 Device- and Class-Specific Functions

The terminal control functions are required for systems to support COTS applica-
tions and for the standard terminal devices that may be attached to the computer
system. To support nonstandard terminal devices, additional functions may be
necessary.

9.6.1.8 System Databases, Users, and Groups

The group and user database access functions are required for COTS database ap-
plications that may require them.

9.6.1.9 Synchronization

Mutexes and Condition Variables are required as part of threads model of


concurrency.
Semaphores are required to synchronize a signal handler with some other process
or thread. Semaphores are also required to support portability of applications that
might be using this mechanism instead of the preferred mutexes and condition
variables. It must be noted, however, that POSIX semaphores do not have the
mechanisms built in to avoid unbounded priority inversion when using them for
mutually exclusive access to shared resources. Mutexes with the appropriate pri-
ority inheritance or priority ceiling (also called priority protection) protocols can be
used to avoid this unbounded priority inversion. The Process Shared option is re-
quired to support applications requiring this mechanism for synchronization
across different processes.
Barriers are not required because they can easily be implemented using mutexes
and condition variables. Although a direct implementation of barriers can have a
significant efficiency benefit in some multiprocessor architectures, a mutex-and-
condition-variable implementation will not be significantly slower in most
architectures, and thus requiring barriers for all implementations is not justified.
Spin locks are not required because, although they are an efficient synchronization
mechanism, they cannot be portably used with the current POSIX.1 interfaces in

Copyright © 2004 IEEE. All rights reserved.

102 9 Multi-Purpose Realtime System Profile

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
POSIX REALTIME AND EMBEDDED APPLICATION SUPPORT IEEE Std 1003.13-2003

realtime applications. If a realtime scheduling policy such as SCHED_FIFO or


SCHED_RR is used, spin locks may cause deadlock on a single processor. On
multiprocessors, to avoid deadlock, it would be necessary for threads using a given
lock to be allocated to different processors. There are no standard APIs in the cur-
rent POSIX.1 {3} to allocate threads to specific processors.
Reader/Writer Locks are not required because they are not designed to avoid
unbounded priority inversion, and thus very long delays could occur in realtime
applications, with a low but nevertheless nonzero probability. It is expected that a
future revision of POSIX.1 {3} will add the priority inheritance and/or priority
ceiling options to reader/writer locks, which would eliminate the unbounded
priority inversion.

9.6.1.10 Priority Scheduling

This realtime environment requires the ability to do scheduling of concurrent pro-


cesses and threads with a preemptive priority-based scheduler to ensure that hard
deadlines are met. Thread and process priority scheduling are required for real-
time applications. The Sporadic Server Scheduling option is also required for pro-
cesses and threads, to enhance support of applications with aperiodic timing
requirements.
A common requirement of realtime systems is that they be able to run threads or
processes with realtime requirements together with threads with no realtime re-
quirements. One common way of doing this is by having the realtime threads run
under the SCHED_FIFO scheduling policy, while the non-realtime threads run at a
lower priority under the round-robin policy (SCHED_RR) to fairly share the avail-
able portion of the processor among them. POSIX.1 {3} requires each policy to have
a range of priorities of at least 32 distinct values, but does not impose any require-
ments on how these priority ranges relate to each other. It could happen that most
or all of the SCHED_RR priorities were larger than the SCHED_FIFO priorities,
thus making it impossible to mix realtime and non-realtime threads as required
above. To solve this problem in a portable way, this profile requires that there are
at least 31 SCHED_RR priority levels below the maximum priority of SCHED_FIFO.
In this way, a strictly conforming application can use the inclusive priority range
[max_FIFO_prio, max_FIFO_prio-30] with SCHED_FIFO for realtime threads
(with a total of 31 priority levels), and then use the priority value
min(max_FIFO_prio-31,max_RR_prio) with the SCHED_RR policy, for the non-
realtime threads, with guarantee that the latter priority value is valid for the
round-robin policy.
The implementation is required to support the PTHREAD_SCOPE_SYSTEM thread-
scheduling contention scope. The contention scope of a thread defines the set of
threads with which the thread competes for use of the processing resources. A
thread created with PTHREAD_SCOPE_SYSTEM scheduling contention scope
contends for resources with all other threads in the system that have the same
scheduling allocation domain. This allows a consistent scheduling of threads

Copyright © 2004 IEEE. All rights reserved.

9.6 Rationale for Operating System Requirements (informative) 103

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
IEEE Std 1003.13-2003 STANDARDIZED APPLICATION ENVIRONMENT PROFILE (AEP)

across the system and therefore a predictable timing behavior. As a consequence,


this is the preferred method for realtime systems.
The current POSIX.1 {3} allows implementations to support either system-wide or
process-wide contention scope, or both. This represents a compromise that tries to
address the requirements of both realtime and non-realtime applications, but in-
troduces a potential source for nonportability. Because the realtime profiles are
specifically targeted at realtime systems, the system-wide contention scope option
is required in the profiles that support multiple processes. Process-wide contention
scope may also be provided, perhaps for the non-realtime threads of the
application.
Support for a scheduling allocation domain of size one and static binding of threads
to allocation domains is required in all the realtime profiles to achieve predictable
scheduling behavior. The allocation domain of a thread is the set of processors on
which that thread can be scheduled at any given time. POSIX.1 {3} specifies that
the scheduling rules have predictable effects only if the allocation domain is of size
one; hence the need for this requirement. For single-processor systems the alloca-
tion domain is generally of size one, and thus the application can meet the require-
ment just by specifying in the conformance document that the scheduling
allocation domain is of size one and that static binding of threads to allocation do-
mains is the default behavior.

9.6.1.11 Process Memory Locking

Realtime processes must be able to guarantee memory residency to reduce the


latency for instruction fetches, data access, I/O operations, etc. The mechanism
described in the POSIX.1 Process Memory Locking extension will satisfy this
requirement.

9.6.1.12 Shared Memory

The ability to share large volumes of data among many cooperating execution
streams is required. The POSIX.1 Shared Memory extension provides this capabil-
ity. Memory Mapped I/O may be implemented using the Shared Memory facility.
An implementation must provide facilities for creating a block of physical memory
in which the application may place devices and facilities for binding to a user-
provided pathname through which a device may subsequently be opened as a
Shared Memory special file, and mapped into the process address space for the
purpose of performing I/O or other functions from applications programs.
The Memory Mapped Files option is required because the implementation has file-
system capabilities, and memory-mapped files are a convenient paradigm for read-
ing and writing information in applications following this profile. In memory-
mapped files, data can be manipulated as memory and I/O data movement can be

Copyright © 2004 IEEE. All rights reserved.

104 9 Multi-Purpose Realtime System Profile

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
POSIX REALTIME AND EMBEDDED APPLICATION SUPPORT IEEE Std 1003.13-2003

significantly reduced. The implementation of memory-mapped files does not re-


quire a significant amount of additional memory or execution overhead to achieve
the additional capability.
System vendors are expected to implement the chosen interface in a manner that
meets the needs of the applications. In particular, a rotating media-based imple-
mentation is not required by the interface definition.
Typed Memory objects are not required because they are useful only to systems
with special hardware architectures that have various often specialized kinds of
memory. Implementors providing support for such special architectures always
have the option to provide typed memory objects as an extension.

9.6.1.13 Clocks and Timers

High-resolution timer functions are required in most realtime systems for imple-
menting time management operations such as periodic activations, short duration
timeouts, etc. The normal POSIX.1 time management functions sleep() and alarm()
only provide a time resolution of one second, but many realtime systems require
finer resolution for specifying time.
The Monotonic Clock is required for realtime applications to ensure that deadlines
and timing requirements are not affected by clock jumps.
The Clock Selection option is required to enable choosing the clock on which sleep
operations are performed, and to have access to an absolute sleep operation, which
is a common requirement in realtime applications with periodic timing
requirements.
CPU-Time clocks and timers are required as a means to detect and handle
situations in which a thread overruns its assigned maximum execution time.
Bounding the execution times of the different threads in the application provides
temporal partitioning in realtime applications, and thus increases predictability
and reliability.
The Timeouts option is a general requirement for realtime applications and thus
is required in this profile.
The minimum number of per-process timers that the implementation is required
to support has been increased from the number specified in POSIX.1 {3}, 32, to 64,
which is the required minimum number of threads per process. The reason for this
increase is that there are many applications that require one timer per thread (ei-
ther realtime or CPU-time based).

Copyright © 2004 IEEE. All rights reserved.

9.6 Rationale for Operating System Requirements (informative) 105

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
IEEE Std 1003.13-2003 STANDARDIZED APPLICATION ENVIRONMENT PROFILE (AEP)

9.6.1.14 Message Passing

These realtime systems typically include some form of message queuing


mechanism for communication among processes or threads. The POSIX.1 message
passing offers an appropriate level of performance to provide this functionality.

9.6.1.15 Threads

The basic assumption in this profile is that the system will consist of one or more
processes with multiple threads. Therefore, all thread services are required. The
POSIX_THREADS_BASE Unit of Functionality was specified in this standard in-
stead of the _POSIX_THREADS option, because this option requires reader/writer
locks, but this profile does not.

9.6.1.16 Tracing

Tracing is required for the PSE54 environment because it provides an excellent


mechanism to support post-failure analysis, particularly for failures having a low
probability of occurrence.
The Trace Event Filtering option is required for the system to be able to filter out
those trace events that are not meaningful for the application, thus making better
use of system resources by capturing only the interesting events.
Because the PSE54 profile requires general file system capabilities, the Trace Log
option is required for this profile.

9.6.1.17 Networking

Today, virtually all of the platforms and applications belonging to the PSE54
environment require network communications, and thus the networking Unit of
Functionality is required in this profile. The Raw Sockets option is required to aid
reconfiguration of networked applications and to implement special protocols
directly, without the weight of a full protocol stack. The Internet Protocol Version 6
option is not required because most applications are not using this version of the
protocol yet.

Copyright © 2004 IEEE. All rights reserved.

106 9 Multi-Purpose Realtime System Profile

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
POSIX REALTIME AND EMBEDDED APPLICATION SUPPORT IEEE Std 1003.13-2003

9.6.1.18 Event Management

The select() function is usually associated with networking facilities, which are
required for PSE54, and thus the Event Management Unit of Functionality is
required in the PSE54 environment.

9.6.1.19 Interfaces Related to the Shell and Utilities

The interfaces defined in the POSIX_REGEXP and POSIX_SHELL_FUNC are


required in PSE54 environments, because of their general-purpose computing
requirements.

9.6.1.20 X/Open Units of Functionality and Options

Some XSI Units of Functionality (XSI_C_LANG_SUPPORT, XSI_DEVICE_IO,


XSI_DEVICE_SPECIFIC, XSI_FD_MGMT, XSI_FILE_SYSTEM, XSI_IPC, XSI_JOB_-
CONTROL, XSI_JUMP, XSI_MATH, XSI_MULTI_PROCESS, XSI_SIGNALS,
XSI_SINGLE_PROCESS, XSI_SYSTEM_DATABASE, XSI_TIMERS, XSI_USER_-
GROUPS, XSI_WIDE_CHAR) have interfaces that represent extensions or alterna-
tives to interfaces in other Units of Functionality or POSIX.1 options, and there-
fore are not necessary for PSE54 environments.
The XSI_DBM Unit of Functionality includes interfaces for database management
that are not required in the PSE54 application environment.
The XSI_DYNAMIC_LINKING Unit of Functionality is required for PSE54 systems,
which usually execute a mixture of realtime and non-realtime activities in a typi-
cally dynamic context.
The XSI_I18N Unit of Functionality provides facilities for natural language mes-
sages to the user, which are not required all PSE54 systems. It remains as an op-
tional feature.
The XSI_SYSTEM_LOGGING Unit of Functionality provides facilities for logging
system activities, which are usually required in PSE54 environments. Therefore,
this Unit of Functionality is required.
The XSI_THREAD_MUTEX_EXT Unit of Functionality is required because it has op-
tions for controlling the behavior of mutexes under erroneous application use. This
capability is interesting for any realtime application, including those targeted at
small embedded systems.
The XSI_THREADS_EXT Unit of Functionality is required because it provides func-
tions to better control a thread’s stack. This is considered useful for any realtime
application.

Copyright © 2004 IEEE. All rights reserved.

9.6 Rationale for Operating System Requirements (informative) 107

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
IEEE Std 1003.13-2003 STANDARDIZED APPLICATION ENVIRONMENT PROFILE (AEP)

The _XOPEN_CRYPT option provides cryptography facilities that are not required
in all PSE54 environments. It remains as an optional feature.
The _XOPEN_LEGACY option provides facilities for backwards compatibility that
are not required in most PSE54 environments.
The _XOPEN_STREAMS option provides facilities that are not required in most
PSE54 environments.

9.6.1.21 Language-Specific Services for the C Programming Language

Full support for the C99 Standard {2} is required in the C language option.

9.6.1.22 Language-Specific Services for the Ada Programming Language

Support for the Ada language-specific services defined in POSIX.5c {5} is required
in the Ada language option.

9.6.2 Shell and Utility Requirements

The mandatory utilities and facilities described in the Shell and Utilities volume
of POSIX.1 {3} as well as the options appearing in Table 9-5 and Table 9-6 (for their
respective language options) are required in PSE54 environments.

9.6.3 Development Platform Requirements

The implementation is required to define a development environment in which a


PSE54 application can be prepared for execution on the target platform. For this
profile, in most cases the development and the target platform roles will be com-
bined in the same system.

Copyright © 2004 IEEE. All rights reserved.

108 9 Multi-Purpose Realtime System Profile

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
IEEE Std 1003.13-2003

Annex A: POSIX Profiles Package (Ada Language)


(Normative)

The package POSIX_Profiles shall be supported by all profiles. The Boolean


subtypes contained in this package shall indicate the profiles and options support-
ed by the implementation. Supported profiles and options shall be indicated by the
appropriate identifier having the range True..True; unsupported profiles and
options shall have the range False..False.
package POSIX_Profiles is

-- Profile options
subtype Realtime_Minimal is Boolean range <Implementation Defined>;
subtype Realtime_Controller is Boolean range <Implementation Defined>;
subtype Realtime_Dedicated is Boolean range <Implementation Defined>;
subtype Realtime_Multi is Boolean range <Implementation Defined>;

-- Language development options


subtype Realtime_Lang_C99 is Boolean range <Implementation Defined>;
subtype Realtime_Lang_Ada95 is Boolean range <Implementation Defined>;

-- Version constant
Realtime_AEP_Version : constant := 2003_12;

end POSIX_Profiles;

Copyright © 2004 IEEE. All rights reserved.

A POSIX Profiles Package (Ada Language) 109

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
This page is left intentionally blank.

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
IEEE Std 1003.13-2003

Annex B: Description of Optional Interfaces


(Informative)

B.1 POSIX.1 Options

Table B-1 shows the functions included under each of the options specified in the
System Interfaces volume of POSIX.1 {3}. Each row of this table contains all the
functions included under the first named option and also under combinations of
that option with other options.

Table B-1 — Functions under each POSIX.1


System Interface Option
_POSIX_ADVISORY_INFO
posix_fad vise(), posix_fallocate(), posix_m em align ()
_POSIX_ADVISORY_INFO and either _POSIX_MAPPED_FILES or
_POSIX_SHARED_MEMORY_OBJECTS
posix_m ad vise()
_POSIX_ASYNCHRONOUS_IO
aio_can cel(), aio_error(), aio_fsyn c(), aio_read (), aio_retu rn (), aio_su spen d (),
aio_w rite(), lio_listio()
_POSIX_BARRIERS and _POSIX_THREADS
pth read _barrier_d estroy(), pth read _barrier_in it(), pth read _barrier_w ait(),
pth read _barrierattr_d estroy(), pth read _barrierattr_in it(),
POSIX_BARRIERS, _POSIX_THREADS and _POSIX_THREAD_PROCESS_SHARED
pth read _barrierattr_getpsh ared (), pth read _barrierattr_setpsh ared ()
_POSIX_CHOWN_RESTRICTED
No functions under this option.
_POSIX_CLOCK_SELECTION
clock _n an osleep()
_POSIX_CLOCK_SELECTION and _POSIX_THREADS
pth read _con d attr_getclock (), pth read _con d attr_setclock ()
_POSIX_CPUTIME
clock _getcpu clock id ()
_POSIX_FSYNC
fsyn c()

Copyright © 2004 IEEE. All rights reserved.

B.1 POSIX.1 Options 111

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
IEEE Std 1003.13-2003 STANDARDIZED APPLICATION ENVIRONMENT PROFILE (AEP)

Table B-1 — Functions under each POSIX.1


System Interface Option (Continued)
_POSIX_IPV6
No functions under this option.
_POSIX_MAPPED_FILES or _POSIX_SHARED_MEMORY_OBJECTS or
_POSIX_TYPED_MEMORY_OBJECTS
m m ap(), m u n m ap()
_POSIX_MAPPED_FILES and _POSIX_SYNCHRONIZED_IO
m syn c()
_POSIX_MAPPED_FILES and _POSIX_ADVISORY_INFO
posix_m ad vise()
_POSIX_MEMLOCK
m lock all(), m u n lock all()
_POSIX_MEMLOCK_RANGE
m lock (), m u n lock ()
_POSIX_MEMORY_PROTECTION
m protect()
_POSIX_MESSAGE_PASSING
m q_close(), m q_getattr(), m q_n otify(), m q_open (), m q_receive(), m q_sen d (),
m q_setattr(), m q_u n lin k (),
_POSIX_MESSAGE_PASSING and _POSIX_TIMEOUTS
m q_tim ed receive(), m q_tim ed sen d ()
_POSIX_MONOTONIC_CLOCK
No functions under this option.
_POSIX_PRIORITIZED_IO
No functions under this option.
_POSIX_PRIORITY_SCHEDULING
sch ed _get_priority_m ax(), sch ed _get_priority_m in (), sch ed _getparam (),
sch ed _getsch ed u ler(), sch ed _rr_get_in terval(), sch ed _setparam (),
sch ed _setsch ed u ler()
_POSIX_PRIORITY_SCHEDULING or _POSIX_THREADS
sch ed _yield (),
_POSIX_PRIORITY_SCHEDULING and _POSIX_SPAWN
posix_spaw n attr_getsch ed param (), posix_spaw n attr_setsch ed param (),
posix_spaw n attr_getsch ed policy(), posix_spaw n attr_setsch ed policy()
_POSIX_RAW_SOCKETS
No functions under this option.
_POSIX_REALTIME_SIGNALS
sigqu eu e(), sigtim ed w ait(), sigw aitin fo()
_POSIX_SAVED_IDS
No functions under this option.

Copyright © 2004 IEEE. All rights reserved.

112 B Description of Optional Interfaces

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
POSIX REALTIME AND EMBEDDED APPLICATION SUPPORT IEEE Std 1003.13-2003

Table B-1 — Functions under each POSIX.1


System Interface Option (Continued)
_POSIX_SEMAPHORES
sem _close(), sem _d estroy(), sem _getvalu e(), sem _in it(), sem _open (), sem _post(),
sem _tryw ait(), sem _w ait(), sem _u n lin k ()
_POSIX_SEMAPHORES and _POSIX_TIMEOUTS
sem _tim ed w ait()
_POSIX_SHARED_MEMORY_OBJECTS
sh m _open (), sh m _u n lin k ()
_POSIX_SHARED_MEMORY_OBJECTS and _POSIX_ADVISORY_INFO
posix_m ad vise()
_POSIX_SHARED_MEMORY_OBJECTS or _POSIX_MAPPED_FILES
m m ap(), m u n m ap()
_POSIX_SPAWN
posix_spaw n (), posix_spaw n _file_action s_ad d close(),
posix_spaw n _file_action s_ad d d u p2(), posix_spaw n _file_action s_ad d open (),
posix_spaw n _file_action s_d estroy(), posix_spaw n _file_action s_in it(),
posix_spaw n attr_d estroy(), posix_spaw n attr_getflags(),
posix_spaw n attr_getpgrou p(), posix_spaw n attr_getsigd efau lt(),
posix_spaw n attr_getsigm ask (), posix_spaw n attr_in it(),
posix_spaw n attr_setflags(), posix_spaw n attr_setpgrou p(),
posix_spaw n attr_setsigd efau lt(), posix_spaw n attr_setsigm ask (), posix_spaw n p()
_POSIX_SPAWN and _POSIX_PRIORITY_SCHEDULING
posix_spaw n attr_getsch ed param (), posix_spaw n attr_setsch ed param (),
posix_spaw n attr_getsch ed policy(), posix_spaw n attr_setsch ed policy()
_POSIX_SPIN_LOCKS and _POSIX_THREADS
pth read _spin _d estroy(), pth read _spin _in it(), pth read _spin _lock (),
pth read _spin _trylock (), pth read _spin _u n lock ()
_POSIX_SPORADIC_SERVER
No functions under this option.
_POSIX_SYNCHRONIZED_IO
fd atasyn c()
_POSIX_SYNCHRONIZED_IO and _POSIX_MAPPED_FILES
m syn c()
_POSIX_THREAD_ATTR_STACKADDR and _POSIX_THREADS
pth read _attr_getstack ad d r(), pth read _attr_setstack ad d r()
_POSIX_THREAD_ATTR_STACKADDR, _POSIX_THREADS and
_POSIX_THREAD_ATTR_STACKSIZE
pth read _attr_getstack (), pth read _attr_setstack ()

Copyright © 2004 IEEE. All rights reserved.

B.1 POSIX.1 Options 113

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
IEEE Std 1003.13-2003 STANDARDIZED APPLICATION ENVIRONMENT PROFILE (AEP)

Table B-1 — Functions under each POSIX.1


System Interface Option (Continued)
_POSIX_THREAD_ATTR_STACKSIZE and _POSIX_THREADS
pth read _attr_getstack size(), pth read _attr_setstack size()(1)
_POSIX_THREAD_ATTR_STACKSIZE, _POSIX_THREADS and
_POSIX_THREAD_ATTR_STACKADDR
pth read _attr_getstack (), pth read _attr_setstack ()
_POSIX_THREAD_CPUTIME and _POSIX_THREADS
pth read _getcpu clock id ()
_POSIX_THREAD_PRIO_INHERIT and _POSIX_THREADS
pth read _m u texattr_getprotocol(), pth read _m u texattr_setprotocol()
_POSIX_THREAD_PRIO_PROTECT and _POSIX_THREADS
pth read _m u tex_getprioceilin g(), pth read _m u tex_setprioceilin g(),
pth read _m u texattr_getprioceilin g(), pth read _m u texattr_getprotocol(),
pth read _m u texattr_setprioceilin g(), pth read _m u texattr_setprotocol()
_POSIX_THREAD_PRIORITY_SCHEDULING and _POSIX_THREADS
pth read _attr_getin h eritsch ed (), pth read _attr_getsch ed policy(),
pth read _attr_getscope(), pth read _attr_setin h eritsch ed (),
pth read _attr_setsch ed policy(), pth read _attr_setscope(),
pth read _getsch ed param (), pth read _setsch ed param (), pth read _setsch ed prio(),
sch ed _get_priority_m ax(), sch ed _get_priority_m in (), sch ed _rr_get_in terval()
_POSIX_THREAD_PROCESS_SHARED and _POSIX_THREADS
pth read _con d attr_getpsh ared (), pth read _con d attr_setpsh ared (),
pth read _m u texattr_getpsh ared (), pth read _m u texattr_setpsh ared (),
pth read _rw lock attr_getpsh ared (), pth read _rw lock attr_setpsh ared ()
_POSIX_THREAD_PROCESS_SHARED, _POSIX_BARRIERS and _POSIX_THREADS
pth read _barrierattr_getpsh ared (), pth read _barrierattr_setpsh ared ()
_POSIX_THREAD_SAFE_FUNCTIONS
asctim e_r(), ctim e_r(), flock file(), ftrylock file(), fu n lock file(), getc_u n lock ed (),
getch ar_u n lock ed (), getgrgid _r(), getgrn am _r(), getlogin _r(), getpw n am _r(),
getpw u id _r(), gm tim e_r(), localtim e_r(), pu tc_u n lock ed (), pu tch ar_u n lock ed (),
ran d _r(), read d ir_r(), strerror_r(), strtok _r(), ttyn am e_r()
_POSIX_THREAD_SPORADIC_SERVER
No functions under this option.

Copyright © 2004 IEEE. All rights reserved.

114 B Description of Optional Interfaces

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
POSIX REALTIME AND EMBEDDED APPLICATION SUPPORT IEEE Std 1003.13-2003

Table B-1 — Functions under each POSIX.1


System Interface Option (Continued)
_POSIX_THREADS
pth read _atfork (), pth read _attr_d estroy(), pth read _attr_getd etach state(),
pth read _attr_getsch ed param (), pth read _attr_in it(),
pth read _attr_setd etach state(), pth read _attr_setsch ed param (), pth read _can cel(),
pth read _clean u p_pop(), pth read _clean u p_pu sh (), pth read _con d _broad cast(),
pth read _con d _d estroy(), pth read _con d _in it(), pth read _con d _sign al(),
pth read _con d _tim ed w ait(), pth read _con d _w ait(), pth read _con d attr_d estroy(),
pth read _con d attr_in it(), pth read _create(), pth read _d etach (), pth read _equ al(),
pth read _exit(), pth read _getspecific(), pth read _join (), pth read _k ey_create(),
pth read _k ey_d elete(), pth read _k ill(), pth read _m u tex_d estroy(),
pth read _m u tex_in it(), pth read _m u tex_lock (), pth read _m u tex_trylock (),
pth read _m u tex_u n lock (), pth read _m u texattr_d estroy(),
pth read _m u texattr_in it(), pth read _on ce(), pth read _self(),
pth read _setcalcelstate(), pth read _setcan celtype(), pth read _setspecific(),
pth read _sigm ask (), pth read _testcan cel(), pth read _rw lock _d estroy(),
pth read _rw lock _in it(), pth read _rw lock _rd lock (), pth read _rw lock _tryrd lock (),
pth read _rw lock _tryw rlock (), pth read _rw lock _u n lock (),
pth read _rw lock _w rlock (), pth read _rw lock attr_d estroy(),
pth read _rw lock attr_in it()
_POSIX_THREADS and _POSIX_CLOCK_SELECTION
pth read _con d attr_getclock (), pth read _con d attr_setclock ()
_POSIX_THREADS and _POSIX_BARRIERS
pth read _barrier_d estroy(), pth read _barrier_in it(), pth read _barrier_w ait(),
pth read _barrierattr_d estroy(), pth read _barrierattr_in it(),
_POSIX_THREADS, POSIX_BARRIERS and _POSIX_THREAD_PROCESS_SHARED
pth read _barrierattr_getpsh ared (), pth read _barrierattr_setpsh ared ()
_POSIX_THREADS and _POSIX_SPIN_LOCKS
pth read _spin _d estroy(), pth read _spin _in it(), pth read _spin _lock (),
pth read _spin _trylock (), pth read _spin _u n lock ()
_POSIX_THREADS and _POSIX_THREAD_ATTR_STACKADDR
pth read _attr_getstack ad d r(), pth read _attr_setstack ad d r()
_POSIX_THREADS, _POSIX_THREAD_ATTR_STACKADDR and
_POSIX_THREAD_ATTR_STACKSIZE
pth read _attr_getstack (), pth read _attr_setstack ()
_POSIX_THREADS and _POSIX_THREAD_ATTR_STACKSIZE
pth read _attr_getstack size(), pth read _attr_setstack size()a
_POSIX_THREADS and _POSIX_THREAD_CPUTIME
pth read _getcpu clock id ()

This table row continued on next page...

Copyright © 2004 IEEE. All rights reserved.

B.1 POSIX.1 Options 115

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
IEEE Std 1003.13-2003 STANDARDIZED APPLICATION ENVIRONMENT PROFILE (AEP)

Table B-1 — Functions under each POSIX.1


System Interface Option (Continued)
...table row continued from previous page

_POSIX_THREADS and either _POSIX_THREAD_PRIO_INHERIT or


_POSIX_THREAD_PRIO_PROTECT
pth read _m u texattr_getprotocol(), pth read _m u texattr_setprotocol()
_POSIX_THREADS and _POSIX_THREAD_PRIO_PROTECT
pth read _m u tex_getprioceilin g(), pth read _m u tex_setprioceilin g(),
pth read _m u texattr_getprioceilin g(), pth read _m u texattr_setprioceilin g()
_POSIX_THREADS and _POSIX_THREAD_PRIORITY_SCHEDULING
pth read _attr_getin h eritsch ed (), pth read _attr_getsch ed policy(),
pth read _attr_getscope(), pth read _attr_setin h eritsch ed (),
pth read _attr_setsch ed policy(), pth read _attr_setscope(),
pth read _getsch ed param (), pth read _setsch ed param (), pth read _setsch ed prio(),
sch ed _get_priority_m ax(), sch ed _get_priority_m in (), sch ed _rr_get_in terval()
_POSIX_THREADS and _POSIX_THREAD_PROCESS_SHARED
pth read _con d attr_getpsh ared (), pth read _con d attr_setpsh ared (),
pth read _m u texattr_getpsh ared (), pth read _m u texattr_setpsh ared (),

pth read _rw lock attr_getpsh ared (), pth read _rw lock attr_setpsh ared ()
_POSIX_THREADS and POSIX_TIMEOUTS
pth read _m u tex_tim ed lock (), pth read _rw lock _tim ed rd lock (),
pth read _rw lock _tim ed w rlock ()
_POSIX_THREADS or _POSIX_PRIORITY_SCHEDULING
sch ed _yield ()
_POSIX_TIMEOUTS and _POSIX_MESSAGE_PASSING
m q_tim ed receive(), m q_tim ed sen d ()
_POSIX_TIMEOUTS and _POSIX_SEMAPHORES
sem _tim ed w ait()
_POSIX_TIMEOUTS and _POSIX_THREADS
pth read _m u tex_tim ed lock (), pth read _rw lock _tim ed rd lock (),
pth read _rw lock _tim ed w rlock ()
_POSIX_TIMEOUTS and _POSIX_TRACE
posix_trace_tim ed getn ext_even t()
_POSIX_TIMERS
clock _getres(), clock _gettim e(), clock _settim e(), n an osleep(), tim er_create(),
tim er_d etele(), tim er_getoverru n (), tim er_gettim e(), tim er_settim e()

Copyright © 2004 IEEE. All rights reserved.

116 B Description of Optional Interfaces

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
POSIX REALTIME AND EMBEDDED APPLICATION SUPPORT IEEE Std 1003.13-2003

Table B-1 — Functions under each POSIX.1


System Interface Option (Continued)
_POSIX_TRACE
posix_trace_attr_d estroy(), posix_trace_attr_getclock res(),
posix_trace_attr_getcreatetim e(), posix_trace_attr_getgen version (),
posix_trace_attr_getn am e(), posix_trace_attr_getstream fu llpolicy(),
posix_trace_attr_getm axd atasize(), posix_trace_attr_getm axsystem even tsize(),
posix_trace_attr_getm axu sereven tsize(), posix_trace_attr_getstream size(),
posix_trace_attr_in it(), posix_trace_attr_setn am e(),
posix_trace_attr_setstream fu llpolicy(), posix_trace_attr_setm axd atasize(),
posix_trace_attr_setstream size(), posix_trace_clear(), posix_trace_create(),
posix_trace_even t(), posix_trace_even tid _open (), posix_trace_even tid _equ al(),
posix_trace_even tid _get_n am e(), posix_trace_even ttypelist_getn ext_id (),
posix_trace_even ttypelist_rew in d (), posix_trace_get_attr(),
posix_trace_get_statu s(), posix_trace_getn ext_even t(), posix_trace_sh u td ow n (),
posix_trace_start(), posix_trace_stop(), posix_trace_trygetn ext_even t()
_POSIX_TRACE and _POSIX_TIMEOUTS
posix_trace_tim ed getn ext_even t()
_POSIX_TRACE and _POSIX_TRACE_INHERIT
posix_trace_attr_getin h erited (), posix_trace_attr_setin h erited ()
_POSIX_TRACE and _POSIX_TRACE_LOG
posix_trace_attr_getlogfu llpolicy(), posix_trace_attr_getlogsize(),
posix_trace_attr_setlogfu llpolicy(), posix_trace_attr_setlogsize(),
posix_trace_close(), posix_trace_open (), posix_trace_rew in d (),
posix_trace_create_w ith log(), posix_trace_flu sh ()
_POSIX_TRACE and _POSIX_TRACE_EVENT_FILTER
posix_trace_even tset_ad d (), posix_trace_even tset_d el(),
posix_trace_even tset_em pty(), posix_trace_even tset_fill(),
posix_trace_even tset_ism em ber(), posix_trace_get_filter(),
posix_trace_set_filter(), posix_trace_trid _even tid _open ()
_POSIX_TRACE_EVENT_FILTER and _POSIX_TRACE
posix_trace_even tset_ad d (), posix_trace_even tset_d el(),
posix_trace_even tset_em pty(), posix_trace_even tset_fill(),
posix_trace_even tset_ism em ber(), posix_trace_get_filter(),
posix_trace_set_filter(), posix_trace_trid _even tid _open ()
_POSIX_TRACE_INHERIT and _POSIX_TRACE
posix_trace_attr_getin h erited (), posix_trace_attr_setin h erited ()
_POSIX_TRACE_LOG and _POSIX_TRACE
posix_trace_attr_getlogfu llpolicy(), posix_trace_attr_getlogsize(),
posix_trace_attr_setlogfu llpolicy(), posix_trace_attr_setlogsize(),
posix_trace_close(), posix_trace_open (), posix_trace_rew in d (),
posix_trace_create_w ith log(), posix_trace_flu sh ()

Copyright © 2004 IEEE. All rights reserved.

B.1 POSIX.1 Options 117

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
IEEE Std 1003.13-2003 STANDARDIZED APPLICATION ENVIRONMENT PROFILE (AEP)

Table B-1 — Functions under each POSIX.1


System Interface Option (Continued)
_POSIX_TYPED_MEMORY_OBJECTS
posix_m em _offset(), posix_typed _m em _get_in fo(), posix_typed _m em _open ()
_POSIX_TYPED_MEMORY_OBJECTS or _POSIX_MAPPED_FILES or
_POSIX_SHARED_MEMORY_OBJECTS
m m ap(), m u n m ap()
_POSIX_VDISABLE
No functions under this option.
_XOPEN_CRYPT
crypt(), en crypt(), setk ey()
_XOPEN_ENH_I18N
No functions under this option.
_XOPEN_LEGACY
bcm p(), bcopy(), bzero(), ecvt(), fcvt(), ftim e(), gcvt(), getw d (), in d ex(), m k tem p(),
rin d ex(), u tim es(), w csw cs()
_XOPEN_REALTIME
This Option Group consists of the set of the following options from within POSIX.1 {3}:

_P OSIX_ASYNCH RONOUS_IO
_P OSIX_F SYNC
_P OSIX_MAP P E D_F ILE S
_P OSIX_ME MLOCK
_P OSIX_ME MLOCK_RANGE
_P OSIX_ME MORY_P ROTE CTION
_P OSIX_ME SSAGE _PASSING
_P OSIX_P RIORITIZE D_IO
_P OSIX_P RIORITY_SCH E DULING
_P OSIX_RE ALTIME _SIGNALS
_P OSIX_SE MAP H ORE S
_P OSIX_SH ARE D_ME MORY_OBJ E CTS
_P OSIX_SYNCH RONIZE D_IO
_P OSIX_TIME RS
_XOPEN_REALTIME_THREADS
This Option Group consists of the set of the following options from within POSIX.1 {3}:

_P OSIX_TH RE AD_P RIO_INH E RIT


_P OSIX_TH RE AD_P RIO_P ROTE CT
_P OSIX_TH RE AD_P RIORITY_SCH E DULING
_XOPEN_SHM
This option is included in the XSI_IPC Unit of Functionality.
_XOPEN_STREAMS
fattach (), fd etach (), getm sg(), getpm sg(), ioctl(), isastream (), pu tm sg(),
pu tpm sg(),

Copyright © 2004 IEEE. All rights reserved.

118 B Description of Optional Interfaces

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
POSIX REALTIME AND EMBEDDED APPLICATION SUPPORT IEEE Std 1003.13-2003

(1) The pth read _attr_getstack size() and pth read _attr_setstack size() functions are wrongly listed under
the _P OSIX_TH RE AD_STACK_ADDRE SS option in POSIX.1 {3}, but should be under the
_P OSIX_TH RE AD_STACK_SIZE option.

Table B-2 shows the utilities included under each of the options specified in the
Shell and Utilities volume of POSIX.1 {3}:

Table B-2 — Utilities under each POSIX.1 Shell


and Utilities Option

_POSIX2_C_DEV
c99, lex, yacc
_POSIX2_CHAR_TERM
No utilities under this option.
_POSIX2_FORT_DEV
fort77
_POSIX2_FORT_RUN
asa
_POSIX2_LOCALEDEF
No utilities under this option.
_POSIX2_PBS
qalter, qdel, qhold, qmove, qmsg, qrerun, qrls, qselect, qsig,
qstat, qsub
_POSIX2_PBS_ACCOUNTING
No utilities under this option.
_POSIX2_PBS_CHECKPOINT
No utilities under this option.
_POSIX2_PBS_LOCATE
No utilities under this option.
_POSIX2_PBS_MESSAGE
No utilities under this option.
_POSIX2_PBS_TRACK
No utilities under this option.
_POSIX2_SW_DEV
ar, make, strip
_POSIX2_SW_DEV and _POSIX2_UPE
nm
_POSIX2_UPE
alias, at, batch, bg, command, crontab, csplit, ctags, df, du, ex,
expand, fc, fg, file, jobs, mesg, more, newgrp, nice, patch, ps,
renice, split, strings, tabs, talk, time, tput, unalias,
unexpand, uudecode, uuencode, vi, who, write
_POSIX2_UPE and _POSIX2_SW_DEV
nm

Copyright © 2004 IEEE. All rights reserved.

B.1 POSIX.1 Options 119

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
IEEE Std 1003.13-2003 STANDARDIZED APPLICATION ENVIRONMENT PROFILE (AEP)

B.2 POSIX.5c Options

Table B-3 shows the subprograms included under each of the options specified in
POSIX.5c {5}:

Table B-3 — Packages and Subprograms under


Each POSIX.5c Option
Package Subprogram
Asynchronous I/O
P OSIX_Asyn ch on ou s_IO All except the two subprograms below.
Asynchronous I/O and Synchronized I/O
P OSIX_Asyn ch on ou s_IO Synchronize_File
Synchronize_Data
Change Owner Restriction None
File Synchronization
P OSIX_IO Synchronize_File
Filename Truncation None
Memory Mapped Files or Shared Memory
Objects
P OSIX_IO Change_Permissions
Truncate_File
P OSIX_Mem or y_Ma ppin g Map_Memory(1)
Unmap_Memory
Memory Mapped Files and Synchronized I/O
P OSIX_Mem or y_Ma ppin g Synchronize_Memory
Memory Locking
P OSIX_Mem or y_Lockin g All
Memory Protection
P OSIX_Mem or y_Ma ppin g Change_Protection
Memory Range Locking
P OSIX_Mem or y_Ra n ge_Lockin g All
Message Queues
P OSIX_Messa ge_Qu eu es All
Mutexes
POSIX_Mutexes All except the subprograms below.
POSIX_Condition_Variables All except the subprograms below.
Mutexes and Process Shared
P OSIX_Mu t exes Get_Process_Shared
Set_Process_Shared
POSIX_Condition_Variables Get_Process_Shared
Set_Process_Shared
Mutexes and MutexPriority Ceiling
POSIX_Mutexes Set_Ceiling_Prioritya
Get_Ceiling_Prioritya
Mutexes and either Mutex Priority Inherit-
ance or MutexPriority Ceiling
POSIX_Mutexes
Set_Locking_Policy
Get_Locking_Policy

Copyright © 2004 IEEE. All rights reserved.

120 B Description of Optional Interfaces

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
POSIX REALTIME AND EMBEDDED APPLICATION SUPPORT IEEE Std 1003.13-2003

Table B-3 — Packages and Subprograms under


Each POSIX.5c Option (Continued)
Package Subprogram
Mutex Priority Ceiling and Mutexes
POSIX_Mutexes Set_Ceiling_Prioritya
Get_Ceiling_Prioritya
Set_Locking_Policy
Get_Locking_Policy
Mutex Priority Inheritance and Mutexes
POSIX_Mutexes Set_Locking_Policy
Get_Locking_Policy
Network Management and Sockets Detailed
Network Interface
POSIX_Sockets Set_Flags
Get_Flags
Set_Family
Get_Family
Set_Socket_Type
Get_Socket_Type
Set_Protocol_Number
Get_Protocol_Number
Get_Canonical_Name
Get_Socket_Address_Info
Get_Socket_Address_Info
For_Every_Item
Poll
POSIX_Event_Management Get_File
Set_File
Get_Events
Set_Events
Get_Returned_Events
Set_Returned_Events
Poll
Prioritized I/O None
Priority Process Scheduling
POSIX_Process_Scheduling All
Process Shared and Mutexes
POSIX_Mutexes Get_Process_Shared
Set_Process_Shared
POSIX_Condition_Variables Get_Process_Shared
Set_Process_Shared
Realtime Signals
POSIX_Signals Enable_Queueing
Disable_Queueing
Await_Signal(2)
Await_Signal_Or_Timeoutb
Queue_Signal
Saved IDs Support None

Copyright © 2004 IEEE. All rights reserved.

B.2 POSIX.5c Options 121

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
IEEE Std 1003.13-2003 STANDARDIZED APPLICATION ENVIRONMENT PROFILE (AEP)

Table B-3 — Packages and Subprograms under


Each POSIX.5c Option (Continued)
Package Subprogram
Select
POSIX_Event_Management Add
Remove
In_Set
Select_Filea
Semaphores
POSIX_Semaphores All
Shared Memory Objects
POSIX_Shared_Memory_Objects All
POSIX_Generic_Shared_Memory All
Shared Memory Objects and Memory Range
Locking
POSIX_Generic_Shared_Memory Lock_Shared_Memory
Unlock_Shared_Memory
Shared Memory Objects or Memory Mapped
Files
POSIX_IO Truncate_File
Sockets Detailed Network Interface
POSIX_Sockets All except the subprograms below.
Sockets Detailed Network Interface and
Network Management
POSIX_Sockets Set_Flags
Get_Flags
Set_Family
Get_Family
Set_Socket_Type
Get_Socket_Type
Set_Protocol_Number
Get_Protocol_Number
Get_Canonical_Name
Get_Socket_Address_Info
Get_Socket_Address_Info
For_Every_Item
Synchronized I/O
POSIX_IO Synchronize_Data
Synchronized I/O and Memory Mapped Files
POSIX_Memory_Mapping Synchronize_Memory
Timers
POSIX_Timers All
XTI Detailed Network Interface
POSIX_XTI All
(1)
All versions.
(2)
Return type Signal_Info.

Copyright © 2004 IEEE. All rights reserved.

122 B Description of Optional Interfaces

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
IEEE Std 1003.13-2003

Annex C: Bibliography
(Informative)

This annex contains lists of related open systems standards and suggested reading
on historical implementations and application programming.

C.1 Related Open Systems Standards

{B1} IEEE 100, T h e Au th oritative Diction ary of IE E E S tan d ard s T erm s, Seven t h
E dit ion .1)
{B2} ISO/IEC 8859-1:1998, In form ation tech n ology— 8-B it S in gle-B yte Cod ed
Graph ic Ch aracter S ets— Part 1: L atin Alph abet N o. 1.2)
{B3} ISO/IEC 10646:2003, In form ation tech n ology— Un iversal M u ltiple-Octet
Cod ed Ch aracter S et (UCS ).
{B4} ISO/IEC TR 10000-2:1998, In form ation tech n ology— Fram ew ork an d
T axon om y of In tern ation al S tan d ard ized Profiles— Part 2: Prin ciples an d
T axon om y for OS I Profiles.

C.2 Other Documents

{B5} T h e Au th orized Gu id e to th e S in gle UN IX S pecification , Ver sion 3, The Open


Group, March 2002. UK ISBN: 1-85912-277-9. US ISBN 1-931624-13-5.3)

1) IEEE publications are available from the Institute of Electrical and Electronics Engineers, Inc., 445 Hoes
Lane, Piscataway, NJ 08854, USA (http://standards.ieee.org/).
2) ISO/IEC documents can be obtained from the ISO office, 1 rue de Varembé, Case Postale 56, CH-1211,
Genève 20, Switzerland/Suisse (http://www.iso.ch/) and from the IEC office, 3 rue de Varembé, Case Postale
131, CH-1211, Genève 20, Switzerland/Suisse (http://www.iec.ch/). ISO/IEC publications are also available
in the United States from the Sales Department, American National Standards Institute, 25 West 43rd
Street, 4th Floor, New York, NY 10036, USA (http://www.ansi.org/).
3) This publication is available from The Open Group at http://www.unix-systems.org/version3/theguide.html.

Copyright © 2004 IEEE. All rights reserved.

C.1 Related Open Systems Standards 123

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
This page is left intentionally blank.

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
IEEE Std 1003.13-2003

Alphabetic Topical Index

Symbols _POSIX_JOB_CONTROL option... 10


_POSIX_MAPPED_FILES option... 18, 20,
<limits.h> header... 34 48, 57, 75, 94, 118
<unistd.h> header... 34, 37, 38, 45, 46, 55, _POSIX_MEMLOCK option... 18, 20, 39, 46,
56, 63, 73, 74, 80, 81, 91, 92, 99 57, 75, 94, 118
_E xit() function... 7 _POSIX_MEMLOCK_RANGE option... 18,
_exit() function... 7 20, 39, 57, 75, 94, 118
_lon gjm p() function... 9 _POSIX_MEMORY_PROTECTION
_POSIX_ADVISORY_INFO option... 18, 20, option... 19, 20, 75, 94, 118
48, 65, 83, 94 _POSIX_MESSAGE_PASSING option... 19,
_POSIX_AEP_REALTIME_ format... 31 20, 57, 75, 94, 118
_POSIX_AEP_REALTIME_ option... 37, 55, _POSIX_MONOTONIC_CLOCK option...
73, 91 19, 20, 39, 57, 75, 94
_POSIX_AEP_REALTIME_CONTROLLE _POSIX_NO_TRUNC option... 19, 21, 22, 48
R option... 55 _POSIX_PRIORITIZED_IO option... 19, 21,
_POSIX_AEP_REALTIME_DEDICATED 75, 94, 118
option... 73 _POSIX_PRIORITY_SCHEDULING
_POSIX_AEP_REALTIME_LANG_Ada95 option... 19, 21, 76, 94, 118
option... 38, 46, 56, 63, 74, 81, 92, 99 _POSIX_RAW_SOCKETS option... 19, 21,
_POSIX_AEP_REALTIME_LANG_C99 76, 94
option... 38, 45, 56, 63, 74, 80, 92, 99 _POSIX_READER_WRITER_LOCKS
_POSIX_AEP_REALTIME_MINIMAL option... 10
option... 37 _POSIX_REALTIME_SIGNALS option...
_POSIX_AEP_REALTIME_MULTI 19, 21, 39, 57, 76, 94, 118
option... 91 _POSIX_REGEXP option... 10
_POSIX_AEP_RT_CONTROLLER_C_SOU _POSIX_SAVED_IDS option... 19, 21, 94
RCE feature test macro... 56 _POSIX_SEMAPHORES option... 19, 21, 39,
_POSIX_AEP_RT_DEDICATED_C_SOUR 57, 76, 94, 118
CE feature test macro... 74 _POSIX_SHARED_MEMORY_OBJECTS
_POSIX_AEP_RT_MINIMAL_C_SOURCE option... 19, 21, 39, 57, 76, 94, 118
feature test macro... 38 _POSIX_SPAWN option... 19, 21, 76, 94
_POSIX_AEP_RT_MULTI_C_SOURCE _POSIX_SPIN_LOCKS option... 19, 21
feature test macro... 92 _POSIX_SPORADIC_SERVER option... 19,
_POSIX_ASYNCHRONOUS_IO option... 21, 76, 94
18, 20, 75, 94, 118 _POSIX_SYNCHRONIZED_IO option... 19,
_POSIX_BARRIERS option... 18, 20 21, 39, 57, 76, 94, 118
_POSIX_CHOWN_RESTRICTED option... _POSIX_THREAD_ATTR_STACKADDR
18, 20, 94 option... 19, 21, 39, 57, 76, 94
_POSIX_CLOCK_SELECTION option... 18, _POSIX_THREAD_ATTR_STACKSIZE
20, 39, 57, 75, 94 option... 19, 21, 39, 57, 76, 94
_POSIX_CPUTIME option... 18, 20, 75, 94 _POSIX_THREAD_CPUTIME option... 19,
_POSIX_FSYNC option... 18, 20, 39, 57, 75, 21, 39, 57, 76, 94
94, 118 _POSIX_THREAD_PRIO_INHERIT
_POSIX_IPV6 option... 18, 20 option... 19, 21, 39, 57, 76, 94, 118
_POSIX_THREAD_PRIO_PROTECT

Copyright © 2004 IEEE. All rights reserved.

125

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
IEEE Std 1003.13-2003 STANDARDIZED APPLICATION ENVIRONMENT PROFILE (AEP)

option... 19, 21, 39, 57, 76, 94, 118 _XOPEN_ENH_I18N option... 20, 22
_POSIX_THREAD_PRIORITY_SCHEDUL _XOPEN_LEGACY option... 20, 22, 53, 71,
ING option... 19, 21, 39, 58, 76, 94, 118 89, 108
_POSIX_THREAD_PROCESS_SHARED _XOPEN_REALTIME option... 20, 22
option... 10 _XOPEN_REALTIME_THREADS option...
_POSIX_THREAD_PROCESS_SHARED 20, 22
option... 19, 21, 76, 94 _XOPEN_SHM option... 20, 22
_POSIX_THREAD_SAFE_FUNCTIONS _XOPEN_STREAMS option... 20, 22, 53, 71,
option... 19, 21, 94 89, 108
_POSIX_THREAD_SPORADIC_SERVER _XOPEN_UNIX option... 20, 22
option... 19, 21, 39, 58, 76, 94
_POSIX_THREAD_STACK_ADDRESS
option... 119 A
_POSIX_THREAD_STACK_SIZE option...
119 a64l() function... 9
_POSIX_THREADS option... 10, 19, 21, 22, Abbreviations... 32
52, 69, 87, 106 abort() function... 8
_POSIX_TIMEOUTS option... 10 abs() function... 6
_POSIX_TIMEOUTS option... 19, 21, 39, 58, accept() function... 7
76, 94 access() function... 7
_POSIX_TIMERS option... 19, 21, 39, 58, 76, Accessibility subprogram... 13
94, 118 acos() function... 5
_POSIX_TRACE option... 19, 21, 58, 76, 94 acosf() function... 5
_POSIX_TRACE_EVENT_FILTER acosh () function... 5
option... 19, 21, 58, 76, 94 acosh f() function... 5
_POSIX_TRACE_INHERIT option... 19, 21 acosh l() function... 5
_POSIX_TRACE_LOG option... 19, 21, 58, acosl() function... 5
76, 94 Ada language option... 34, 40, 43, 59, 61, 71,
_POSIX_TYPED_MEMORY_OBJECTS 77, 79, 89, 95, 98, 108
option... 19, 21 Ada_Streams package... 10
_POSIX_VDISABLE option... 19, 21, 22, 94 Ada_Task_Identification package... 10
_POSIX_VERSION option... 43, 61, 79 Ada95 RM, defined... 32
_POSIX2_C_DEV option... 19, 21 Ada-Language option... 18, 34
_POSIX2_CHAR_TERM option... 19, 21 Add subprogram... 12, 122
_POSIX2_FORT_DEV option... 19, 21 Add_All_Signals subprogram... 15
_POSIX2_FORT_RUN option... 19, 21 Add_Signal subprogram... 15
_POSIX2_LOCALEDEF option... 19, 21 Advisory Information option... 101
_POSIX2_PBS option... 19, 21 AEP... 26, 32
_POSIX2_PBS_ACCOUNTING option... 19, aio_can cel() function... 111
21 aio_error() function... 111
_POSIX2_PBS_CHECKPOINT option... 19, aio_fsyn c() function... 111
21 aio_read () function... 111
_POSIX2_PBS_LOCATE option... 20, 21 aio_retu rn () function... 111
_POSIX2_PBS_MESSAGE option... 20, 21 aio_su spen d () function... 111
_POSIX2_PBS_TRACK option... 20, 21 aio_w rite() function... 111
_POSIX2_SW_DEV option... 20, 21 alarm () function... 8, 42, 51, 61, 68, 86, 105
_POSIX2_UPE option... 20, 21 alias utility... 119
_setjm p() function... 9 Application Conformance... 34
_tolow er() function... 9 Application Environment Profile... 26
_tou pper() function... 9 application environment profile... 26, 27, 32
_XOPEN_CRYPT option... 20, 22, 53, 71, 89, Application Platform... 26
108 ar utility... 119

Copyright © 2004 IEEE. All rights reserved.

126 Alph a bet ic Topica l In dex

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
POSIX REALTIME AND EMBEDDED APPLICATION SUPPORT IEEE Std 1003.13-2003

Argument_List subprogram... 16 btow c() function... 6


asa utility... 119 bzero() function... 118
asctim e() function... 6
asctim e_r() function... 6, 114
asin () function... 5 C
asin f() function... 5
asin h () function... 5 C Language Option... 98
asin h f() function... 5 C language option... 18, 20, 34, 38, 39, 40, 42,
asin h l() function... 5 56, 57, 58, 61, 71, 74, 75, 77, 79, 89, 92, 93,
asin l() function... 5 95, 97, 108
assert() function... 7 C99 Standard... 32, 53, 71, 89, 108
Asynchronous I/O option... 20, 77, 96, 120 c99 utility... 119
at utility... 119 cabs() function... 5
atan () function... 5 cabsf() function... 5
atan 2() function... 5 cabsl() function... 5
atan 2f() function... 5 cacos() function... 5
atan 2l() function... 5 cacosf() function... 5
atan f() function... 5 cacosh () function... 5
atan h () function... 5 cacosh f() function... 5
atan h f() function... 5 cacosh l() function... 5
atan h l() function... 5 cacosl() function... 5
atan l() function... 5 calloc() function... 6
atexit() function... 7 carg() function... 5
atof() function... 6 cargf() function... 5
atoi() function... 6 cargl() function... 5
atol() function... 6 casin () function... 5
atoll() function... 6 casin f() function... 5
Await_Signal subprogram... 15, 121 casin h () function... 5
Await_Signal_Or_Timeout casin h f() function... 5
subprogram... 15, 121 casin h l() function... 5
casin l() function... 5
catan () function... 5
B catan f() function... 5
catan h () function... 5
Base Standard... 26 catan h f() function... 5
base standard... 26 catan h l() function... 5
basen am e() function... 9 catan l() function... 5
batch utility... 119 catclose() function... 9
bcm p() function... 118 catgets() function... 9
bcopy() function... 118 catopen () function... 9
bg utility... 119 cbrt() function... 5
Bibliography... 123 cbrtf() function... 5
bin d () function... 7 cbrtl() function... 5
Bits_Per_Character_Of subprogram... ccos() function... 5
11 ccosf() function... 5
Block_Signals subprogram... 15 ccosh () function... 5
Blocked_Signals subprogram... 15 ccosh f() function... 5
Blocking_Behavior constant... 22 ccosh l() function... 5
Boolean type... 37, 38, 55, 56, 73, 74, 91, 92, ccosl() function... 5
109 ceil() function... 5
bsd _sign al() function... 9 ceilf() function... 5
bsearch () function... 6 ceill() function... 5

Copyright © 2004 IEEE. All rights reserved.

Alph a bet ic Topica l In dex 127

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
IEEE Std 1003.13-2003 STANDARDIZED APPLICATION ENVIRONMENT PROFILE (AEP)

cexp() function... 5 con jf() function... 5


cexpf() function... 5 con jl() function... 5
cexpl() function... 5 con n ect() function... 7
cfgetispeed () function... 7 constant
cfgetospeed () function... 7 Blocking_Behavior... 22
cfsetispeed () function... 7 False... 22
cfsetospeed () function... 7 False..False... 41, 59, 77, 96, 109
Change Owner Restriction option... 20, 96, File_Structure... 44, 62, 80
120 Group... 44
Change_Owner_And_Group subprogram... Operation_Not_Implemented...
12 22, 96
Change_Permissions subprogram... 12, Operation_Not_Supported... 42,
120 60, 78, 97
Change_Protection subprogram... 120 Other... 44
Change_Working_Directory Owner... 44
subprogram... 13 POSIX_Limits.Child_Processe
ch d ir() function... 7 s_Maxima'Last... 44, 62
CHILD_MAX option... 43, 61 POSIX_Limits.Groups_Maxima'
ch m od () function... 7 First... 22
ch ow n () function... 7 POSIX_Limits.Groups_Maxima’
cim ag() function... 5 First... 41, 60, 78
cim agf() function... 5 POSIX_Profiles.Realtime_AEP
cim agl() function... 5 _Version... 38, 55, 73, 91
Clear_Environment subprogram... 16 PTHREAD_SCOPE_PROCESS... 76, 95
clearerr() function... 6 PTHREAD_SCOPE_SYSTEM... 76, 85, 95,
Clock Selection option... 51, 68, 86, 105 103
clock () function... 7 Read_Write_Execute... 44
clock _getcpu clock id () function... 111 SCHED_FIFO... 40, 49, 50, 58, 67, 76, 85,
clock _getres() function... 116 95, 103
clock _gettim e() function... 42, 61, 116 SCHED_RR... 40, 50, 58, 67, 76, 85, 95,
clock _n an osleep() function... 111 103
clock _settim e() function... 116 True..True... 37, 38, 41, 45, 46, 55,
clog() function... 5 56, 59, 63, 73, 74, 77, 80, 81, 91,
clogf() function... 5 92, 96, 99, 109
clogl() function... 5 constant-width format... 31
Close subprogram... 11 Conventions... 31
close() function... xiv, 6 Copy_Environment subprogram... 16
closed ir() function... 7 Copy_From_Current_Environment
closelog() function... 9 subprogram... 16
command utility... 119 Copy_To_Current_Environment
Component Profile... 26 subprogram... 16
component profile... 26 copysign () function... 5
Conformance... 33 copysign f() function... 5
conformance document... 26, 28, 33 copysign l() function... 5
Conformant Application... 35 cos() function... 5
Conformant Application Using cosf() function... 5
Extensions... 35 cosh () function... 5
conforming application cosh f() function... 5
strictly... 33 cosh l() function... 5
conforming implementation... 33 cosl() function... 5
con fstr() function... 8 COTS... 32
con j() function... 5 cpow () function... 5

Copyright © 2004 IEEE. All rights reserved.

128 Alph a bet ic Topica l In dex

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
POSIX REALTIME AND EMBEDDED APPLICATION SUPPORT IEEE Std 1003.13-2003

cpow f() function... 5 Define_Bits_Per_Character


cpow l() function... 5 subprogram... 11
cproj() function... 5 Define_Input_Baud_Rate subprogram...
cprojf() function... 5 11
cprojl() function... 5 Define_Input_Time subprogram... 11
creal() function... 5 Define_Minimum_Input_Count
crealf() function... 5 subprogram... 11
creall() function... 5 Define_Output_Baud_Rate
creat() function... xv, 7 subprogram... 11
Create subprogram... 45 Define_Special_Control_Character
Create_Directory subprogram... 13 subprogram... 11
Create_FIFO subprogram... 12 Define_Terminal_Modes subprogram...
Create_Pipe subprogram... 14 11
Create_Process_Group subprogram... 13 Definitions... 26
Create_Session subprogram... 16 Delete subprogram... 45
crontab utility... 119 Delete_All_Signals subprogram... 15
crypt() function... 118 Delete_Environment_Variable
csin () function... 5 subprogram... 16
csin f() function... 5 Delete_Signal subprogram... 15
csin h () function... 5 Development Environment... 4
csin h f() function... 5 Development Platform... 26
csin h l() function... 5 development platform... 26
csin l() function... 5 df utility... 119
csplit utility... 119 d ifftim e() function... 6
csqrt() function... 5 d irn am e() function... 9
csqrtf() function... 5 Disable_Control_Character
csqrtl() function... 5 subprogram... 11
ctags utility... 119 Disable_Queueing subprogram... 121
ctan () function... 5 Discard_Data subprogram... 11
ctan f() function... 5 d iv() function... 6
ctan h () function... 5 d lclose() function... 9
ctan h f() function... 5 d lerror() function... 9
ctan h l() function... 5 d lopen () function... 9
ctan l() function... 5 d lsym () function... 9
cterm id () function... 7 documentation... 33
ctim e() function... 6 Drain subprogram... 11
ctim e_r() function... 6, 114 d ran d 48() function... 9
du utility... 119
d u p() function... 7
D d u p2() function... 7
Duplicate subprogram... 12
d ayligh t() variable... 9 Duplicate_And_Close subprogram... 12
d bm _clearerr() function... 9
d bm _close() function... 9
d bm _d elete() function... 9 E
d bm _error() function... 9
d bm _fetch () function... 9 ecvt() function... 118
d bm _firstk ey() function... 9 Embedded Computer System... 27
d bm _n extk ey() function... 9 Enable_Queueing subprogram... 121
d bm _open () function... 9 en crypt() function... 118
d bm _store() function... 9 en d gren t() function... 10
Dedicated Realtime System Profile... 3, 73 en d h osten t() function... 7

Copyright © 2004 IEEE. All rights reserved.

Alph a bet ic Topica l In dex 129

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
IEEE Std 1003.13-2003 STANDARDIZED APPLICATION ENVIRONMENT PROFILE (AEP)

en d n eten t() function... 7 fch d ir() function... 9


en d protoen t() function... 7 fch m od () function... 7
en d pw en t() function... 9 fch ow n () function... 7
en d serven t() function... 7 fclose() function... 6, 43
en d u txen t() function... 10 fcn tl() function... 7
en viron () variable... 8 fcvt() function... 118
environment FD_CL R () function... 7
open system... 27 FD_IS S E T () function... 7
environment, open system... 32 FD_S E T () function... 7
Environment_Value_Of subprogram... 16 FD_Z E R O() function... 7
eran d 48() function... 9 fd atasyn c() function... 113
erf() function... 5 fd etach () function... 118
erfc() function... 5 fd im () function... 5
erfcf() function... 5 fd im f() function... 5
erfcl() function... 5 fd im l() function... 5
erff() function... 5 fd open () function... 6
erfl() function... 5 feature test macro
errn o() variable... 8 _POSIX_AEP_RT_CONTROLLER_C_
ex utility... 119 SOURCE... 56
exception _POSIX_AEP_RT_DEDICATED_C_SO
POSIX_Error... 22, 42, 60, 78, 96, 97 URCE... 74
Use_Error... 44, 62, 80 _POSIX_AEP_RT_MINIMAL_C_SOU
execl() function... 7 RCE... 38
execle() function... 7 _POSIX_AEP_RT_MULTI_C_SOURC
execlp() function... 7 E... 92
execv() function... 7 feclearexcept() function... 6
execve() function... 7 fegeten v() function... 6
execvp() function... 7 fegetexceptflag() function... 6
Existence subprogram... 13 fegetrou n d () function... 6
exit() function... 7 feh old except() function... 6
exp() function... 5 feof() function... 6
exp2() function... 5 feraiseexcept() function... 6
exp2f() function... 5 ferror() function... 6
exp2l() function... 5 feseten v() function... 6
expand utility... 119 fesetexceptflag() function... 6
expf() function... 5 fesetrou n d () function... 6
expl() function... 5 fetestexcept() function... 6
expm 1() function... 5 feu pd ateen v() function... 6
expm 1f() function... 5 fflu sh () function... 6, 43
expm 1l() function... 5 ffs() function... 9
fg utility... 119
fgetc() function... 6, 43
F fgetpos() function... 7
fgets() function... 6, 43
fabs() function... 5 fgetw c() function... 9
fabsf() function... 5 fgetw s() function... 9
fabsl() function... 5 FIL E * type... 48, 65, 83, 101
False constant... 22 File Locking... 83
False..False constant... 41, 59, 77, 96, File Locking option... 48, 65, 83, 101
109 File Synchronization option... 48, 65, 83
fattach () function... 118 File Synchronization option... 20, 41, 59, 77,
fc utility... 119 96, 120

Copyright © 2004 IEEE. All rights reserved.

130 Alph a bet ic Topica l In dex

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
POSIX REALTIME AND EMBEDDED APPLICATION SUPPORT IEEE Std 1003.13-2003

file utility... 119 freead d rin fo() function... 7


File_Position subprogram... 12 freopen () function... 6, 43
File_Size subprogram... 12 frexp() function... 5
File_Structure constant... 44, 62, 80 frexpf() function... 5
Filename Truncation option... 41, 59, 77, 96 frexpl() function... 5
Filename Truncation option... 21, 22, 41, 59, fscan f() function... 6, 43
78, 96, 120 fsck utility... xvi
Filename_Of subprogram... 13 fseek () function... 7
filen o() function... 6 fseek o() function... 7
flock file() function... 7, 114 fsetpos() function... 7
floor() function... 5 fstat() function... 7
floorf() function... 5 fstatvfs() function... 9
floorl() function... 5 fsyn c() function... 111
Flow subprogram... 11 ftell() function... 7
fm a() function... 5 ftello() function... 7
fm af() function... 5 ftim e() function... 118
fm al() function... 5 ftok () function... 9
fm ax() function... 5 ftru n cate() function... 7
fm axf() function... 5 ftrylock file() function... 7, 114
fm axl() function... 5 ftw () function... 9
fm in () function... 5 function
fm in f() function... 5 _E xit()... 7
fm in l() function... 5 _exit()... 7
fm od () function... 5 _lon gjm p()... 9
fm od f() function... 5 _setjm p()... 9
fm od l() function... 5 _tolow er()... 9
fm tm sg() function... 9 _tou pper()... 9
fn m atch () function... 8 a64l()... 9
fopen () function... 6, 43 abort()... 8
For_Every_Current_Environment_Var abs()... 6
iable subprogram... 16 accept()... 7
For_Every_Directory_Entry access()... 7
subprogram... 13 acos()... 5
For_Every_Environment_Variable acosf()... 5
subprogram... 16 acosh ()... 5
For_Every_File_In subprogram... 12 acosh f()... 5
For_Every_Item subprogram... 121, 122 acosh l()... 5
fork () function... 7 acosl()... 5
format aio_can cel()... 111
_POSIX_AEP_REALTIME_... 31 aio_error()... 111
constant-width... 31 aio_fsyn c()... 111
form at function family... 31 aio_read ()... 111
fort77 utility... 119 aio_retu rn ()... 111
fpath con f() function... 7 aio_su spen d ()... 111
fpclassify() function... 5 aio_w rite()... 111
fprin tf() function... 6, 43 alarm ()... 8, 42, 51, 61, 68, 86, 105
fpu tc() function... 6, 43 asctim e()... 6
fpu ts() function... 6, 43 asctim e_r()... 6, 114
fpu tw c() function... 9 asin ()... 5
fpu tw s() function... 9 asin f()... 5
fread () function... 6, 43 asin h ()... 5
free() function... 6 asin h f()... 5

Copyright © 2004 IEEE. All rights reserved.

Alph a bet ic Topica l In dex 131

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
IEEE Std 1003.13-2003 STANDARDIZED APPLICATION ENVIRONMENT PROFILE (AEP)

asin h l()... 5 catopen ()... 9


asin l()... 5 cbrt()... 5
assert()... 7 cbrtf()... 5
atan ()... 5 cbrtl()... 5
atan 2()... 5 ccos()... 5
atan 2f()... 5 ccosf()... 5
atan 2l()... 5 ccosh ()... 5
atan f()... 5 ccosh f()... 5
atan h ()... 5 ccosh l()... 5
atan h f()... 5 ccosl()... 5
atan h l()... 5 ceil()... 5
atan l()... 5 ceilf()... 5
atexit()... 7 ceill()... 5
atof()... 6 cexp()... 5
atoi()... 6 cexpf()... 5
atol()... 6 cexpl()... 5
atoll()... 6 cfgetispeed ()... 7
basen am e()... 9 cfgetospeed ()... 7
bcm p()... 118 cfsetispeed ()... 7
bcopy()... 118 cfsetospeed ()... 7
bin d ()... 7 ch d ir()... 7
bsd _sign al()... 9 ch m od ()... 7
bsearch ()... 6 ch ow n ()... 7
btow c()... 6 cim ag()... 5
bzero()... 118 cim agf()... 5
cabs()... 5 cim agl()... 5
cabsf()... 5 clearerr()... 6
cabsl()... 5 clock ()... 7
cacos()... 5 clock _getcpu clock id ()... 111
cacosf()... 5 clock _getres()... 116
cacosh ()... 5 clock _gettim e()... 42, 61, 116
cacosh f()... 5 clock _n an osleep()... 111
cacosh l()... 5 clock _settim e()... 116
cacosl()... 5 clog()... 5
calloc()... 6 clogf()... 5
carg()... 5 clogl()... 5
cargf()... 5 close()... xiv, 6
cargl()... 5 closed ir()... 7
casin ()... 5 closelog()... 9
casin f()... 5 con fstr()... 8
casin h ()... 5 con j()... 5
casin h f()... 5 con jf()... 5
casin h l()... 5 con jl()... 5
casin l()... 5 con n ect()... 7
catan ()... 5 copysign ()... 5
catan f()... 5 copysign f()... 5
catan h ()... 5 copysign l()... 5
catan h f()... 5 cos()... 5
catan h l()... 5 cosf()... 5
catan l()... 5 cosh ()... 5
catclose()... 9 cosh f()... 5
catgets()... 9 cosh l()... 5

Copyright © 2004 IEEE. All rights reserved.

132 Alph a bet ic Topica l In dex

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
POSIX REALTIME AND EMBEDDED APPLICATION SUPPORT IEEE Std 1003.13-2003

cosl()... 5 en d h osten t()... 7


cpow ()... 5 en d n eten t()... 7
cpow f()... 5 en d protoen t()... 7
cpow l()... 5 en d pw en t()... 9
cproj()... 5 en d serven t()... 7
cprojf()... 5 en d u txen t()... 10
cprojl()... 5 eran d 48()... 9
creal()... 5 erf()... 5
crealf()... 5 erfc()... 5
creall()... 5 erfcf()... 5
creat()... xv, 7 erfcl()... 5
crypt()... 118 erff()... 5
csin ()... 5 erfl()... 5
csin f()... 5 execl()... 7
csin h ()... 5 execle()... 7
csin h f()... 5 execlp()... 7
csin h l()... 5 execv()... 7
csin l()... 5 execve()... 7
csqrt()... 5 execvp()... 7
csqrtf()... 5 exit()... 7
csqrtl()... 5 exp()... 5
ctan ()... 5 exp2()... 5
ctan f()... 5 exp2f()... 5
ctan h ()... 5 exp2l()... 5
ctan h f()... 5 expf()... 5
ctan h l()... 5 expl()... 5
ctan l()... 5 expm 1()... 5
cterm id ()... 7 expm 1f()... 5
ctim e()... 6 expm 1l()... 5
ctim e_r()... 6, 114 fabs()... 5
d bm _clearerr()... 9 fabsf()... 5
d bm _close()... 9 fabsl()... 5
d bm _d elete()... 9 fattach ()... 118
d bm _error()... 9 fch d ir()... 9
d bm _fetch ()... 9 fch m od ()... 7
d bm _firstk ey()... 9 fch ow n ()... 7
d bm _n extk ey()... 9 fclose()... 6, 43
d bm _open ()... 9 fcn tl()... 7
d bm _store()... 9 fcvt()... 118
d ifftim e()... 6 FD_CL R ()... 7
d irn am e()... 9 FD_IS S E T ()... 7
d iv()... 6 FD_S E T ()... 7
d lclose()... 9 FD_Z E R O()... 7
d lerror()... 9 fd atasyn c()... 113
d lopen ()... 9 fd etach ()... 118
d lsym ()... 9 fd im ()... 5
d ran d 48()... 9 fd im f()... 5
d u p()... 7 fd im l()... 5
d u p2()... 7 fd open ()... 6
ecvt()... 118 feclearexcept()... 6
en crypt()... 118 fegeten v()... 6
en d gren t()... 10 fegetexceptflag()... 6

Copyright © 2004 IEEE. All rights reserved.

Alph a bet ic Topica l In dex 133

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
IEEE Std 1003.13-2003 STANDARDIZED APPLICATION ENVIRONMENT PROFILE (AEP)

fegetrou n d ()... 6 fscan f()... 6, 43


feh old except()... 6 fseek ()... 7
feof()... 6 fseek o()... 7
feraiseexcept()... 6 fsetpos()... 7
ferror()... 6 fstat()... 7
feseten v()... 6 fstatvfs()... 9
fesetexceptflag()... 6 fsyn c()... 111
fesetrou n d ()... 6 ftell()... 7
fetestexcept()... 6 ftello()... 7
feu pd ateen v()... 6 ftim e()... 118
fflu sh ()... 6, 43 ftok ()... 9
ffs()... 9 ftru n cate()... 7
fgetc()... 6, 43 ftrylock file()... 7, 114
fgetpos()... 7 ftw ()... 9
fgets()... 6, 43 fu n lock file()... 7, 114
fgetw c()... 9 fw id e()... 9
fgetw s()... 9 fw prin tf()... 9
filen o()... 6 fw rite()... 6, 43
flock file()... 7, 114 fw scan f()... 9
floor()... 5 gai_strerror()... 7
floorf()... 5 gcvt()... 118
floorl()... 5 getad d rin fo()... 7
fm a()... 5 getc()... 6, 43
fm af()... 5 getc_u n lock ed ()... 7, 114
fm al()... 5 getch ar()... 6, 43
fm ax()... 5 getch ar_u n lock ed ()... 7, 114
fm axf()... 5 getcon text()... 9
fm axl()... 5 getcw d ()... 7
fm in ()... 5 getd ate()... 9
fm in f()... 5 getegid ()... 9
fm in l()... 5 geten v()... 8
fm od ()... 5 geteu id ()... 9
fm od f()... 5 getgid ()... 9
fm od l()... 5 getgren t()... 10
fm tm sg()... 9 getgrgid ()... 8
fn m atch ()... 8 getgrgid _r()... 8, 114
fopen ()... 6, 43 getgrn am ()... 8
fork ()... 7 getgrn am _r()... 8, 114
fpath con f()... 7 getgrou ps()... 9
fpclassify()... 5 geth ostbyad d r()... 7
fprin tf()... 6, 43 geth ostbyn am e()... 7
fpu tc()... 6, 43 geth osten t()... 7
fpu ts()... 6, 43 geth ostid ()... 9
fpu tw c()... 9 geth ostn am e()... 7
fpu tw s()... 9 getitim er()... 10
fread ()... 6, 43 getlogin ()... 9
free()... 6 getlogin _r()... 9, 114
freead d rin fo()... 7 getm sg()... 118
freopen ()... 6, 43 getn am ein fo()... 7
frexp()... 5 getn etbyad d r()... 7
frexpf()... 5 getn etbyn am e()... 7
frexpl()... 5 getn eten t()... 7

Copyright © 2004 IEEE. All rights reserved.

134 Alph a bet ic Topica l In dex

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
POSIX REALTIME AND EMBEDDED APPLICATION SUPPORT IEEE Std 1003.13-2003

getopt()... 8 if_n am ein d ex()... 7


getpeern am e()... 7 if_n am etoin d ex()... 7
getpgid ()... 9 ilogb()... 5
getpgrp()... 7 ilogbf()... 5
getpid ()... 7 ilogbl()... 5
getpm sg()... 118 im axabs()... 6
getppid ()... 7 im axd iv()... 6
getpriority()... 9 in d ex()... 118
getprotobyn am e()... 7 in et_ad d r()... 7
getprotobyn u m ber()... 7 in et_n toa()... 7
getprotoen t()... 7 in et_n top()... 7
getpw en t()... 9 in et_pton ()... 7
getpw n am ()... 8 in itstate()... 9
getpw n am _r()... 8, 114 in squ e()... 9
getpw u id ()... 8 ioctl()... xiv, 118
getpw u id _r()... 8, 114 isaln u m ()... 6
getrlim it()... 9 isalph a()... 6
getru sage()... 9 isascii()... 9
gets()... 6, 43 isastream ()... 118
getservbyn am e()... 7 isatty()... 7
getservbyport()... 7 isblan k ()... 6
getserven t()... 7 iscn trl()... 6
getsid ()... 9 isd igit()... 6
getsock n am e()... 7 isfin ite()... 5
getsock opt()... 7 isgraph ()... 6
getsu bopt()... 9 isgreater()... 5
gettim eofd ay()... 9 isgreaterequ al()... 5
getu id ()... 9 isin f()... 5
getu txen t()... 10 isless()... 5
getu txid ()... 10 islessequ al()... 5
getu txlin e()... 10 islessgreater()... 5
getw c()... 9 islow er()... 6
getw ch ar()... 9 isn an ()... 5
getw d ()... 118 isn orm al()... 5
glob()... 7 isprin t()... 6
globfree()... 7 ispu n ct()... 6
gm tim e()... 6 isspace()... 6
gm tim e_r()... 6, 114 isu n ord ered ()... 5
gran tpt()... 9 isu pper()... 6
h create()... 9 isw aln u m ()... 6
h d estroy()... 9 isw alph a()... 6
h search ()... 9 isw blan k ()... 6
h ton l()... 7 isw cn trl()... 6
h ton s()... 7 isw ctype()... 6
h ypot()... 5 isw d igit()... 6
h ypotf()... 5 isw graph ()... 6
h ypotl()... 5 isw low er()... 6
icon v()... 9 isw prin t()... 6
icon v_close()... 9 isw pu n ct()... 6
icon v_open ()... 9 isw space()... 6
if_freen am ein d ex()... 7 isw u pper()... 6
if_in d exton am e()... 7 isw xd igit()... 6

Copyright © 2004 IEEE. All rights reserved.

Alph a bet ic Topica l In dex 135

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
IEEE Std 1003.13-2003 STANDARDIZED APPLICATION ENVIRONMENT PROFILE (AEP)

isxd igit()... 6 lrin tf()... 5


j0()... 9 lrin tl()... 5
j1()... 9 lrou n d ()... 5
jn ()... 9 lrou n d f()... 5
jran d 48()... 9 lrou n d l()... 5
k ill()... 8, 42, 43, 61, 79 lsearch ()... 9
k illpg()... 9 lseek ()... 7
l64a()... 9 lstat()... 8
labs()... 6 m ain ()... 47, 64
lch ow n ()... 9 m ak econ text()... 9
lcon g48()... 9 m alloc()... 6
ld exp()... 5 m blen ()... 6
ld expf()... 5 m brlen ()... 6
ld expl()... 5 m brtow c()... 6
ld iv()... 6 m bsin it()... 6
lfin d ()... 9 m bsrtow cs()... 6
lgam m a()... 5 m bstow cs()... 6
lgam m af()... 5 m btow c()... 6
lgam m al()... 5 m em ccpy()... 9
lin k ()... xv, 7 m em ch r()... 6
lio_listio()... 111 m em cm p()... 6
listen ()... 7 m em cpy()... 6
llabs()... 6 m em m ove()... 6
lld iv()... 6 m em set()... 6
llrin t()... 5 m k d ir()... xv, 7
llrin tf()... 5 m k fifo()... 7
llrin tl()... 5 m k n od ()... 9, 58, 77, 95
llrou n d ()... 5 m k stem p()... 9
llrou n d f()... 5 m k tem p()... 118
llrou n d l()... 5 m k tim e()... 6
localecon v()... 6 m lock ()... 112
localtim e()... 6 m lock all()... 112
localtim e_r()... 6, 114 m m ap()... 112, 113, 118
lock f()... 9 m od f()... 5
log()... 5 m od ff()... 5
log10()... 5 m od fl()... 5
log10f()... 5 m protect()... 112
log10l()... 5 m q_close()... 112
log1p()... 5 m q_getattr()... 112
log1pf()... 5 m q_n otify()... 112
log1pl()... 5 m q_open ()... 112
log2()... 5 m q_receive()... 112
log2f()... 5 m q_sen d ()... 112
log2l()... 5 m q_setattr()... 112
logb()... 5 m q_tim ed receive()... 112, 116
logbf()... 5 m q_tim ed sen d ()... 112, 116
logbl()... 5 m q_u n lin k ()... 112
logf()... 5 m ran d 48()... 9
logl()... 5 m sgctl()... 9
lon gjm p()... 5 m sgget()... 9
lran d 48()... 9 m sgrcv()... 9
lrin t()... 5 m sgsn d ()... 9

Copyright © 2004 IEEE. All rights reserved.

136 Alph a bet ic Topica l In dex

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
POSIX REALTIME AND EMBEDDED APPLICATION SUPPORT IEEE Std 1003.13-2003

m syn c()... 112, 113 posix_spaw n attr_getpgrou p()... 113


m u n lock ()... 112 posix_spaw n attr_getsch ed param ()...
m u n lock all()... 112 112, 113
m u n m ap()... 112, 113, 118 posix_spaw n attr_getsch ed policy()... 112,
n an ()... 5 113
n an f()... 5 posix_spaw n attr_getsigd efau lt()... 113
n an l()... 5 posix_spaw n attr_getsigm ask ()... 113
n an osleep()... 116 posix_spaw n attr_in it()... 113
n earbyin t()... 5 posix_spaw n attr_setflags()... 113
n earbyin tf()... 5 posix_spaw n attr_setpgrou p()... 113
n earbyin tl()... 5 posix_spaw n attr_setsch ed param ()...
n extafter()... 5 112, 113
n extafterf()... 5 posix_spaw n attr_setsch ed policy()... 112,
n extafterl()... 5 113
n exttow ard ()... 5 posix_spaw n attr_setsigd efau lt()... 113
n exttow ard f()... 5 posix_spaw n attr_setsigm ask ()... 113
n exttow ard l()... 5 posix_spaw n p()... 113
n ftw ()... 9 posix_trace_attr_d estroy()... 117
n ice()... 9 posix_trace_attr_getclock res()... 117
n l_lan gin fo()... 9 posix_trace_attr_getcreatetim e()... 117
n ran d 48()... 9 posix_trace_attr_getgen version ()... 117
n toh l()... 7 posix_trace_attr_getin h erited ()... 117
n toh s()... 7 posix_trace_attr_getlogfu llpolicy()... 117
open ()... xiv, 6, 40, 43, 47 posix_trace_attr_getlogsize()... 117
open d ir()... 7 posix_trace_attr_getm axd atasize()... 117
open log()... 9 posix_trace_attr_getm axsystem even tsiz
path con f()... 7 e()... 117
pau se()... 8 posix_trace_attr_getm axu sereven tsize().
pclose()... 8 .. 117
perror()... 6, 43 posix_trace_attr_getn am e()... 117
pipe()... 7 posix_trace_attr_getstream fu llpolicy()...
poll()... 9 117
popen ()... 8 posix_trace_attr_getstream size()... 117
posix_d evctl()... xiv, 48, 65, 83, 101 posix_trace_attr_in it()... 117
posix_fad vise()... 111 posix_trace_attr_setin h erited ()... 117
posix_fallocate()... 111 posix_trace_attr_setlogfu llpolicy()... 117
posix_m ad vise()... 111, 112, 113 posix_trace_attr_setlogsize()... 117
posix_m em _offset()... 118 posix_trace_attr_setm axd atasize()... 117
posix_m em align ()... 111 posix_trace_attr_setn am e()... 117
posix_open pt()... 9 posix_trace_attr_setstream fu llpolicy()...
posix_spaw n ()... 113 117
posix_spaw n _file_action s_ad d close()... posix_trace_attr_setstream size()... 117
113 posix_trace_clear()... 117
posix_spaw n _file_action s_ad d d u p2()... posix_trace_close()... 117
113 posix_trace_create()... 117
posix_spaw n _file_action s_ad d open ()... posix_trace_create_w ith log()... 117
113 posix_trace_even t()... 117
posix_spaw n _file_action s_d estroy()... posix_trace_even tid _equ al()... 117
113 posix_trace_even tid _get_n am e()... 117
posix_spaw n _file_action s_in it()... 113 posix_trace_even tid _open ()... 117
posix_spaw n attr_d estroy()... 113 posix_trace_even tset_ad d ()... 117
posix_spaw n attr_getflags()... 113 posix_trace_even tset_d el()... 117

Copyright © 2004 IEEE. All rights reserved.

Alph a bet ic Topica l In dex 137

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
IEEE Std 1003.13-2003 STANDARDIZED APPLICATION ENVIRONMENT PROFILE (AEP)

posix_trace_even tset_em pty()... 117 115


posix_trace_even tset_fill()... 117 pth read _attr_setstack ad d r()... 113, 115
posix_trace_even tset_ism em ber()... 117 pth read _attr_setstack size()... 114, 115,
posix_trace_even ttypelist_getn ext_id ()... 119
117 pth read _barrier_d estroy()... 111, 115
posix_trace_even ttypelist_rew in d ()... 117 pth read _barrier_in it()... 111, 115
posix_trace_flu sh ()... 117 pth read _barrier_w ait()... 111, 115
posix_trace_get_attr()... 117 pth read _barrierattr_d estroy()... 111, 115
posix_trace_get_filter()... 117 pth read _barrierattr_getpsh ared ()... 111,
posix_trace_get_statu s()... 117 114, 115
posix_trace_getn ext_even t()... 117 pth read _barrierattr_in it()... 111, 115
posix_trace_open ()... 117 pth read _barrierattr_setpsh ared ()... 111,
posix_trace_rew in d ()... 117 114, 115
posix_trace_set_filter()... 117 pth read _can cel()... 8, 115
posix_trace_sh u td ow n ()... 117 pth read _clean u p_pop()... 8, 115
posix_trace_start()... 117 pth read _clean u p_pu sh ()... 8, 115
posix_trace_stop()... 117 pth read _con d _broad cast()... 8, 115
posix_trace_tim ed getn ext_even t()... 116, pth read _con d _d estroy()... 8, 115
117 pth read _con d _in it()... 8, 115
posix_trace_trid _even tid _open ()... 117 pth read _con d _sign al()... 8, 115
posix_trace_trygetn ext_even t()... 117 pth read _con d _tim ed w ait()... 8, 115
posix_typed _m em _get_in fo()... 118 pth read _con d _w ait()... 8, 115
posix_typed _m em _open ()... 118 pth read _con d attr_d estroy()... 8, 115
pow ()... 5 pth read _con d attr_getclock ()... 111, 115
pow f()... 5 pth read _con d attr_getpsh ared ()... 114,
pow l()... 5 116
pread ()... 9 pth read _con d attr_in it()... 8, 115
prin tf()... 6, 43 pth read _con d attr_setclock ()... 111, 115
pselect()... 7 pth read _con d attr_setpsh ared ()... 114,
pth read _atfork ()... 8, 115 116
pth read _attr_d estroy()... 8, 115 pth read _create()... 8, 115
pth read _attr_getd etach state()... 8, 115 pth read _d etach ()... 8, 115
pth read _attr_getgu ard size()... 10 pth read _equ al()... 8, 115
pth read _attr_getin h eritsch ed ()... 114, pth read _exit()... 8, 115
116 pth read _getcon cu rren cy()... 10
pth read _attr_getsch ed param ()... 8, 115 pth read _getcpu clock id ()... 114, 115
pth read _attr_getsch ed policy()... 114, 116 pth read _getsch ed param ()... 114, 116
pth read _attr_getscope()... 114, 116 pth read _getspecific()... 8, 115
pth read _attr_getstack ()... 10, 113, 114, pth read _join ()... 8, 115
115 pth read _k ey_create()... 8, 115
pth read _attr_getstack ad d r()... 113, 115 pth read _k ey_d elete()... 8, 115
pth read _attr_getstack size()... 114, 115, pth read _k ill()... 8, 115
119 pth read _m u tex_d estroy()... 8, 115
pth read _attr_in it()... 8, 115 pth read _m u tex_getprioceilin g()... 114,
pth read _attr_setd etach state()... 8, 115 116
pth read _attr_setgu ard size()... 10 pth read _m u tex_in it()... 8, 115
pth read _attr_setin h eritsch ed ()... 114, pth read _m u tex_lock ()... 8, 115
116 pth read _m u tex_setprioceilin g()... 114,
pth read _attr_setsch ed param ()... 8, 115 116
pth read _attr_setsch ed policy()... 114, 116 pth read _m u tex_tim ed lock ()... 116
pth read _attr_setscope()... 114, 116 pth read _m u tex_trylock ()... 8, 115
pth read _attr_setstack ()... 10, 113, 114, pth read _m u tex_u n lock ()... 8, 115

Copyright © 2004 IEEE. All rights reserved.

138 Alph a bet ic Topica l In dex

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
POSIX REALTIME AND EMBEDDED APPLICATION SUPPORT IEEE Std 1003.13-2003

pth read _m u texattr_d estroy()... 8, 115 pu tm sg()... 118


pth read _m u texattr_getprioceilin g()... pu tpm sg()... 118
114, 116 pu ts()... 6, 43
pth read _m u texattr_getprotocol()... 114, pu tu txlin e()... 10
116 pu tw c()... 9
pth read _m u texattr_getpsh ared ()... 114, pu tw ch ar()... 9
116 pw rite()... 9
pth read _m u texattr_gettype()... 10 qsort()... 6
pth read _m u texattr_in it()... 8, 115 raise()... 8, 42, 61
pth read _m u texattr_setprioceilin g()... ran d ()... 6
114, 116 ran d _r()... 6, 114
pth read _m u texattr_setprotocol()... 114, ran d om ()... 9
116 read ()... xiv, xv, 6, 43
pth read _m u texattr_setpsh ared ()... 114, read d ir()... 7
116 read d ir_r()... 7, 114
pth read _m u texattr_settype()... 10 read lin k ()... 8
pth read _on ce()... 8, 115 read v()... 9
pth read _rw lock _d estroy()... 8, 115 realloc()... 6
pth read _rw lock _in it()... 8, 115 realpath ()... 9
pth read _rw lock _rd lock ()... 8, 115 recv()... 7
pth read _rw lock _tim ed rd lock ()... 8, 116 recvfrom ()... 7
pth read _rw lock _tim ed w rlock ()... 8, 116 recvm sg()... 7
pth read _rw lock _tryrd lock ()... 8, 115 regcom p()... 7
pth read _rw lock _tryw rlock ()... 8, 115 regerror()... 7
pth read _rw lock _u n lock ()... 8, 115 regexec()... 7
pth read _rw lock _w rlock ()... 8, 115 regfree()... 7
pth read _rw lock attr_d estroy()... 8, 115 rem ain d er()... 5
pth read _rw lock attr_getpsh ared ()... 8, rem ain d erf()... 5
114, 116 rem ain d erl()... 5
pth read _rw lock attr_in it()... 8, 115 rem ove()... 7
pth read _rw lock attr_setpsh ared ()... 8, rem qu e()... 9
114, 116 rem qu o()... 5
pth read _self()... 8, 115 rem qu of()... 5
pth read _setcalcelstate()... 8, 115 rem qu ol()... 5
pth read _setcan celtype()... 8, 115 ren am e()... xv, 7
pth read _setcon cu rren cy()... 10 rew in d ()... 7
pth read _setsch ed param ()... 114, 116 rew in d d ir()... 7
pth read _setsch ed prio()... 114, 116 rin d ex()... 118
pth read _setspecific()... 8, 115 rin t()... 5
pth read _sigm ask ()... 8, 115 rin tf()... 5
pth read _spin _d estroy()... 113, 115 rin tl()... 5
pth read _spin _in it()... 113, 115 rm d ir()... xv, 7
pth read _spin _lock ()... 113, 115 rou n d ()... 5
pth read _spin _trylock ()... 113, 115 rou n d f()... 5
pth read _spin _u n lock ()... 113, 115 rou n d l()... 5
pth read _testcan cel()... 8, 115 scalb()... 9
ptsn am e()... 9 scalbln ()... 5
pu tc()... 6, 43 scalbln f()... 5
pu tc_u n lock ed ()... 7, 114 scalbln l()... 5
pu tch ar()... 6, 43 scalbn ()... 5
pu tch ar_u n lock ed ()... 7, 114 scalbn f()... 5
pu ten v()... 9 scalbn l()... 5

Copyright © 2004 IEEE. All rights reserved.

Alph a bet ic Topica l In dex 139

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
IEEE Std 1003.13-2003 STANDARDIZED APPLICATION ENVIRONMENT PROFILE (AEP)

scan f()... 6, 43 setsock opt()... 7


sch ed _get_priority_m ax()... 112, 114, 116 setstate()... 9
sch ed _get_priority_m in ()... 112, 114, 116 setu id ()... 9
sch ed _getparam ()... 112 setu txen t()... 10
sch ed _getsch ed u ler()... 112 setvbu f()... 6
sch ed _rr_get_in terval()... 112, 114, 116 sh m _open ()... 113
sch ed _setparam ()... 112 sh m _u n lin k ()... 113
sch ed _setsch ed u ler()... 112 sh m at()... 9
sch ed _yield ()... 112, 116 sh m ctl()... 9
seed 48()... 9 sh m d t()... 9
seek d ir()... 9 sh m get()... 9
select()... 7, 52, 70, 88, 107 sh u td ow n ()... 7
sem _close()... 113 sigaction ()... 8, 42, 61
sem _d estroy()... 113 sigad d set()... 8, 42, 61
sem _getvalu e()... 113 sigaltstack ()... 9
sem _in it()... 113 sigd elset()... 8, 61
sem _open ()... 113 sigem ptyset()... 8, 42, 61
sem _post()... 42, 61, 113 sigfillset()... 8, 42, 61
sem _tim ed w ait()... 113, 116 sigh old ()... 9
sem _tryw ait()... 113 sigign ore()... 9
sem _u n lin k ()... 113 sigin terru pt()... 9
sem _w ait()... 113 sigism em ber()... 8, 42, 61
sem ctl()... 9 siglon gjm p()... 8
sem get()... 9 sign al()... 8, 42, 61
sem op()... 9 sign bit()... 5
sen d ()... 7 sigpau se()... 9
sen d m sg()... 7 sigpen d in g()... 8, 42, 61
sen d to()... 7 sigprocm ask ()... 8, 42, 61
setbu f()... 6 sigqu eu e()... 42, 61, 112
setcon text()... 9 sigrelse()... 9
setegid ()... 9 sigset()... 42, 61
seten v()... 8 sigsetjm p()... 8
seteu id ()... 9 sigsu spen d ()... 8
setgid ()... 9 sigtim ed w ait()... 112
setgren t()... 10 sigw ait()... 8
seth osten t()... 7 sigw aitin fo()... 112
setitim er()... 10 sin ()... 5
setjm p()... 5 sin f()... 5
setk ey()... 118 sin h ()... 5
setlocale()... 6 sin h f()... 5
setlogm ask ()... 9 sin h l()... 5
setn eten t()... 7 sin l()... 5
setpgid ()... 7 sleep()... 7, 51, 68, 86, 105
setpgrp()... 9 sn prin tf()... 6
setpriority()... 9 sock atm ark ()... 7
setprotoen t()... 7 sock et()... 7
setpw en t()... 9 sock etpair()... 7
setregid ()... 10 sprin tf()... 6
setreu id ()... 10 sqrt()... 5
setrlim it()... 9 sqrtf()... 5
setserven t()... 7 sqrtl()... 5
setsid ()... 7 sran d ()... 6

Copyright © 2004 IEEE. All rights reserved.

140 Alph a bet ic Topica l In dex

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
POSIX REALTIME AND EMBEDDED APPLICATION SUPPORT IEEE Std 1003.13-2003

sran d 48()... 9 tan h l()... 5


sran d om ()... 9 tan l()... 5
sscan f()... 6 tcd rain ()... 7
stat()... 7 tcflow ()... 7
statvfs()... 9 tcflu sh ()... 7
strcasecm p()... 9 tcgetattr()... 7
strcat()... 6 tcgetpgrp()... 7
strch r()... 6 tcgetsid ()... 9
strcm p()... 6 tcsen d break ()... 7
strcoll()... 6 tcsetattr()... 7
strcpy()... 6 tcsetpgrp()... 7
strcspn ()... 6 td elete()... 9
strd u p()... 9 telld ir()... 9
strerror()... 6 tem pn am ()... 9
strerror_r()... 6, 114 tfin d ()... 9
strfm on ()... 9 tgam m a()... 5
strftim e()... 6 tgam m af()... 5
strlen ()... 6 tgam m al()... 5
strn casecm p()... 9 tim e()... 6, 42, 61
strn cat()... 6 tim er_create()... 116
strn cm p()... 6 tim er_d etele()... 116
strn cpy()... 6 tim er_getoverru n ()... 42, 61, 116
strpbrk ()... 6 tim er_gettim e()... 42, 61, 116
strptim e()... 9 tim er_settim e()... 42, 61, 116
strrch r()... 6 tim es()... 7, 42, 61
strspn ()... 6 tm pfile()... 7
strstr()... 6 tm pn am ()... 7
strtod ()... 6 toascii()... 9
strtof()... 6 tolow er()... 6
strtoim ax()... 6 tou pper()... 6
strtok ()... 6 tow ctran s()... 6
strtok _r()... 6, 114 tow low er()... 6
strtol()... 6 tow u pper()... 6
strtold ()... 6 tru n c()... 5
strtoll()... 6 tru n cate()... 9
strtou l()... 6 tru n cf()... 5
strtou ll()... 6 tru n cl()... 5
strtou m ax()... 6 tsearch ()... 9
strxfrm ()... 6 ttyn am e()... 7
sw ab()... 9 ttyn am e_r()... 7, 114
sw apcon text()... 9 tw alk ()... 9
sw prin tf()... 6 tzset()... 6
sw scan f()... 6 u alarm ()... 9
sym lin k ()... 8 u lim it()... 9
syn c()... 9 u m ask ()... 7
syscon f()... 8, 42, 43, 61, 79 u n am e()... 8, 42, 61
syslog()... 9 u n getc()... 6
system ()... 8 u n getw c()... 9
tan ()... 5 u n lin k ()... xv, 7
tan f()... 5 u n lock pt()... 9
tan h ()... 5 u n seten v()... 8
tan h f()... 5 u sleep()... 9

Copyright © 2004 IEEE. All rights reserved.

Alph a bet ic Topica l In dex 141

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
IEEE Std 1003.13-2003 STANDARDIZED APPLICATION ENVIRONMENT PROFILE (AEP)

u tim e()... 7 w csw id th ()... 10


u tim es()... 118 w csxfrm ()... 6
va_arg()... 6 w ctob()... 6
va_copy()... 6 w ctom b()... 6
va_en d ()... 6 w ctran s()... 6
va_start()... 6 w ctype()... 6
vfork ()... 9 w cw id th ()... 10
vfprin tf()... 6, 43 w m em ch r()... 6
vfscan f()... 6, 43 w m em cm p()... 6
vfw prin tf()... 9 w m em cpy()... 6
vfw scan f()... 9 w m em m ove()... 6
vprin tf()... 6, 43 w m em set()... 6
vscan f()... 6, 43 w ord exp()... 8
vsn prin tf()... 6 w ord free()... 8
vsprin tf()... 6 w prin tf()... 9
vsscan f()... 6 w rite()... xiv, xv, 6, 43
vsw prin tf()... 6 w ritev()... 9
vsw scan f()... 6 w scan f()... 9
vw prin tf()... 9 y0()... 9
vw scan f()... 9 y1()... 9
w ait()... 7 yn ()... 9
w aitid ()... 9 function family
w aitpid ()... 7 form at ... 31
w crtom b()... 6 functionality
w cscat()... 6 unit of... 28
w csch r()... 6 fu n lock file() function... 7, 114
w cscm p()... 6 fw id e() function... 9
w cscoll()... 6 fw prin tf() function... 9
w cscpy()... 6 fw rite() function... 6, 43
w cscspn ()... 6 fw scan f() function... 9
w csftim e()... 6
w cslen ()... 6
w csn cat()... 6 G
w csn cm p()... 6
w csn cpy()... 6 gai_strerror() function... 7
w cspbrk ()... 6 gcvt() function... 118
w csrch r()... 6 Generic Application Environment Profile...
w csrtom bs()... 6 27
w csspn ()... 6 generic application environment profile... 27
w csstr()... 6 generic environment profile... 32
w cstod ()... 6 generic interface profile... 27
w cstof()... 6 Generic_Read subprogram... 11
w cstoim ax()... 6 Generic_Write subprogram... 11
w cstok ()... 6 Get subprogram... 44
w cstol()... 6 Get_Allowed_Process_Permissions
w cstold ()... 6 subprogram... 12
w cstoll()... 6 Get_Buffer subprogram... 14
w cstom bs()... 6 Get_Canonical_Name subprogram... 121,
w cstou l()... 6 122
w cstou ll()... 6 Get_Ceiling_Priority subprogram...
w cstou m ax()... 6 120, 121
w csw cs()... 118 Get_Close_On_Exec subprogram... 12

Copyright © 2004 IEEE. All rights reserved.

142 Alph a bet ic Topica l In dex

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
POSIX REALTIME AND EMBEDDED APPLICATION SUPPORT IEEE Std 1003.13-2003

Get_Controlling_Terminal_Name getgrgid () function... 8


subprogram... 11 getgrgid _r() function... 8, 114
Get_Data subprogram... 15 getgrn am () function... 8
Get_Effective_Group_ID subprogram... getgrn am _r() function... 8, 114
16 getgrou ps() function... 9
Get_Effective_User_ID subprogram... geth ostbyad d r() function... 7
16 geth ostbyn am e() function... 7
Get_Events subprogram... 121 geth osten t() function... 7
Get_Family subprogram... 121, 122 geth ostid () function... 9
Get_File subprogram... 121 geth ostn am e() function... 7
Get_File_Control subprogram... 12 getitim er() function... 10
Get_Flags subprogram... 121, 122 getlogin () function... 9
Get_Groups subprogram... 16 getlogin _r() function... 9, 114
Get_Locking_Policy subprogram... 120, getm sg() function... 118
121 getn am ein fo() function... 7
Get_Login_Name subprogram... 16 getn etbyad d r() function... 7
Get_Notification subprogram... 15 getn etbyn am e() function... 7
Get_Owner subprogram... 14 getn eten t() function... 7
Get_Parent_Process_Id subprogram... getopt() function... 8
14 getpeern am e() function... 7
Get_Process_Group_ID subprogram... 16 getpgid () function... 9
Get_Process_Group_Id subprogram... 13 getpgrp() function... 7
Get_Process_Id subprogram... 14 getpid () function... 7
Get_Process_Shared subprogram... 120, getpm sg() function... 118
121 getppid () function... 7
Get_Protocol_Number subprogram... 121, getpriority() function... 9
122 getprotobyn am e() function... 7
Get_Real_Group_ID subprogram... 16 getprotobyn u m ber() function... 7
Get_Real_User_ID subprogram... 16 getprotoen t() function... 7
Get_Returned_Events subprogram... 121 getpw en t() function... 9
Get_Signal subprogram... 15 getpw n am () function... 8
Get_Socket_Address_Info getpw n am _r() function... 8, 114
subprogram... 121, 122 getpw u id () function... 8
Get_Socket_Type subprogram... 121, 122 getpw u id _r() function... 8, 114
Get_Terminal_Characteristics getrlim it() function... 9
subprogram... 11 getru sage() function... 9
Get_Terminal_Name subprogram... 11 gets() function... 6, 43
Get_Working_Directory subprogram... getservbyn am e() function... 7
13 getservbyport() function... 7
getad d rin fo() function... 7 getserven t() function... 7
getc() function... 6, 43 getsid () function... 9
getc_u n lock ed () function... 7, 114 getsock n am e() function... 7
getch ar() function... 6, 43 getsock opt() function... 7
getch ar_u n lock ed () function... 7, 114 getsu bopt() function... 9
getcon text() function... 9 gettim eofd ay() function... 9
getcw d () function... 7 getu id () function... 9
getd ate() function... 9 getu txen t() function... 10
getegid () function... 9 getu txid () function... 10
geten v() function... 8 getu txlin e() function... 10
geteu id () function... 9 getw c() function... 9
getgid () function... 9 getw ch ar() function... 9
getgren t() function... 10 getw d () function... 118

Copyright © 2004 IEEE. All rights reserved.

Alph a bet ic Topica l In dex 143

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
IEEE Std 1003.13-2003 STANDARDIZED APPLICATION ENVIRONMENT PROFILE (AEP)

glob() function... 7 in et_pton () function... 7


globfree() function... 7 in itstate() function... 9
gm tim e() function... 6 Input_Baud_Rate_Of subprogram... 11
gm tim e_r() function... 6, 114 Input_Time_Of subprogram... 11
gran tpt() function... 9 in squ e() function... 9
Group constant... 44 Install_Empty_Handler subprogram...
15
interface profile... 27
H international standardized profile... 27, 32
Internet Datagram option... 14
h _errn o() variable... 7 Internet Protocol option... 14
h create() function... 9 Internet Protocol Version 6 option... 88, 106
h d estroy() function... 9 Internet Stream option... 14
header Interrupt_Task subprogram... 15
<limits.h>... 34 ioctl() function... xiv, 118
<unistd.h>... 34, 37, 38, 45, 46, 55, Is... 15
56, 63, 73, 74, 80, 81, 91, 92, 99 Is_A_Terminal subprogram... 11
h search () function... 9 Is_Accessible subprogram... 13
h ton l() function... 7 Is_Block_Special_File subprogram...
h ton s() function... 7 13
h ypot() function... 5 Is_Character_Special_File
h ypotf() function... 5 subprogram... 13
h ypotl() function... 5 Is_Directory subprogram... 13
Is_Environment_Variable
subprogram... 16
I Is_FIFO subprogram... 13
Is_File subprogram... 13
icon v() function... 9 Is_File_Present subprogram... 13
icon v_close() function... 9 Is_Ignored subprogram... 15
icon v_open () function... 9 Is_Member subprogram... 15
if_freen am ein d ex() function... 7 Is_Open subprogram... 11
if_in d exton am e() function... 7 Is_Socket subprogram... 13
if_n am ein d ex() function... 7 isaln u m () function... 6
if_n am etoin d ex() function... 7 isalph a() function... 6
Ignore_Signal subprogram... 15 isascii() function... 9
ilogb() function... 5 isastream () function... 118
ilogbf() function... 5 isatty() function... 7
ilogbl() function... 5 isblan k () function... 6
Image subprogram... 10, 42, 60, 78, 97 iscn trl() function... 6
im axabs() function... 6 isd igit() function... 6
im axd iv() function... 6 isfin ite() function... 5
Implementation Conformance... 33 isgraph () function... 6
implementation defined... 34, 35, 40, 58, 76, isgreater() function... 5
77, 95 isgreaterequ al() function... 5
terminology... 25 isin f() function... 5
In_Set subprogram... 12, 122 isless() function... 5
in d ex() function... 118 islessequ al() function... 5
industry specific interface profile... 27 islessgreater() function... 5
industry specific profile... 27 islow er() function... 6
in et_ad d r() function... 7 isn an () function... 5
in et_n toa() function... 7 isn orm al() function... 5
in et_n top() function... 7 ISO/IEC Conformant Application... 35

Copyright © 2004 IEEE. All rights reserved.

144 Alph a bet ic Topica l In dex

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
POSIX REALTIME AND EMBEDDED APPLICATION SUPPORT IEEE Std 1003.13-2003

ISP... 27, 32 lgam m a() function... 5


isprin t() function... 6 lgam m af() function... 5
ispu n ct() function... 6 lgam m al() function... 5
isspace() function... 6 limit
isu n ord ered () function... 5 RTSIG_MAX... 40, 58, 76, 94
isu pper() function... 6 TIME R_MAX... 40, 58, 76, 94
isw aln u m () function... 6 Link subprogram... 13
isw alph a() function... 6 lin k () function... xv, 7
isw blan k () function... 6 lio_listio() function... 111
isw cn trl() function... 6 listen () function... 7
isw ctype() function... 6 llabs() function... 6
isw d igit() function... 6 lld iv() function... 6
isw graph () function... 6 llrin t() function... 5
isw low er() function... 6 llrin tf() function... 5
isw prin t() function... 6 llrin tl() function... 5
isw pu n ct() function... 6 llrou n d () function... 5
isw space() function... 6 llrou n d f() function... 5
isw u pper() function... 6 llrou n d l() function... 5
isw xd igit() function... 6 localecon v() function... 6
isxd igit() function... 6 localtim e() function... 6
localtim e_r() function... 6, 114
Lock_Shared_Memory subprogram... 122
J lock f() function... 9
log() function... 5
j0() function... 9 log10() function... 5
j1() function... 9 log10f() function... 5
jn () function... 9 log10l() function... 5
Job Control option... 13 log1p() function... 5
jobs utility... 119 log1pf() function... 5
jran d 48() function... 9 log1pl() function... 5
log2() function... 5
log2f() function... 5
K log2l() function... 5
logb() function... 5
k ill() function... 8, 42, 43, 61, 79 logbf() function... 5
k illpg() function... 9 logbl() function... 5
logf() function... 5
logl() function... 5
L lon g type... 94
lon gjm p() function... 5
l64a() function... 9 lran d 48() function... 9
labs() function... 6 lrin t() function... 5
lch ow n () function... 9 lrin tf() function... 5
lcon g48() function... 9 lrin tl() function... 5
ld exp() function... 5 lrou n d () function... 5
ld expf() function... 5 lrou n d f() function... 5
ld expl() function... 5 lrou n d l() function... 5
ld iv() function... 6 lsearch () function... 9
Length subprogram... 16 lseek () function... 7
lex utility... 119 lstat() function... 8
lfin d () function... 9

Copyright © 2004 IEEE. All rights reserved.

Alph a bet ic Topica l In dex 145

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
IEEE Std 1003.13-2003 STANDARDIZED APPLICATION ENVIRONMENT PROFILE (AEP)

M Monotonic Clock option... 51, 68, 86, 105


more utility... 119
macro m protect() function... 112
S_IRWXU... 43, 61, 79 m q_close() function... 112
m ain () function... 47, 64 m q_getattr() function... 112
make utility... 119 m q_n otify() function... 112
Make_Empty subprogram... 12 m q_open () function... 112
m ak econ text() function... 9 m q_receive() function... 112
m alloc() function... 6 m q_sen d () function... 112
Map_Memory subprogram... 120 m q_setattr() function... 112
may m q_tim ed receive() function... 112, 116
terminology... 25 m q_tim ed sen d () function... 112, 116
m blen () function... 6 m q_u n lin k () function... 112
m brlen () function... 6 m ran d 48() function... 9
m brtow c() function... 6 m sgctl() function... 9
m bsin it() function... 6 m sgget() function... 9
m bsrtow cs() function... 6 m sgrcv() function... 9
m bstow cs() function... 6 m sgsn d () function... 9
m btow c() function... 6 m syn c() function... 112, 113
m em ccpy() function... 9 Multi-Purpose Realtime System Profile... 3,
m em ch r() function... 6 91
m em cm p() function... 6 m u n lock () function... 112
m em cpy() function... 6 m u n lock all() function... 112
m em m ove() function... 6 m u n m ap() function... 112, 113, 118
Memory Locking option... 20, 41, 59, 77, 96, Mutex Priority Ceiling option... 21, 41, 59, 78,
120 96, 121
Memory Mapped Files option... 68 Mutex Priority Inherit option... 120
Memory Mapped Files option... 20, 59, 77, 96, Mutex Priority Inheritance option... 21, 41,
120, 122 59, 78, 96, 121
Memory Protection option... 20, 77, 96, 120 Mutexes option... 22, 41, 59, 78, 96, 120, 121
Memory Range option... 122 MutexPriority Ceiling option... 120
Memory Range Locking option... 20, 41, 59,
77, 96, 120
m em set() function... 6 N
mesg utility... 119
Message Queues option... 20, 59, 78, 96, 120 n an () function... 5
Minimal Realtime System Profile... 2, 37 n an f() function... 5
Minimum_Input_Count_Of subprogram... n an l() function... 5
11 n an osleep() function... 116
m k d ir() function... xv, 7 National Body Conformant POSIX.13
m k fifo() function... 7 Application... 35
m k n od () function... 9, 58, 77, 95 n earbyin t() function... 5
m k stem p() function... 9 n earbyin tf() function... 5
m k tem p() function... 118 n earbyin tl() function... 5
m k tim e() function... 6 Network Management option... 121, 122
m lock () function... 112 newgrp utility... 119
m lock all() function... 112 n extafter() function... 5
m m ap() function... 112, 113, 118 n extafterf() function... 5
MMU... 32 n extafterl() function... 5
m od f() function... 5 n exttow ard () function... 5
m od ff() function... 5 n exttow ard f() function... 5
m od fl() function... 5 n exttow ard l() function... 5

Copyright © 2004 IEEE. All rights reserved.

146 Alph a bet ic Topica l In dex

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
POSIX REALTIME AND EMBEDDED APPLICATION SUPPORT IEEE Std 1003.13-2003

n ftw () function... 9 _POSIX_FSYNC... 18, 20, 39, 57, 75, 94,


nice utility... 119 118
n ice() function... 9 _POSIX_IPV6... 18, 20
n l_lan gin fo() function... 9 _POSIX_JOB_CONTROL... 10
nm utility... 119 _POSIX_MAPPED_FILES... 18, 20, 48,
Normative References... 23 57, 75, 94, 118
n ran d 48() function... 9 _POSIX_MEMLOCK... 18, 20, 39, 46,
n toh l() function... 7 57, 75, 94, 118
n toh s() function... 7 _POSIX_MEMLOCK_RANGE... 18, 20,
39, 57, 75, 94, 118
_POSIX_MEMORY_PROTECTION...
O 19, 20, 75, 94, 118
_POSIX_MESSAGE_PASSING... 19,
off_t type... 94 20, 57, 75, 94, 118
Open subprogram... 11, 44 _POSIX_MONOTONIC_CLOCK... 19,
open system environment... 27, 32 20, 39, 57, 75, 94
open () function... xiv, 6, 40, 43, 47 _POSIX_NO_TRUNC... 19, 21, 22, 48
Open_Or_Create subprogram... 13 _POSIX_PRIORITIZED_IO... 19, 21, 75,
open d ir() function... 7 94, 118
open log() function... 9 _POSIX_PRIORITY_SCHEDULING...
Operation_Not_Implemented 19, 21, 76, 94, 118
constant... 22, 96 _POSIX_RAW_SOCKETS... 19, 21, 76,
Operation_Not_Supported 94
constant... 42, 60, 78, 97 _POSIX_READER_WRITER_LOCKS...
optarg() variable... 8 10
opterr() variable... 8 _POSIX_REALTIME_SIGNALS... 19,
optin d () variable... 8 21, 39, 57, 76, 94, 118
option _POSIX_REGEXP... 10
_POSIX_ADVISORY_INFO... 18, 20, _POSIX_SAVED_IDS... 19, 21, 94
48, 65, 83, 94 _POSIX_SEMAPHORES... 19, 21, 39,
_POSIX_AEP_REALTIME_... 37, 55, 57, 76, 94, 118
73, 91 _POSIX_SHARED_MEMORY_OBJEC
_POSIX_AEP_REALTIME_CONTROL TS... 19, 21, 39, 57, 76, 94, 118
LER... 55 _POSIX_SPAWN... 19, 21, 76, 94
_POSIX_AEP_REALTIME_DEDICAT _POSIX_SPIN_LOCKS... 19, 21
ED... 73 _POSIX_SPORADIC_SERVER... 19,
_POSIX_AEP_REALTIME_LANG_Ad 21, 76, 94
a95... 38, 46, 56, 63, 74, 81, 92, 99 _POSIX_SYNCHRONIZED_IO... 19,
_POSIX_AEP_REALTIME_LANG_C99 21, 39, 57, 76, 94, 118
... 38, 45, 56, 63, 74, 80, 92, 99 _POSIX_THREAD_ATTR_STACKAD
_POSIX_AEP_REALTIME_MINIMAL. DR... 19, 21, 39, 57, 76, 94
.. 37 _POSIX_THREAD_ATTR_STACKSIZ
_POSIX_AEP_REALTIME_MULTI... E... 19, 21, 39, 57, 76, 94
91 _POSIX_THREAD_CPUTIME... 19, 21,
_POSIX_ASYNCHRONOUS_IO... 18, 39, 57, 76, 94
20, 75, 94, 118 _POSIX_THREAD_PRIO_INHERIT...
_POSIX_BARRIERS... 18, 20 19, 21, 39, 57, 76, 94, 118
_POSIX_CHOWN_RESTRICTED... 18, _POSIX_THREAD_PRIO_PROTECT...
20, 94 19, 21, 39, 57, 76, 94, 118
_POSIX_CLOCK_SELECTION... 18, _POSIX_THREAD_PRIORITY_SCHE
20, 39, 57, 75, 94 DULING... 19, 21, 39, 58, 76, 94,
_POSIX_CPUTIME... 18, 20, 75, 94 118

Copyright © 2004 IEEE. All rights reserved.

Alph a bet ic Topica l In dex 147

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
IEEE Std 1003.13-2003 STANDARDIZED APPLICATION ENVIRONMENT PROFILE (AEP)

_POSIX_THREAD_PROCESS_SHARE _XOPEN_UNIX... 20, 22


D... 10 Ada language... 18, 34, 40, 43, 59, 61, 71,
_POSIX_THREAD_PROCESS_SHARE 77, 79, 89, 95, 98, 108
D... 19, 21, 76, 94 Advisory Information... 101
_POSIX_THREAD_SAFE_FUNCTION Asynchronous I/O... 20, 77, 96, 120
S... 19, 21, 94 C Language... 98
_POSIX_THREAD_SPORADIC_SERV C language... 34, 38, 39, 40, 42, 56, 57, 58,
ER... 19, 21, 39, 58, 76, 94 61, 71, 74, 75, 77, 79, 89, 92, 93, 95,
_POSIX_THREAD_STACK_ADDRESS 97, 108
... 119 Change Owner Restriction... 20, 96, 120
_POSIX_THREAD_STACK_SIZE... 119 CHILD_MAX... 43, 61
_POSIX_THREADS... 10, 19, 21, 22, 52, C-Language... 18, 34
69, 87, 106 C-language... 20
_POSIX_TIMEOUTS... 10 Clock Selection... 51, 68, 86, 105
_POSIX_TIMEOUTS... 19, 21, 39, 58, File Locking... 48, 65, 101
76, 94 File Synchronization... 48, 65, 83
_POSIX_TIMERS... 19, 21, 39, 58, 76, File Synchronization... 20, 41, 59, 77, 96,
94, 118 120
_POSIX_TRACE... 19, 21, 58, 76, 94 Filename Truncation... 41, 59, 77, 96
_POSIX_TRACE_EVENT_FILTER... Filename Truncation... 21, 22, 41, 59,
19, 21, 58, 76, 94 78, 96, 120
_POSIX_TRACE_INHERIT... 19, 21 Internet Datagram... 14
_POSIX_TRACE_LOG... 19, 21, 58, 76, Internet Protocol... 14
94 Internet Protocol Version 6... 88, 106
_POSIX_TYPED_MEMORY_OBJECT Internet Stream... 14
S... 19, 21 Job Control... 13
_POSIX_VDISABLE... 19, 21, 22, 94 Memory Locking... 20, 41, 59, 77, 96, 120
_POSIX_VERSION... 43, 61, 79 Memory Mapped Files... 68
_POSIX2_C_DEV... 19, 21 Memory Mapped Files... 20, 59, 77, 96,
_POSIX2_CHAR_TERM... 19, 21 120, 122
_POSIX2_FORT_DEV... 19, 21 Memory Protection... 20, 77, 96, 120
_POSIX2_FORT_RUN... 19, 21 Memory Range... 122
_POSIX2_LOCALEDEF... 19, 21 Memory Range Locking... 20, 41, 59, 77,
_POSIX2_PBS... 19, 21 96, 120
_POSIX2_PBS_ACCOUNTING... 19, 21 Message Queues... 20, 59, 78, 96, 120
_POSIX2_PBS_CHECKPOINT... 19, 21 Monotonic Clock... 51, 68, 86, 105
_POSIX2_PBS_LOCATE... 20, 21 Mutex Priority Ceiling... 21, 41, 59, 78,
_POSIX2_PBS_MESSAGE... 20, 21 96, 121
_POSIX2_PBS_TRACK... 20, 21 Mutex Priority Inherit... 120
_POSIX2_SW_DEV... 20, 21 Mutex Priority Inheritance... 21, 41, 59,
_POSIX2_UPE... 20, 21 78, 96, 121
_XOPEN_CRYPT... 20, 22, 53, 71, 89, Mutexes... 22, 41, 59, 78, 96, 120, 121
108 MutexPriority Ceiling... 120
_XOPEN_ENH_I18N... 20, 22 Network Management... 121, 122
_XOPEN_LEGACY... 20, 22, 53, 71, 89, Poll... 121
108 POSIX2_C_DEV... 4, 45, 62, 80, 98, 99
_XOPEN_REALTIME... 20, 22 POSIX2_CHAR_TERM... 98
_XOPEN_REALTIME_THREADS... 20, POSIX2_FORT_RUN... 98
22 POSIX2_SW_DEV... 4, 45, 46, 62, 63, 80,
_XOPEN_SHM... 20, 22 81, 98, 99
_XOPEN_STREAMS... 20, 22, 53, 71, POSIX2_UPE... 98
89, 108 Prioritized I/O... 21, 78, 96, 121

Copyright © 2004 IEEE. All rights reserved.

148 Alph a bet ic Topica l In dex

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
POSIX REALTIME AND EMBEDDED APPLICATION SUPPORT IEEE Std 1003.13-2003

Priority Process Scheduling... 21, 78, 96, 122


121 POSIX_File_Locking... 12
Process Shared... 49, 66, 84, 102 POSIX_File_Status... 13
Process Shared... 21, 78, 96, 120 POSIX_Files... 12, 13
Process Shared and Mutexes... 121 POSIX_Generic_Shared_Memory...
Raw Sockets... 88, 106 122
Realtime Signals... 21, 41, 59, 78, 96, 121 POSIX_Group_Database... 16
Required... 18 POSIX_IO... 11, 12, 13, 14, 122
Saved IDs Support... 21, 96, 121 POSIX_Limits... 15, 34
Select... 12 POSIX_Memory_Mapping... 122
Select... 122 POSIX_Mutexes... 120, 121
Semaphores... 21, 41, 59, 78, 96, 122 POSIX_Options... 15, 37, 55, 73, 91
Server Scheduling... 67 POSIX_Page_Alignment... 10
Shared Memory... 120 POSIX_Permissions... 12
Shared Memory Objects... 86 POSIX_Process_Environment... 13,
Shared Memory Objects... 21, 41, 59, 78, 16
96, 122 POSIX_Process_Identification...
Sockets Detailed... 121 13, 14, 16
Sockets Detailed Network Interface... POSIX_Process_Primitives... 14
14 POSIX_Process_Scheduling... 121
Sockets Detailed Network Interface... POSIX_Process_Times... 14
122 POSIX_Profiles... 15, 16, 41, 60, 78,
spawn... 64 97, 109
Sporadic Server Scheduling... 49, 85, 103 POSIX_Semaphores... 122
Synchronized I/O... 21, 41, 59, 78, 96, POSIX_Shared_Memory_Objects...
120, 122 122
Timeouts... 51, 69, 87, 105 POSIX_Signals... 13, 15, 121
Timers... 21, 41, 59, 78, 96, 122 POSIX_Sockets... 14, 121, 122
Trace Event Filtering... 70, 87, 106 POSIX_Sockets_Internet... 14
Trace Log... 70, 88, 106 POSIX_Sockets_Local... 14
XTI Detailed Network Interface... 122 POSIX_Supplement_To_Ada_IO... 10
optopt() variable... 8 POSIX_Terminal_Functions... 11, 13
OSE... 27, 32 POSIX_Timers... 122
Other constant... 44 POSIX_Unsafe_Process_Primitive
Output_Baud_Rate_Of subprogram... 11 s... 14, 77
Owner constant... 44 POSIX_User_Database... 16
POSIX_XTI... 122
System... 10
P System_Storage_Elements... 10
patch utility... 119
package path con f() function... 7
Ada_Streams... 10 pau se() function... 8
Ada_Task_Identification... 10 pclose() function... 8
POSIX... 15 Pending_Signals subprogram... 15
POSIX_Calendar... 15 perror() function... 6, 43
POSIX_Condition_Variables... 120, pipe() function... 7
121 platform
POSIX_Configurable_File_Limits application... 26
... 13 development... 26
POSIX_Configurable_System_Limi Poll option... 121
ts... 15 Poll subprogram... 121
POSIX_Event_Management... 12, 121, poll() function... 9

Copyright © 2004 IEEE. All rights reserved.

Alph a bet ic Topica l In dex 149

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
IEEE Std 1003.13-2003 STANDARDIZED APPLICATION ENVIRONMENT PROFILE (AEP)

popen () function... 8 POSIX_File_Locking package... 12


POSIX package... 15 POSIX_FILE_LOCKING Unit of
POSIX.1, defined... 32 Functionality... 7, 17, 39, 40, 57, 75, 93
POSIX.26, defined... 32 POSIX_File_Status package... 13
POSIX.5c, defined... 32 POSIX_FILE_SYSTEM Unit of
POSIX_ADA_LANG_SUPPORT Unit of Functionality... 7, 13, 17, 48, 57, 59, 75, 77,
Functionality... 10, 17, 40, 59, 77, 95 93, 95
POSIX_C_LANG_JUMP Unit of POSIX_FILE_SYSTEM_EXT Unit of
Functionality... 5, 17, 39, 57, 75, 93 Functionality... 7, 17, 48, 65, 83, 93
POSIX_C_LANG_MAT Unit of POSIX_Files package... 12, 13
Functionality... 57 POSIX_Generic_Shared_Memory
POSIX_C_LANG_MATH Unit of package... 122
Functionality... 5, 17, 53, 75, 93 POSIX_Group_Database package... 16
POSIX_C_LANG_SUPPOR Unit of POSIX_IO package... 11, 12, 13, 14, 122
Functionality... 57 POSIX_IO.Generic_Read subprogram...
POSIX_C_LANG_SUPPORT Unit of 44
Functionality... 6, 17, 39, 75, 93 POSIX_IO.Generic_Write subprogram...
POSIX_C_LANG_WIDE_CHAR Unit of 44
Functionality... 6, 17, 53, 71, 89, 93 POSIX_IO.Open subprogram... 44
POSIX_Calendar package... 15 POSIX_IO.Open_Or_Create
POSIX_Condition_Variables package... subprogram... 44
120, 121 POSIX_IO.Read subprogram... 44
POSIX_Configurable_File_Limits POSIX_IO.Write subprogram... 44
package... 13 POSIX_JOB_CONTROL Unit of
POSIX_Configurable_System_Limits Functionality... 7, 13, 17, 22, 93, 96
package... 15 POSIX_Limits package... 15, 34
POSIX_Configurable_System_Limits. POSIX_Limits.Child_Processes_M
System_POSIX_Ada_Version axima'Last constant... 44, 62
subprogram... 43, 62, 79 POSIX_Limits.Child_Processes_Maxi
POSIX_Configurable_System_Limits. ma’First type... 96
System_POSIX_Version POSIX_Limits.Groups_Maxima'Fir
subprogram... 43, 61, 79 st constant... 22
posix_d evctl() function... xiv, 48, 65, 83, 101 POSIX_Limits.Groups_Maxima’Fir
POSIX_DEVICE_IO Unit of st constant... 41, 60, 78
Functionality... 6, 11, 17, 39, 40, 57, 59, 75, POSIX_Limits.Groups_Maxima’First
77, 93, 95 type... 96
POSIX_DEVICE_SPECIFIC Unit of POSIX_Limits.Realtime_Signals_Max
Functionality... 7, 11, 17, 93, 95 ima’First type... 41, 59, 78, 97
POSIX_Error exception... 22, 42, 60, 78, 96, POSIX_Limits.Timers_Maxima’First
97 type... 41, 59, 78, 97
POSIX_Event_Management package... 12, posix_m ad vise() function... 111, 112, 113
121, 122 posix_m em _offset() function... 118
POSIX_EVENT_MGMT Unit of posix_m em align () function... 111
Functionality... 7, 12, 17, 75, 77, 93, 95 POSIX_Memory_Mapping package... 122
posix_fad vise() function... 111 POSIX_MULTI_PROCESS Unit of
posix_fallocate() function... 111 Functionality... 7, 14, 17, 75, 77, 93, 96
POSIX_FD_MGMT Unit of Functionality... POSIX_Mutexes package... 120, 121
7, 12, 17, 48, 57, 59, 75, 77, 93, 95 POSIX_NETWORKING Unit of
POSIX_FIFO Unit of Functionality... 7, 12, Functionality... 7, 14, 17, 75, 77, 93, 96
17, 48, 65, 83, 93, 95 posix_open pt() function... 9
POSIX_FILE_ATTRIBUTES Unit of POSIX_Options package... 15, 37, 55, 73, 91
Functionality... 7, 12, 17, 48, 65, 83, 93, 95 POSIX_Page_Alignment package... 10

Copyright © 2004 IEEE. All rights reserved.

150 Alph a bet ic Topica l In dex

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
POSIX REALTIME AND EMBEDDED APPLICATION SUPPORT IEEE Std 1003.13-2003

POSIX_Permissions package... 12 l_Enabled subprogram... 22


POSIX_PIPE Unit of Functionality... 7, 17, POSIX_Signals.Stopped_Child_Signa
75, 77, 93, 96 l_Enabled subprogram... 41, 60, 78
POSIX_PIPES Unit of Functionality... 14 POSIX_SINGLE_PROCESS Unit of
POSIX_Process_Environment package... Functionality... 8, 15, 17, 39, 40, 57, 59, 75,
13, 16 77, 93, 96
POSIX_Process_Identification POSIX_Sockets package... 14, 121, 122
package... 13, 14, 16 POSIX_Sockets_Internet package... 14
POSIX_Process_Primitives package... POSIX_Sockets_Local package... 14
14 posix_spaw n () function... 113
Posix_Process_Primitives.Start_Pr posix_spaw n _file_action s_ad d close()
ocess subprogram... 79 function... 113
Posix_Process_Primitives.Start_Pr posix_spaw n _file_action s_ad d d u p2()
ocess_Search subprogram... 79 function... 113
POSIX_Process_Scheduling package... posix_spaw n _file_action s_ad d open ()
121 function... 113
POSIX_Process_Times package... 14 posix_spaw n _file_action s_d estroy()
POSIX_Profiles package... 15, 16, 41, 60, function... 113
78, 97, 109 posix_spaw n _file_action s_in it() function...
POSIX_Profiles. type... 38, 45, 56, 63, 74, 113
80, 92, 99 posix_spaw n attr_d estroy() function... 113
POSIX_Profiles.Realtime_AEP_Ve posix_spaw n attr_getflags() function... 113
rsion constant... 38, 55, 73, 91 posix_spaw n attr_getpgrou p() function... 113
POSIX_Profiles.Realtime_Controlle posix_spaw n attr_getsch ed param ()
r type... 55 function... 112, 113
POSIX_Profiles.Realtime_Dedicated posix_spaw n attr_getsch ed policy()
type... 73 function... 112, 113
POSIX_Profiles.Realtime_Lang_Ada9 posix_spaw n attr_getsigd efau lt() function...
5 type... 38, 46, 56, 63, 74, 81, 92, 99 113
POSIX_Profiles.Realtime_Minimal posix_spaw n attr_getsigm ask () function...
type... 37 113
POSIX_Profiles.Realtime_Multi posix_spaw n attr_in it() function... 113
type... 91 posix_spaw n attr_setflags() function... 113
POSIX_REGEXP Unit of Functionality... 7, posix_spaw n attr_setpgrou p() function... 113
17, 52, 70, 88, 93, 107 posix_spaw n attr_setsch ed param ()
POSIX_RW_LOCKS Unit of function... 112, 113
Functionality... 8, 10, 17 posix_spaw n attr_setsch ed policy() function...
POSIX_Semaphores package... 122 112, 113
POSIX_Shared_Memory_Objects posix_spaw n attr_setsigd efau lt() function...
package... 122 113
POSIX_SHELL_FUNC Unit of posix_spaw n attr_setsigm ask () function...
Functionality... 8, 17, 52, 70, 88, 93, 107 113
POSIX_SIGNAL_JUMP Unit of posix_spaw n p() function... 113
Functionality... 8, 17, 75, 93 POSIX_STRING_MATCHING Unit of
POSIX_Signals package... 13, 15, 121 Functionality... 8, 17, 93
POSIX_SIGNALS Unit of Functionality... 8, POSIX_Supplement_To_Ada_IO
15, 17, 39, 40, 57, 59, 75, 77, 93, 96 package... 10
POSIX_Signals.Set_Stopped_Child_S POSIX_SYMBOLIC_LINKS Unit of
ignal subprogram... 22 Functionality... 8, 17, 93
POSIX_Signals.Set_Stopped_Child_S POSIX_SYSTEM_DATABASE Unit of
ignal subprogram... 41, 60, 78 Functionality... 8, 16, 17, 93, 96
POSIX_Signals.Stopped_Child_Signa POSIX_Terminal_Functions package...

Copyright © 2004 IEEE. All rights reserved.

Alph a bet ic Topica l In dex 151

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
IEEE Std 1003.13-2003 STANDARDIZED APPLICATION ENVIRONMENT PROFILE (AEP)

11, 13 posix_trace_even tid _get_n am e() function...


POSIX_Terminal_Functions.Disable_ 117
Control_Character subprogram... posix_trace_even tid _open () function... 117
22 posix_trace_even tset_ad d () function... 117
POSIX_Terminal_Functions.Disable_ posix_trace_even tset_d el() function... 117
Control_Character subprogram... 22, posix_trace_even tset_em pty() function... 117
96 posix_trace_even tset_fill() function... 117
POSIX_THREADS_BASE Unit of posix_trace_even tset_ism em ber() function...
Functionality... 8, 10, 17, 39, 52, 57, 69, 75, 117
87, 93, 106 posix_trace_even ttypelist_getn ext_id ()
POSIX_Timers package... 122 function... 117
posix_trace_attr_d estroy() function... 117 posix_trace_even ttypelist_rew in d ()
posix_trace_attr_getclock res() function... 117 function... 117
posix_trace_attr_getcreatetim e() function... posix_trace_flu sh () function... 117
117 posix_trace_get_attr() function... 117
posix_trace_attr_getgen version () function... posix_trace_get_filter() function... 117
117 posix_trace_get_statu s() function... 117
posix_trace_attr_getin h erited () function... posix_trace_getn ext_even t() function... 117
117 posix_trace_open () function... 117
posix_trace_attr_getlogfu llpolicy() posix_trace_rew in d () function... 117
function... 117 posix_trace_set_filter() function... 117
posix_trace_attr_getlogsize() function... 117 posix_trace_sh u td ow n () function... 117
posix_trace_attr_getm axd atasize() posix_trace_start() function... 117
function... 117 posix_trace_stop() function... 117
posix_trace_attr_getm axsystem even tsize() posix_trace_tim ed getn ext_even t() function...
function... 117 116, 117
posix_trace_attr_getm axu sereven tsize() posix_trace_trid _even tid _open () function...
function... 117 117
posix_trace_attr_getn am e() function... 117 posix_trace_trygetn ext_even t() function...
posix_trace_attr_getstream fu llpolicy() 117
function... 117 posix_typed _m em _get_in fo() function... 118
posix_trace_attr_getstream size() function... posix_typed _m em _open () function... 118
117 POSIX_Unsafe_Process_Primitives
posix_trace_attr_in it() function... 117 package... 14, 77
posix_trace_attr_setin h erited () function... Posix_Unsafe_Process_Primitives
117 subprogram... 79
posix_trace_attr_setlogfu llpolicy() POSIX_User_Database package... 16
function... 117 POSIX_USER_GROUPS Unit of
posix_trace_attr_setlogsize() function... 117 Functionality... 9, 16, 17, 93, 96
posix_trace_attr_setm axd atasize() POSIX_WIDE_CHAR_IO Unit of
function... 117 Functionality... 9, 17, 93
posix_trace_attr_setn am e() function... 117 POSIX_XTI package... 122
posix_trace_attr_setstream fu llpolicy() POSIX2_C_DEV option... 4, 45, 62, 80, 98, 99
function... 117 POSIX2_CHAR_TERM option... 98
posix_trace_attr_setstream size() function... POSIX2_FORT_RUN option... 98
117 POSIX2_SW_DEV option... 4, 45, 46, 62, 63,
posix_trace_clear() function... 117 80, 81, 98, 99
posix_trace_close() function... 117 POSIX2_UPE option... 98
posix_trace_create() function... 117 pow () function... 5
posix_trace_create_w ith log() function... 117 pow f() function... 5
posix_trace_even t() function... 117 pow l() function... 5
posix_trace_even tid _equ al() function... 117 pread () function... 9

Copyright © 2004 IEEE. All rights reserved.

152 Alph a bet ic Topica l In dex

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
POSIX REALTIME AND EMBEDDED APPLICATION SUPPORT IEEE Std 1003.13-2003

prin tf() function... 6, 43 pth read _attr_getscope() function... 114, 116


Prioritized I/O option... 21, 78, 96, 121 pth read _attr_getstack () function... 10, 113,
priority ceiling protocol... 49, 66, 84, 102 114, 115
priority inheritance protocol... 49, 66, 84, 102 pth read _attr_getstack ad d r() function... 113,
Priority Inversion... 27 115
priority inversion... 49, 66, 84, 102 pth read _attr_getstack size() function... 114,
Priority Process Scheduling option... 21, 78, 115, 119
96, 121 pth read _attr_in it() function... 8, 115
priority protection protocol pth read _attr_setd etach state() function... 8,
see priority ceiling protocol 115
Process Shared and Mutexes option... 121 pth read _attr_setgu ard size() function... 10
Process Shared option... 49, 66, 84, 102 pth read _attr_setin h eritsch ed () function...
Process Shared option... 21, 78, 96, 120 114, 116
profile pth read _attr_setsch ed param () function... 8,
application environment... 26, 27 115
component... 26 pth read _attr_setsch ed policy() function...
for ISO standardization... 27 114, 116
generic application environment... 27 pth read _attr_setscope() function... 114, 116
generic interface... 27 pth read _attr_setstack () function... 10, 113,
industry specific interface... 27 114, 115
interface... 27 pth read _attr_setstack ad d r() function... 113,
international standardized... 27, 32 115
realtime environment... 27 pth read _attr_setstack size() function... 114,
system... 28 115, 119
profile, generic environment... 32 pth read _barrier_d estroy() function... 111,
protocol 115
priority ceiling... 49, 66, 84, 102 pth read _barrier_in it() function... 111, 115
priority inheritance... 49, 66, 84, 102 pth read _barrier_w ait() function... 111, 115
ps utility... 119 pth read _barrierattr_d estroy() function...
PSE... 32 111, 115
PSE, defined... 32 pth read _barrierattr_getpsh ared ()
PSE51... 2, 37 function... 111, 114, 115
PSE51, defined... 32 pth read _barrierattr_in it() function... 111,
PSE52... 3, 55 115
PSE52, defined... 32 pth read _barrierattr_setpsh ared () function...
PSE53... 3, 73 111, 114, 115
PSE53, defined... 32 pth read _can cel() function... 8, 115
PSE54... 3, 91 pth read _clean u p_pop() function... 8, 115
PSE54, defined... 32 pth read _clean u p_pu sh () function... 8, 115
PSE5X, defined... 32 pth read _con d _broad cast() function... 8, 115
pselect() function... 7 pth read _con d _d estroy() function... 8, 115
pth read _atfork () function... 8, 115 pth read _con d _in it() function... 8, 115
pth read _attr_d estroy() function... 8, 115 pth read _con d _sign al() function... 8, 115
pth read _attr_getd etach state() function... 8, pth read _con d _tim ed w ait() function... 8, 115
115 pth read _con d _w ait() function... 8, 115
pth read _attr_getgu ard size() function... 10 pth read _con d attr_d estroy() function... 8, 115
pth read _attr_getin h eritsch ed () function... pth read _con d attr_getclock () function... 111,
114, 116 115
pth read _attr_getsch ed param () function... 8, pth read _con d attr_getpsh ared () function...
115 114, 116
pth read _attr_getsch ed policy() function... pth read _con d attr_in it() function... 8, 115
114, 116 pth read _con d attr_setclock () function... 111,

Copyright © 2004 IEEE. All rights reserved.

Alph a bet ic Topica l In dex 153

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
IEEE Std 1003.13-2003 STANDARDIZED APPLICATION ENVIRONMENT PROFILE (AEP)

115 pth read _rw lock _tryw rlock () function... 8,


pth read _con d attr_setpsh ared () function... 115
114, 116 pth read _rw lock _u n lock () function... 8, 115
pth read _create() function... 8, 115 pth read _rw lock _w rlock () function... 8, 115
pth read _d etach () function... 8, 115 pth read _rw lock attr_d estroy() function... 8,
pth read _equ al() function... 8, 115 115
pth read _exit() function... 8, 115 pth read _rw lock attr_getpsh ared () function...
pth read _getcon cu rren cy() function... 10 8, 114, 116
pth read _getcpu clock id () function... 114, 115 pth read _rw lock attr_in it() function... 8, 115
pth read _getsch ed param () function... 114, pth read _rw lock attr_setpsh ared () function...
116 8, 114, 116
pth read _getspecific() function... 8, 115 PTHREAD_SCOPE_PROCESS constant... 76,
pth read _join () function... 8, 115 95
pth read _k ey_create() function... 8, 115 PTHREAD_SCOPE_SYSTEM constant... 76, 85,
pth read _k ey_d elete() function... 8, 115 95, 103
pth read _k ill() function... 8, 115 pth read _self() function... 8, 115
pth read _m u tex_d estroy() function... 8, 115 pth read _setcalcelstate() function... 8, 115
pth read _m u tex_getprioceilin g() function... pth read _setcan celtype() function... 8, 115
114, 116 pth read _setcon cu rren cy() function... 10
pth read _m u tex_in it() function... 8, 115 pth read _setsch ed param () function... 114,
pth read _m u tex_lock () function... 8, 115 116
pth read _m u tex_setprioceilin g() function... pth read _setsch ed prio() function... 114, 116
114, 116 pth read _setspecific() function... 8, 115
pth read _m u tex_tim ed lock () function... 116 pth read _sigm ask () function... 8, 115
pth read _m u tex_trylock () function... 8, 115 pth read _spin _d estroy() function... 113, 115
pth read _m u tex_u n lock () function... 8, 115 pth read _spin _in it() function... 113, 115
pth read _m u texattr_d estroy() function... 8, pth read _spin _lock () function... 113, 115
115 pth read _spin _trylock () function... 113, 115
pth read _m u texattr_getprioceilin g() pth read _spin _u n lock () function... 113, 115
function... 114, 116 pth read _testcan cel() function... 8, 115
pth read _m u texattr_getprotocol() function... ptsn am e() function... 9
114, 116 Put subprogram... 44
pth read _m u texattr_getpsh ared () function... pu tc() function... 6, 43
114, 116 pu tc_u n lock ed () function... 7, 114
pth read _m u texattr_gettype() function... 10 pu tch ar() function... 6, 43
pth read _m u texattr_in it() function... 8, 115 pu tch ar_u n lock ed () function... 7, 114
pth read _m u texattr_setprioceilin g() pu ten v() function... 9
function... 114, 116 pu tm sg() function... 118
pth read _m u texattr_setprotocol() function... pu tpm sg() function... 118
114, 116 pu ts() function... 6, 43
pth read _m u texattr_setpsh ared () function... pu tu txlin e() function... 10
114, 116 pu tw c() function... 9
pth read _m u texattr_settype() function... 10 pu tw ch ar() function... 9
pth read _on ce() function... 8, 115 pw rite() function... 9
pth read _rw lock _d estroy() function... 8, 115
pth read _rw lock _in it() function... 8, 115
pth read _rw lock _rd lock () function... 8, 115 Q
pth read _rw lock _tim ed rd lock () function... 8,
116 qalter utility... 119
pth read _rw lock _tim ed w rlock () function... 8, qdel utility... 119
116 qhold utility... 119
pth read _rw lock _tryrd lock () function... 8, 115 qmove utility... 119

Copyright © 2004 IEEE. All rights reserved.

154 Alph a bet ic Topica l In dex

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
POSIX REALTIME AND EMBEDDED APPLICATION SUPPORT IEEE Std 1003.13-2003

qmsg utility... 119 Rename subprogram... 13


qrerun utility... 119 ren am e() function... xv, 7
qrls utility... 119 renice utility... 119
qselect utility... 119 Required option... 18
qsig utility... 119 rew in d () function... 7
qsort() function... 6 rew in d d ir() function... 7
qstat utility... 119 rin d ex() function... 118
qsub utility... 119 rin t() function... 5
Queue_Signal subprogram... 121 rin tf() function... 5
rin tl() function... 5
rm d ir() function... xv, 7
R rou n d () function... 5
rou n d f() function... 5
raise() function... 8, 42, 61 rou n d l() function... 5
ran d () function... 6 RTSIG_MAX limit... 40, 58, 76, 94
ran d _r() function... 6, 114
ran d om () function... 9
Raw Sockets option... 88, 106 S
Read subprogram... 11, 44
read () function... xiv, xv, 6, 43 S_IRWXU macro... 43, 61, 79
Read_Write_Execute constant... 44 Saved IDs Support option... 21, 96, 121
read d ir() function... 7 scalb() function... 9
read d ir_r() function... 7, 114 scalbln () function... 5
read lin k () function... 8 scalbln f() function... 5
read v() function... 9 scalbln l() function... 5
realloc() function... 6 scalbn () function... 5
realpath () function... 9 scalbn f() function... 5
Realtime Controller System Profile... 3, 55 scalbn l() function... 5
realtime environment profile... 27 scan f() function... 6, 43
Realtime Signals option... 21, 41, 59, 78, 96, SCHED_FIFO constant... 40, 49, 50, 58, 67, 76,
121 85, 95, 103
Realtime System Profiles... 2 sch ed _get_priority_m ax() function... 112,
Realtime_Lang_C99 type... 38, 45, 56, 63, 114, 116
74, 80, 92, 99 sch ed _get_priority_m in () function... 112,
recv() function... 7 114, 116
recvfrom () function... 7 sch ed _getparam () function... 112
recvm sg() function... 7 sch ed _getsch ed u ler() function... 112
regcom p() function... 7 SCHED_RR constant... 40, 50, 58, 67, 76, 85, 95,
regerror() function... 7 103
regexec() function... 7 sch ed _rr_get_in terval() function... 112, 114,
regfree() function... 7 116
Related Open Systems Standards... 123 sch ed _setparam () function... 112
rem ain d er() function... 5 sch ed _setsch ed u ler() function... 112
rem ain d erf() function... 5 sch ed _yield () function... 112, 116
rem ain d erl() function... 5 seed 48() function... 9
Remove subprogram... 12, 122 Seek subprogram... 12
rem ove() function... 7 seek d ir() function... 9
Remove_Directory subprogram... 13 Select option... 12
rem qu e() function... 9 Select option... 122
rem qu o() function... 5 select() function... 7, 52, 70, 88, 107
rem qu of() function... 5 Select_File subprogram... 12, 122
rem qu ol() function... 5 sem _close() function... 113

Copyright © 2004 IEEE. All rights reserved.

Alph a bet ic Topica l In dex 155

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
IEEE Std 1003.13-2003 STANDARDIZED APPLICATION ENVIRONMENT PROFILE (AEP)

sem _d estroy() function... 113 subprogram... 13


sem _getvalu e() function... 113 Set_Terminal_Characteristics
sem _in it() function... 113 subprogram... 11
sem _open () function... 113 Set_User_ID subprogram... 16
sem _post() function... 42, 61, 113 setbu f() function... 6
sem _tim ed w ait() function... 113, 116 setcon text() function... 9
sem _tryw ait() function... 113 setegid () function... 9
sem _u n lin k () function... 113 seten v() function... 8
sem _w ait() function... 113 seteu id () function... 9
Semaphores option... 21, 41, 59, 78, 96, 122 setgid () function... 9
sem ctl() function... 9 setgren t() function... 10
sem get() function... 9 seth osten t() function... 7
sem op() function... 9 setitim er() function... 10
sen d () function... 7 setjm p() function... 5
Send_Break subprogram... 11 setk ey() function... 118
Send_Signal subprogram... 15 setlocale() function... 6
sen d m sg() function... 7 setlogm ask () function... 9
sen d to() function... 7 setn eten t() function... 7
Server Scheduling option... 67 setpgid () function... 7
Set_Allowed_Process_Permissions setpgrp() function... 9
subprogram... 12 setpriority() function... 9
Set_Blocked_Signals subprogram... 15 setprotoen t() function... 7
Set_Buffer subprogram... 14 setpw en t() function... 9
Set_Ceiling_Priority subprogram... setregid () function... 10
120, 121 setreu id () function... 10
Set_Close_On_Exec subprogram... 12 setrlim it() function... 9
Set_Data subprogram... 15 setserven t() function... 7
Set_Environment_Variable setsid () function... 7
subprogram... 16 setsock opt() function... 7
Set_Events subprogram... 121 setstate() function... 9
Set_Family subprogram... 121, 122 setu id () function... 9
Set_File subprogram... 121 setu txen t() function... 10
Set_File_Control subprogram... 12 setvbu f() function... 6
Set_File_Times subprogram... 13 shall
Set_Flags subprogram... 121, 122 terminology... 25
Set_Group_ID subprogram... 16 Shared Memory option... 120
Set_Locking_Policy subprogram... 120, Shared Memory Objects option... 86
121 Shared Memory Objects option... 21, 41, 59,
Set_Notification subprogram... 15 78, 96, 122
Set_Process_Group_Id subprogram... 13 sh m _open () function... 113
Set_Process_Shared subprogram... 120, sh m _u n lin k () function... 113
121 sh m at() function... 9
Set_Protocol_Number subprogram... 121, sh m ctl() function... 9
122 sh m d t() function... 9
Set_Returned_Events subprogram... 121 sh m get() function... 9
Set_Signal subprogram... 15 should
Set_Socket_Group_Owner subprogram... terminology... 25
14 sh u td ow n () function... 7
Set_Socket_Process_Owner sigaction () function... 8, 42, 61
subprogram... 14 sigad d set() function... 8, 42, 61
Set_Socket_Type subprogram... 121, 122 sigaltstack () function... 9
Set_Stopped_Child_Signal sigdelset function... 42

Copyright © 2004 IEEE. All rights reserved.

156 Alph a bet ic Topica l In dex

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
POSIX REALTIME AND EMBEDDED APPLICATION SUPPORT IEEE Std 1003.13-2003

sigd elset() function... 8, 61 sran d () function... 6


sigem ptyset() function... 8, 42, 61 sran d 48() function... 9
sigfillset() function... 8, 42, 61 sran d om () function... 9
sigh old () function... 9 sscan f() function... 6
sigign ore() function... 9 standard
sigin terru pt() function... 9 base... 26
sigism em ber() function... 8, 42, 61 stat() function... 7
siglon gjm p() function... 8 statvfs() function... 9
Signal type... 15 std err() variable... 6
sign al() function... 8, 42, 61 std in () variable... 6
Signal_Event type... 15 std ou t() variable... 6
Signal_Info type... 122 Stopped_Child_Signal_Enabled
sign bit() function... 5 subprogram... 13
sign gam () variable... 9 strcasecm p() function... 9
sigpau se() function... 9 strcat() function... 6
sigpen d in g() function... 8, 42, 61 strch r() function... 6
sigprocm ask () function... 8, 42, 61 strcm p() function... 6
sigqu eu e() function... 42, 61, 112 strcoll() function... 6
sigrelse() function... 9 strcpy() function... 6
sigset type... 9 strcspn () function... 6
sigset() function... 42, 61 strd u p() function... 9
sigsetjm p() function... 8 strerror() function... 6
sigsu spen d () function... 8 strerror_r() function... 6, 114
sigtim ed w ait() function... 112 strfm on () function... 9
sigw ait() function... 8 strftim e() function... 6
sigw aitin fo() function... 112 Strictly Conforming Application... 35
sin () function... 5 strings utility... 119
sin f() function... 5 strip utility... 119
sin h () function... 5 strlen () function... 6
sin h f() function... 5 strn casecm p() function... 9
sin h l() function... 5 strn cat() function... 6
sin l() function... 5 strn cm p() function... 6
sleep() function... 7, 51, 68, 86, 105 strn cpy() function... 6
sn prin tf() function... 6 strpbrk () function... 6
sock atm ark () function... 7 strptim e() function... 9
sock et() function... 7 strrch r() function... 6
sock etpair() function... 7 strspn () function... 6
Sockets Detailed option... 121 strstr() function... 6
Sockets Detailed Network Interface strtod () function... 6
option... 14 strtof() function... 6
Sockets Detailed Network Interface strtoim ax() function... 6
option... 122 strtok () function... 6
spawn option... 64 strtok _r() function... 6, 114
Special_Control_Character_Of strtol() function... 6
subprogram... 11 strtold () function... 6
split utility... 119 strtoll() function... 6
Sporadic Server Scheduling option... 49, 85, strtou l() function... 6
103 strtou ll() function... 6
sprin tf() function... 6 strtou m ax() function... 6
sqrt() function... 5 strxfrm () function... 6
sqrtf() function... 5 Subprofiling Option Group... 28
sqrtl() function... 5 subprogram

Copyright © 2004 IEEE. All rights reserved.

Alph a bet ic Topica l In dex 157

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
IEEE Std 1003.13-2003 STANDARDIZED APPLICATION ENVIRONMENT PROFILE (AEP)

Accessibility... 13 Flow... 11
Add... 12, 122 For_Every_Current_Environment_
Add_All_Signals... 15 Variable... 16
Add_Signal... 15 For_Every_Directory_Entry... 13
Argument_List... 16 For_Every_Environment_Variable
Await_Signal... 15, 121 ... 16
Await_Signal_Or_Timeout... 15, 121 For_Every_File_In... 12
Bits_Per_Character_Of... 11 For_Every_Item... 121, 122
Block_Signals... 15 Generic_Read... 11
Blocked_Signals... 15 Generic_Write... 11
Change_Owner_And_Group... 12 Get... 44
Change_Permissions... 12, 120 Get_Allowed_Process_Permission
Change_Protection... 120 s... 12
Change_Working_Directory... 13 Get_Buffer... 14
Clear_Environment... 16 Get_Canonical_Name... 121, 122
Close... 11 Get_Ceiling_Priority... 120, 121
Copy_Environment... 16 Get_Close_On_Exec... 12
Copy_From_Current_Environment... Get_Controlling_Terminal_Name...
16 11
Copy_To_Current_Environment... Get_Data... 15
16 Get_Effective_Group_ID... 16
Create... 45 Get_Effective_User_ID... 16
Create_Directory... 13 Get_Events... 121
Create_FIFO... 12 Get_Family... 121, 122
Create_Pipe... 14 Get_File... 121
Create_Process_Group... 13 Get_File_Control... 12
Create_Session... 16 Get_Flags... 121, 122
Define_Bits_Per_Character... 11 Get_Groups... 16
Define_Input_Baud_Rate... 11 Get_Locking_Policy... 120, 121
Define_Input_Time... 11 Get_Login_Name... 16
Define_Minimum_Input_Count... 11 Get_Notification... 15
Define_Output_Baud_Rate... 11 Get_Owner... 14
Define_Special_Control_Charact Get_Parent_Process_Id... 14
er... 11 Get_Process_Group_ID... 16
Define_Terminal_Modes... 11 Get_Process_Group_Id... 13
Delete... 45 Get_Process_Id... 14
Delete_All_Signals... 15 Get_Process_Shared... 120, 121
Delete_Environment_Variable... Get_Protocol_Number... 121, 122
16 Get_Real_Group_ID... 16
Delete_Signal... 15 Get_Real_User_ID... 16
Disable_Control_Character... 11 Get_Returned_Events... 121
Disable_Queueing... 121 Get_Signal... 15
Discard_Data... 11 Get_Socket_Address_Info... 121,
Drain... 11 122
Duplicate... 12 Get_Socket_Type... 121, 122
Duplicate_And_Close... 12 Get_Terminal_Characteristics...
Enable_Queueing... 121 11
Environment_Value_Of... 16 Get_Terminal_Name... 11
Existence... 13 Get_Working_Directory... 13
File_Position... 12 Ignore_Signal... 15
File_Size... 12 Image... 10, 42, 60, 78, 97
Filename_Of... 13 In_Set... 12, 122

Copyright © 2004 IEEE. All rights reserved.

158 Alph a bet ic Topica l In dex

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
POSIX REALTIME AND EMBEDDED APPLICATION SUPPORT IEEE Std 1003.13-2003

Input_Baud_Rate_Of... 11 s... 79
Input_Time_Of... 11 Put... 44
Install_Empty_Handler... 15 Queue_Signal... 121
Interrupt_Task... 15 Read... 11, 44
Is_A_Terminal... 11 Remove... 12, 122
Is_Accessible... 13 Remove_Directory... 13
Is_Block_Special_File... 13 Rename... 13
Is_Character_Special_File... 13 Seek... 12
Is_Directory... 13 Select_File... 12, 122
Is_Environment_Variable... 16 Send_Break... 11
Is_FIFO... 13 Send_Signal... 15
Is_File... 13 Set_Allowed_Process_Permission
Is_File_Present... 13 s... 12
Is_Ignored... 15 Set_Blocked_Signals... 15
Is_Member... 15 Set_Buffer... 14
Is_Open... 11 Set_Ceiling_Priority... 120, 121
Is_Socket... 13 Set_Close_On_Exec... 12
Length... 16 Set_Data... 15
Link... 13 Set_Environment_Variable... 16
Lock_Shared_Memory... 122 Set_Events... 121
Make_Empty... 12 Set_Family... 121, 122
Map_Memory... 120 Set_File... 121
Minimum_Input_Count_Of... 11 Set_File_Control... 12
Open... 11, 44 Set_File_Times... 13
Open_Or_Create... 13 Set_Flags... 121, 122
Output_Baud_Rate_Of... 11 Set_Group_ID... 16
Pending_Signals... 15 Set_Locking_Policy... 120, 121
Poll... 121 Set_Notification... 15
POSIX_Configurable_System_Limi Set_Process_Group_Id... 13
ts.System_POSIX_Ada_Vers Set_Process_Shared... 120, 121
ion... 43, 62, 79 Set_Protocol_Number... 121, 122
POSIX_Configurable_System_Limi Set_Returned_Events... 121
ts.System_POSIX_Version... Set_Signal... 15
43, 61, 79 Set_Socket_Group_Owner... 14
POSIX_IO.Generic_Read... 44 Set_Socket_Process_Owner... 14
POSIX_IO.Generic_Write... 44 Set_Socket_Type... 121, 122
POSIX_IO.Open... 44 Set_Stopped_Child_Signal... 13
POSIX_IO.Open_Or_Create... 44 Set_Terminal_Characteristics...
POSIX_IO.Read... 44 11
POSIX_IO.Write... 44 Set_User_ID... 16
Posix_Process_Primitives.Start Special_Control_Character_Of...
_Process... 79 11
Posix_Process_Primitives.Start Stopped_Child_Signal_Enabled...
_Process_Search... 79 13
POSIX_Signals.Set_Stopped_Chil Synchronize_Data... 120, 122
d_Signal... 22, 41, 60, 78 Synchronize_File... 120
POSIX_Signals.Stopped_Child_Si Synchronize_Memory... 120, 122
gnal_Enabled... 22, 41, 60, 78 Terminal_Modes_Of... 11
POSIX_Terminal_Functions.Disab Truncate_File... 120, 122
le_Control_Character... 22, Unblock_Signals... 15
96 Unignore_Signal... 15
Posix_Unsafe_Process_Primitive Unlink... 13

Copyright © 2004 IEEE. All rights reserved.

Alph a bet ic Topica l In dex 159

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
IEEE Std 1003.13-2003 STANDARDIZED APPLICATION ENVIRONMENT PROFILE (AEP)

Unlock_Shared_Memory... 122 tgam m af() function... 5


Unmap_Memory... 120 tgam m al() function... 5
Value... 10, 42, 60, 78, 97 time utility... 119
Write... 11, 44 tim e() function... 6, 42, 61
Summary of Profile Features... 17 Timeouts option... 51, 69, 87, 105
sw ab() function... 9 tim er_create() function... 116
sw apcon text() function... 9 tim er_d etele() function... 116
sw prin tf() function... 6 tim er_getoverru n () function... 42, 61, 116
sw scan f() function... 6 tim er_gettim e() function... 42, 61, 116
sym lin k () function... 8 TIME R_MAX limit... 40, 58, 76, 94
syn c() function... 9 tim er_settim e() function... 42, 61, 116
Synchronize_Data subprogram... 120, 122 Timers option... 21, 41, 59, 78, 96, 122
Synchronize_File subprogram... 120 tim es() function... 7, 42, 61
Synchronize_Memory subprogram... 120, tim ezon e() variable... 9
122 tm pfile() function... 7
Synchronized I/O option... 21, 41, 59, 78, 96, tm pn am () function... 7
120, 122 toascii() function... 9
syscon f() function... 8, 42, 43, 61, 79 tolow er() function... 6
syslog() function... 9 tou pper() function... 6
system documentation... 28 tow ctran s() function... 6
System package... 10 tow low er() function... 6
system profile... 28 tow u pper() function... 6
system () function... 8 tput utility... 119
System_Storage_Elements package... 10 Trace Event Filtering option... 70, 87, 106
Trace Log option... 70, 88, 106
True..True constant... 37, 38, 41, 45, 46,
T 55, 56, 59, 63, 73, 74, 77, 80, 81, 91, 92, 96,
99, 109
tabs utility... 119 tru n c() function... 5
talk utility... 119 tru n cate() function... 9
tan () function... 5 Truncate_File subprogram... 120, 122
tan f() function... 5 tru n cf() function... 5
tan h () function... 5 tru n cl() function... 5
tan h f() function... 5 tsearch () function... 9
tan h l() function... 5 ttyn am e() function... 7
tan l() function... 5 ttyn am e_r() function... 7, 114
tcd rain () function... 7 tw alk () function... 9
tcflow () function... 7 type
tcflu sh () function... 7 Boolean... 37, 38, 55, 56, 73, 74, 91, 92,
tcgetattr() function... 7 109
tcgetpgrp() function... 7 FIL E *... 48, 65, 83, 101
tcgetsid () function... 9 lon g ... 94
tcsen d break () function... 7 off_t ... 94
tcsetattr() function... 7 POSIX_Limits.Child_Processes_M
tcsetpgrp() function... 7 axima’First... 96
td elete() function... 9 POSIX_Limits.Groups_Maxima’Fir
telld ir() function... 9 st... 96
tem pn am () function... 9 POSIX_Limits.Realtime_Signals_
Terminal_Modes_Of subprogram... 11 Maxima’First... 41, 59, 78, 97
Terminology... 25 POSIX_Limits.Timers_Maxima’Fir
tfin d () function... 9 st... 41, 59, 78, 97
tgam m a() function... 5 POSIX_Profiles.... 38, 45, 56, 63, 74,

Copyright © 2004 IEEE. All rights reserved.

160 Alph a bet ic Topica l In dex

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
POSIX REALTIME AND EMBEDDED APPLICATION SUPPORT IEEE Std 1003.13-2003

80, 92, 99 POSIX_DEVICE_SPECIFIC... 7, 11, 17,


POSIX_Profiles.Realtime_Contro 93, 95
ller... 55 POSIX_EVENT_MGMT... 7, 12, 17, 75,
POSIX_Profiles.Realtime_Dedica 77, 93, 95
ted... 73 POSIX_FD_MGMT... 7, 12, 17, 48, 57,
POSIX_Profiles.Realtime_Lang_A 59, 75, 77, 93, 95
da95... 38, 46, 56, 63, 74, 81, 92, POSIX_FIFO... 7, 12, 17, 48, 65, 83, 93,
99 95
POSIX_Profiles.Realtime_Minima POSIX_FILE_ATTRIBUTES... 7, 12,
l... 37 17, 48, 65, 83, 93, 95
POSIX_Profiles.Realtime_Multi... POSIX_FILE_LOCKING... 7, 17, 39, 40,
91 57, 75, 93
Realtime_Lang_C99... 38, 45, 56, 63, POSIX_FILE_SYSTEM... 7, 13, 17, 48,
74, 80, 92, 99 57, 59, 75, 77, 93, 95
Signal... 15 POSIX_FILE_SYSTEM_EXT... 7, 17,
Signal_Event... 15 48, 65, 83, 93
Signal_Info... 122 POSIX_JOB_CONTROL... 7, 13, 17, 22,
sigset ... 9 93, 96
tzn am e() variable... 6 POSIX_MULTI_PROCESS... 7, 14, 17,
tzset() function... 6 75, 77, 93, 96
POSIX_NETWORKING... 7, 14, 17, 75,
77, 93, 96
U POSIX_PIPE... 7, 17, 75, 77, 93, 96
POSIX_PIPES... 14
u alarm () function... 9 POSIX_REGEXP... 7, 17, 52, 70, 88, 93,
u lim it() function... 9 107
u m ask () function... 7 POSIX_RW_LOCKS... 8, 10, 17
unalias utility... 119 POSIX_SHELL_FUNC... 8, 17, 52, 70,
u n am e() function... 8, 42, 61 88, 93, 107
Unblock_Signals subprogram... 15 POSIX_SIGNAL_JUMP... 8, 17, 75, 93
Unbounded Priority Inversion... 28 POSIX_SIGNALS... 8, 15, 17, 39, 40, 57,
undefined... 34 59, 75, 77, 93, 96
terminology... 26 POSIX_SINGLE_PROCESS... 8, 15, 17,
unexpand utility... 119 39, 40, 57, 59, 75, 77, 93, 96
u n getc() function... 6 POSIX_STRING_MATCHING... 8, 17,
u n getw c() function... 9 93
Unignore_Signal subprogram... 15 POSIX_SYMBOLIC_LINKS... 8, 17, 93
Unit of Functionality... 28 POSIX_SYSTEM_DATABASE... 8, 16,
POSIX_ADA_LANG_SUPPORT... 10, 17, 93, 96
17, 40, 59, 77, 95 POSIX_THREADS_BASE... 8, 10, 17,
POSIX_C_LANG_JUMP... 5, 17, 39, 57, 39, 52, 57, 69, 75, 87, 93, 106
75, 93 POSIX_USER_GROUPS... 9, 16, 17, 93,
POSIX_C_LANG_MAT... 57 96
POSIX_C_LANG_MATH... 5, 17, 53, 75, POSIX_WIDE_CHAR_IO... 9, 17, 93
93 XSI_C_LANG_SUPPORT... 9, 18, 53,
POSIX_C_LANG_SUPPOR... 57 70, 88, 107
POSIX_C_LANG_SUPPORT... 6, 17, 39, XSI_DBM... 9, 18, 53, 70, 88, 107
75, 93 XSI_DEVICE_IO... 9, 18, 53, 70, 88, 107
POSIX_C_LANG_WIDE_CHAR... 6, 17, XSI_DEVICE_SPECIFIC... 9, 18, 53, 70,
53, 71, 89, 93 88, 107
POSIX_DEVICE_IO... 6, 11, 17, 39, 40, XSI_DYNAMIC_LINKING... 9, 18, 53,
57, 59, 75, 77, 93, 95 70, 88, 93, 107

Copyright © 2004 IEEE. All rights reserved.

Alph a bet ic Topica l In dex 161

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
IEEE Std 1003.13-2003 STANDARDIZED APPLICATION ENVIRONMENT PROFILE (AEP)

XSI_FD_MGMT... 9, 18, 53, 70, 88, 107 du... 119


XSI_FILE_SYSTEM... 9, 18, 53, 70, 88, ex... 119
107 expand... 119
XSI_I18N... 9, 18, 53, 71, 89, 107 fc... 119
XSI_IPC... 9, 18, 53, 70, 88, 107, 118 fg... 119
XSI_JOB_CONTROL... 9, 18, 53, 70, 88, file... 119
107 fort77... 119
XSI_JUMP... 9, 18, 53, 70, 88, 107 fsck... xvi
XSI_MATH... 9, 18, 53, 70, 88, 107 jobs... 119
XSI_MULTI_PROCESS... 9, 18, 53, 70, lex... 119
88, 107 make... 119
XSI_SIGNALS... 9, 18, 53, 70, 88, 107 mesg... 119
XSI_SINGLE_PROCESS... 9, 18, 53, 70, more... 119
88, 107 newgrp... 119
XSI_SYSTEM_DATABASE... 9, 18, 53, nice... 119
70, 88, 107 nm... 119
XSI_SYSTEM_LOGGING... 9, 18, 53, patch... 119
71, 89, 93, 107 ps... 119
XSI_THREAD_MUTEX_EXT... 10, 18, qalter... 119
39, 53, 57, 71, 75, 89, 93, 107 qdel... 119
XSI_THREADS_EXT... 10, 18, 39, 53, qhold... 119
57, 71, 75, 89, 93, 107 qmove... 119
XSI_TIMERS... 10, 18, 53, 70, 88, 107 qmsg... 119
XSI_USER_GROUPS... 10, 18, 53, 70, qrerun... 119
88, 107 qrls... 119
XSI_WIDE_CHAR... 10, 18, 53, 70, 88, qselect... 119
107 qsig... 119
Units of Functionality... 4 qstat... 119
Unlink subprogram... 13 qsub... 119
u n lin k () function... xv, 7 renice... 119
Unlock_Shared_Memory subprogram... split... 119
122 strings... 119
u n lock pt() function... 9 strip... 119
Unmap_Memory subprogram... 120 tabs... 119
u n seten v() function... 8 talk... 119
unspecified... 34, 35 time... 119
terminology... 26 tput... 119
Use_Error exception... 44, 62, 80 unalias... 119
u sleep() function... 9 unexpand... 119
utility uudecode... 119
alias... 119 uuencode... 119
ar... 119 vi... 119
asa... 119 who... 119
at... 119 write... 119
batch... 119 yacc... 119
bg... 119 u tim e() function... 7
c99... 119 u tim es() function... 118
command... 119 uudecode utility... 119
crontab... 119 uuencode utility... 119
csplit... 119
ctags... 119
df... 119

Copyright © 2004 IEEE. All rights reserved.

162 Alph a bet ic Topica l In dex

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
POSIX REALTIME AND EMBEDDED APPLICATION SUPPORT IEEE Std 1003.13-2003

V w cslen () function... 6
w csn cat() function... 6
va_arg() function... 6 w csn cm p() function... 6
va_copy() function... 6 w csn cpy() function... 6
va_en d () function... 6 w cspbrk () function... 6
va_start() function... 6 w csrch r() function... 6
Value subprogram... 10, 42, 60, 78, 97 w csrtom bs() function... 6
variable w csspn () function... 6
d ayligh t()... 9 w csstr() function... 6
en viron ()... 8 w cstod () function... 6
errn o()... 8 w cstof() function... 6
h _errn o()... 7 w cstoim ax() function... 6
optarg()... 8 w cstok () function... 6
opterr()... 8 w cstol() function... 6
optin d ()... 8 w cstold () function... 6
optopt()... 8 w cstoll() function... 6
sign gam ()... 9 w cstom bs() function... 6
std err()... 6 w cstou l() function... 6
std in ()... 6 w cstou ll() function... 6
std ou t()... 6 w cstou m ax() function... 6
tim ezon e()... 9 w csw cs() function... 118
tzn am e()... 6 w csw id th () function... 10
vfork () function... 9 w csxfrm () function... 6
vfprin tf() function... 6, 43 w ctob() function... 6
vfscan f() function... 6, 43 w ctom b() function... 6
vfw prin tf() function... 9 w ctran s() function... 6
vfw scan f() function... 9 w ctype() function... 6
vi utility... 119 w cw id th () function... 10
vprin tf() function... 6, 43 who utility... 119
vscan f() function... 6, 43 w m em ch r() function... 6
vsn prin tf() function... 6 w m em cm p() function... 6
vsprin tf() function... 6 w m em cpy() function... 6
vsscan f() function... 6 w m em m ove() function... 6
vsw prin tf() function... 6 w m em set() function... 6
vsw scan f() function... 6 w ord exp() function... 8
vw prin tf() function... 9 w ord free() function... 8
vw scan f() function... 9 w prin tf() function... 9
Write subprogram... 11, 44
write utility... 119
W w rite() function... xiv, xv, 6, 43
w ritev() function... 9
w ait() function... 7 w scan f() function... 9
w aitid () function... 9
w aitpid () function... 7
w crtom b() function... 6 X
w cscat() function... 6
w csch r() function... 6 XSI_C_LANG_SUPPORT Unit of
w cscm p() function... 6 Functionality... 9, 18, 53, 70, 88, 107
w cscoll() function... 6 XSI_DBM Unit of Functionality... 9, 18, 53,
w cscpy() function... 6 70, 88, 107
w cscspn () function... 6 XSI_DEVICE_IO Unit of Functionality... 9,
w csftim e() function... 6 18, 53, 70, 88, 107

Copyright © 2004 IEEE. All rights reserved.

Alph a bet ic Topica l In dex 163

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.
IEEE Std 1003.13-2003 STANDARDIZED APPLICATION ENVIRONMENT PROFILE (AEP)

XSI_DEVICE_SPECIFIC Unit of Functionality... 9, 18, 53, 70, 88, 107


Functionality... 9, 18, 53, 70, 88, 107 XSI_SYSTEM_LOGGING Unit of
XSI_DYNAMIC_LINKING Unit of Functionality... 9, 18, 53, 71, 89, 93, 107
Functionality... 9, 18, 53, 70, 88, 93, 107 XSI_THREAD_MUTEX_EXT Unit of
XSI_FD_MGMT Unit of Functionality... 9, Functionality... 10, 18, 39, 53, 57, 71, 75,
18, 53, 70, 88, 107 89, 93, 107
XSI_FILE_SYSTEM Unit of XSI_THREADS_EXT Unit of
Functionality... 9, 18, 53, 70, 88, 107 Functionality... 10, 18, 39, 53, 57, 71, 75,
XSI_I18N Unit of Functionality... 9, 18, 53, 89, 93, 107
71, 89, 107 XSI_TIMERS Unit of Functionality... 10, 18,
XSI_IPC Unit of Functionality... 9, 18, 53, 70, 53, 70, 88, 107
88, 107, 118 XSI_USER_GROUPS Unit of
XSI_JOB_CONTROL Unit of Functionality... 10, 18, 53, 70, 88, 107
Functionality... 9, 18, 53, 70, 88, 107 XSI_WIDE_CHAR Unit of Functionality...
XSI_JUMP Unit of Functionality... 9, 18, 53, 10, 18, 53, 70, 88, 107
70, 88, 107 XTI Detailed Network Interface option...
XSI_MATH Unit of Functionality... 9, 18, 53, 122
70, 88, 107
XSI_MULTI_PROCESS Unit of
Functionality... 9, 18, 53, 70, 88, 107 Y
XSI_SIGNALS Unit of Functionality... 9, 18,
53, 70, 88, 107 y0() function... 9
XSI_SINGLE_PROCESS Unit of y1() function... 9
Functionality... 9, 18, 53, 70, 88, 107 yacc utility... 119
XSI_SYSTEM_DATABASE Unit of yn () function... 9

Copyright © 2004 IEEE. All rights reserved.

164 Alph a bet ic Topica l In dex

Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.

You might also like