IEEE Standard For POSIX Realtime and Embedded Application
IEEE Standard For POSIX Realtime and Embedded Application
13™-2003
(Revision of
IEEE Standards IEEE Std 1003.13-1998)
1003.13 TM
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)
Sponsor
Portable Applications Standards Committee
of the
IEEE Computer Society
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
IEEE is a registered trademark in the U.S. Patent & Trademark Office, owned by the Institute of Electrical and Elec-
tronics Engineers, Incorporated.
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
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 5: Conformance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
5.1 Conformance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
5.1.1 Implementation Conformance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
5.1.2 Application Conformance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
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
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
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
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
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
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.)
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.
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.
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
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
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
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
Memory Protection
Multiprocessor Support
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
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
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).
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/).
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
Patents
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:
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
Working Group
At the time this standard was completed, the IEEE System Services Working
Group—Realtime had the following members:
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
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:
Savoula Amanatidis
IEEE Standards Managing Editor
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:
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
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:
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
*Member Emeritus
Noelle Humenick
IEEE Standards Project Editor
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
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)
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
This standard describes four realtime profiles and their minimum hardware
requirements.
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
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).
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.
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
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.
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}.
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.
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
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 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
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 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
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)
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
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)
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
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.
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)
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
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)
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
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.
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)
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
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 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.
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
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)
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
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/).
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
3.1 Terminology
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.2 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.12 Interface Profile: An OSE Profile defining one interface of the Open Sys-
tem Environment. [ISO/IEC TR 10000-3:1998 {7}]
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 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)
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.
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
4.1 Conventions
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
4.2.17 PSE5X: Any one of the PSE51, PSE52, PSE53, or PSE54 profiles.
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.1 Requirements
5.1.1.2 Documentation
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.
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}.
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 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
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
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)
6.1.3 Options
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.
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
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)
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.
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 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.
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.
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) 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.
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)
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.
One or more of the development options in 6.5.1 and 6.5.2 shall be implemented.
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 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>.
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.
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
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.
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.
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
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 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.
POSIX.1 Device- or Class-Specific functions are not required, because small em-
bedded systems usually do not require general-purpose terminal interfaces.
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.
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.
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.
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.
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
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
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).
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
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.
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.
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
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.
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)
Support for the Ada language-specific services defined in POSIX.5c {5} is required
in the Ada language option.
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.
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.
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
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
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
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.
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
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)
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
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.
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.
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 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.
1) Conformance to this profile can be checked with the symbols defined in 7.1.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)
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.
One or more of the development options in 7.5.1 and 7.5.2 shall be implemented.
2) Conformance to this profile can be checked with the subtypes defined in 7.1.3.
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 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>.
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.
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.
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.
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 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.
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.
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.
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.1 Device- or Class-Specific functions are not required, because PSE52 sys-
tems usually do not require general-purpose terminal interfaces.
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
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.
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
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.
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.
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
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.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.
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.
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.
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
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.
Support for the Ada language-specific services defined in POSIX.5c {5} is required
in the Ada language option.
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.
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)
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
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
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
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.
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
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)
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
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)
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 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.
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.
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)
One or more of the development options in 8.5.1 and 8.5.2 shall be implemented.
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 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>.
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.
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.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.
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.
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
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.
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.
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)
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
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
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
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.
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.
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
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.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.
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
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.
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.
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.
Support for the Ada language-specific services defined in POSIX.5c {5} is required
in the Ada language option.
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.
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 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.
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
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
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
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.
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
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 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.
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.
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)
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 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.
This profile has no constraints on the application related to POSIX.1 interfaces, be-
cause it requires the implementation to be POSIX.1 conforming.
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)
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.
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
One or more of the development options in 9.5.1 and 9.5.2 shall be implemented.
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>.
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)
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.
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.
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 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.
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.
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.
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)
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.
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.
The group and user database access functions are required for COTS database ap-
plications that may require them.
9.6.1.9 Synchronization
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
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 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
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
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).
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.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
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.
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 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.
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.
Full support for the C99 Standard {2} is required in the C language option.
Support for the Ada language-specific services defined in POSIX.5c {5} is required
in the Ada language option.
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.
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
-- 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>;
-- Version constant
Realtime_AEP_Version : constant := 2003_12;
end POSIX_Profiles;
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
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.
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)
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
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)
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
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)
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()
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
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)
_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}:
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}:
_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
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 shows the subprograms included under each of the options specified in
POSIX.5c {5}:
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
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)
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.
{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.
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.
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
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
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
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)
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
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)
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
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)
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
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)
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
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)
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
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)
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
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)
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
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)
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
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)
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
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)
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
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)
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
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)
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
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)
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
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)
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
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)
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
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
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
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)
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
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)
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
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)
Authorized licensed use limited to: EPFL LAUSANNE. Downloaded on November 06,2016 at 01:52:35 UTC from IEEE Xplore. Restrictions apply.