IEEE Std 1003.5b-1996 and (Includes IEEE Std 1003.5-1992) IEEE Standard for Information Technology— POSIX® Ada Language Interfaces— Part 1: Binding for System Application Program Interface (API)— Amendment 1: Realtime Extensions -Description
Abstract: This standard is part of the POSIX series of standards for applications and user interfaces to open systems. It defines the Ada language bindings as package specifications and accompanying textual descriptions of the application program interface (API). This standard supports application portability at the source code level through the binding between ISO 8652: 1987 (Ada) and ISO/IEC 9945-1: 1990 (IEEE Std 1003.1-1990) (POSIX), as amended by IEEE Std 1003.1b-1993, IEEE Std 1003.1c-1995, and IEEE Std 1003.1i-1995. Terminology and general requirements, process primitives, the process environment, files and directories, input and output primitives, device- and class-specific functions, language-specific services for Ada, system databases, synchronization, memory management, execution scheduling, clocks and timers, and message passing are covered. It also specifies behavior to support the binding that must be provided by the Ada compilation system.
Keywords: Ada, API application portability, computer language bindings, open systems, operating systems, portable application, POSIX, POSIX language bindings, real-time, thread
Content
1. General
1.1 Scope
1.2 Normative Cross-References
1.3 Conformance
1.3.1 Implementation Conformance
1.3.2 Application Conformance
2. Terminology and General Requirements
2.1 Editorial Conventions
2.2 Definitions
2.2.1 Terminology
2.2.2 General Terms
2.2.3 Abbreviations
2.3 General Concepts
2.3.1 Process/Active Partition Relationship
2.3.2 Task/Thread Relationship
2.3.3 Ada Character Differences
2.3.4 Posix Signals Are Not Interrupts
2.3.5 System Call Exception Errors
2.3.6 Extended Security Controls
2.3.7 File Access Permissions
2.3.8 File Hierarchy
2.3.9 Filename Portability
2.3.10 File Times Update
2.3.11 Pathname Resolution
2.3.12 Allocated Storage
2.4 Package POSIX
2.4.1 Constants and Static Subtypes
2.4.2 POSIX Characters
2.4.3 POSIX Strings
2.4.4 String Lists
2.4.5 Option Sets
2.4.6 Error Codes and Exceptions
2.4.7 System Identification
2.4.8 Time Types
2.5 Package POSIX_Options
2.5.1 Implementation Options
2.6 Package POSIX_Limits
2.6.1 Implementation Limits
2.7 Package Ada_Streams
2.8 Package System
2.9 Package System_Storage_Elements
2.10 Package POSIX_Page_Alignment
2.10.1 Description
2.10.2 Error Handling
2.11 Environment Description
2.11.1 Time-Zone Information
3. Process Primitives
3.1 Package POSIX_Process_Primitives
3.1.1 Process Template
3.1.2 Process Creation
3.1.3 Process Exit
3.1.4 Termination Status
3.1.5 Wait for Process Termination
3.2 Package POSIX_Unsafe_Process_Primitives
3.2.1 Process Creation
3.2.2 File Execution
3.3 Package POSIX_Signals
3.3.1 Signal Model
3.3.2 Signal Type
3.3.3 Standard Signals
3.3.4 Default Signal Actions
3.3.5 Tasking Safety
3.3.6 Interruptibility
3.3.7 Signal Sets
3.3.8 Block and Unblock Signals
3.3.9 Ignore Signals
3.3.10 Controlling Generation of Signal for Child Process
3.3.11 Examine Pending Signals
3.3.12 Signal Event Notification
3.3.13 Signal Information
3.3.14 Control Signal Queueing
3.3.15 Wait for Signal
3.3.16 Wait for Signal with Information
3.3.17 Signal Entries
3.3.18 Send a Signal
3.3.19 Queue a Signal
3.3.20 Interrupt a Task
4. Process Environment
4.1 Package POSIX_Process_Identification
4.1.1 Process Identification Operations
4.1.2 Process Group Identification
4.1.3 User Identification
4.1.4 User and Group Identification
4.2 Package POSIX_Process_Times
4.2.1 Process Time Accounting
4.3 Package POSIX_Process_Environment
4.3.1 Argument List
4.3.2 Environment Variables
4.3.3 Process Working Directory
4.4 Package POSIX_Calendar
4.4.1 Time Information
4.4.2 Operations on POSIX Times
4.5 Package POSIX_Configurable_System_Limits
4.5.1 Get Configurable System Options
4.5.2 Get Configurable System Limits
5. Files and Directories
5.1 Package POSIX_Permissions
5.1.1 File Permissions
5.1.2 Process Permission Set
5.2 Package POSIX_Files
5.2.1 Create and Remove Files
5.2.2 Inquiries on File Types
5.2.3 Modify File Pathnames
5.2.4 Directory Iteration
5.2.5 Update File Status Information
5.2.6 Check File Accessibility
5.3 Package POSIX_File_Status
5.3.1 Access File Status
5.3.2 Access Status Information
5.4 Package POSIX_Configurable_File_Limits
5.4.1 File Limits
5.4.2 File Restrictions
5.4.3 Pathname-Specific Options
6. Input and Output Primitives
6.1 Package POSIX_IO
6.1.1 Open or Create a File
6.1.2 I/O Buffer Type
6.1.3 Read from a File
6.1.4 Write to a File
6.1.5 File Position Operations
6.1.6 Terminal Operations
6.1.7 File Control
6.1.8 Update File Status Information
6.1.9 Truncate File to A Specified Length
6.1.10 Synchronize a File's State
6.1.11 Data Synchronization
6.2 Package POSIX_File_Locking
6.2.1 Lock and Unlock a Region of a File
6.3 Package POSIX_Asynchronous_IO
6.3.1 AIO Descriptor Type
6.3.2 Attributes of AIO Control Blocks
6.3.3 Asynchronous Read
6.3.4 Asynchronous Write
6.3.5 List Directed I/O
6.3.6 Retrieve Status of Asynchronous I/O Request
6.3.7 Retrieve Bytes Transferred by Asynchronous I/O Request
6.3.8 Cancel Asynchronous I/O Request
6.3.9 Wait for Asynchronous I/O Request to Complete
6.3.10 Asynchronous File and Data Synchronization
7. Device-and Class-Specific Functions
7.1 General Terminal Interface
7.1.1 Interface Characteristics
7.2 Package POSIX_Terminal_Functions
7.2.1 Terminal Characteristics
7.2.2 Input Modes
7.2.3 Output Modes
7.2.4 Control Modes
7.2.5 Local Modes
7.2.6 Retrieve and Define Terminal Modes and Bits per Character
7.2.7 Special Control Characters
7.2.8 Noncanonical Controls
7.2.9 Baud Rate Subprograms
7.2.10 Line Control Operations
7.2.11 Foreground Process Group ID
7.2.12 Generate Terminal Pathname
8. Language-Specific Services for Ada
8.1 Interoperable Ada I/O Services
8.1.1 Requirements
8.1.2 Additional Interpretation of the POSIX.1 Standard
8.2 Package POSIX_Supplement_to_Ada_IO
8.2.1 Parse Form values
8.2.2 Flush Files
9. System Databases
9.1 Package POSIX_User_Database
9.1.1 Access Contents of a User Database Item
9.1.2 Access User Database Items
9.2 Package POSIX_Group_Database
9.2.1 Access Contents of a Group Database Item
9.2.2 Access Elements of the Group Item List of Members
9.2.3 Access Group Database Items
10. Data Interchange Format
11. Synchronization
11.1 Package POSIX_Semaphores
11.1.1 Semaphore and Semaphore Descriptor Types
11.1.2 Initialize an Unnamed Semaphore
11.1.3 Finalize an Unnamed Semaphore
11.1.4 Create/Open a Named Semaphore
11.1.5 Close a Named Semaphore
11.1.6 Remove a Named Semaphore
11.1.7 Decrement a Semaphore
11.1.8 Increment a Semaphore
11.1.9 Get the Value of a Semaphore
11.2 Package POSIX_Mutexes
11.2.1 Mutex Ownership
11.2.2 Mutex and Mutex Descriptor Types
11.2.3 Mutex Attributes Type
11.2.4 Mutex Process Shared Attribute
11.2.5 Mutex Locking Policy Attributes
11.2.6 Initialize and Finalize a Mutex
11.2.7 Change the Ceiling Priority of a Mutex
11.2.8 Lock and Unlock a Mutex
11.3 Package POSIX_Condition_Variables
11.3.1 Condition and Condition Descriptor Types
11.3.2 Condition Variable Attributes Type
11.3.3 Condition Process Shared Attribute
11.3.4 Initialize and Finalize a Condition
11.3.5 Broadcast and Signal a Condition
11.3.6 Wait on a Condition
12. Memory Management
12.1 Package POSIX_Memory_Locking
12.1.1 Lock/Unlock a Process's Address Space
12.2 Package POSIX_Memory_Range_Locking
12.2.1 Lock/Unlock a Range of Process Address Space
12.3 Package POSIX_Memory-Mapping
12.3.1 Map Process Addresses to a Memory Object
12.3.2 Unmap Memory
12.3.3 Change Memory Protection
12.3.4 Memory Object Synchronization
12.4 Package POSIX_Shared_Memory_Objects
12.4.1 Open a Shared Memory Object
12.4.2 Remove a Shared Memory Object
12.5 Package POSIX_Generic_Shared_Memory
12.5.1 Open Shared Memory
12.5.2 Access Shared Memory
12.5.3 Close Shared Memory
12.5.4 Remove Shared Memory
12.5.5 Lock/Unlock Shared Memory
13. Execution Scheduling
13.1 Scheduling Concepts and Terminology
13.2 Package POSIX_Process_Scheduling
13.2.1 Scheduling Parameters
13.2.2 Scheduling Policies
13.2.3 Modify Process Scheduling Policy and Parameters
13.2.4 Process Yield CPU
13.2.5 Get Scheduling Limits
13.3 Task Scheduling
13.3.1 Dynamic Priorities
13.3.2 Task Dispatching Policy Pragma
13.3.3 Task Creation Attributes Pragma
13.3.4 Task Yield CPU
13.4 Synchronization Scheduling
14. Clocks and Timers
14.1 Package POSIX_Timers
14.1.1 Clock and Timer Types
14.1.2 Realtime Clock
14.1.3 Timer State and Timer Options
14.1.4 Clock Operations
14.1.5 Create a Timer
14.1.6 Delete a Timer
14.1.7 Timer Operations
14.2 High Resolution Delay
15. Message Passing
15.1 Package POSIX_Message_Queues
15.1.1 Message Queue Attributes
15.1.2 Open a Message Queue
15.1.3 Close a Message Queue
15.1.4 Remove a Message Queue
15.1.5 Send a Message to a Message Queue
15.1.6 Receive a Message from a Message Queue
15.1.7 Generic Message Passing
15.1.8 Notify Process that a Message is Available
15.1.9 Set/Query Message Queue Attributes
16. Task Management
16.1 Package Ada_Task_Identification
16.1.1 Description
Annex A Bibliography
Annex B Rationale and Notes
B.1 General
B.1.1 Purpose and Audience
B.1.2 Relation to Other POSIX Standards
B.1.3 Ada Language
B.1.4 Implementation Model
B.1.5 Level of Binding
B.1.6 Form of Document
B.1.7 Global Issues
B.1.8 Naming
B.1.9 Mapping C Features to Ada
B.1.10 Conformance
B.2 Terminology and General Requirements
B.2.1 Conventions
B.2.2 Definitions
B.2.3 General Concepts
B.2.4 Package POSIX
B.2.5 Package POSIX_Options
B.2.6 Package POSIX_Limits
B.2.7 Package Ada_Streams
B.2.8 Package system
B.2.9 Package System_Storage_Elements
B.2.10 Package POSIX_Page Alignment
B.2.11 Environment Description
B.3 Process Primitives
B.3.1 Package POSIX_Process_Primitives
B.3.2 Process Creation
B.3.3 Process Exit
B.3.4 Wait for Process Termination
B.3.5 Package POSIX_Unsafe_Process_Primitives
B.3.6 Package POSIX_Signals
B.3.7 Signal Model
B.3.8 Signal Masking and Related Concepts
B.3.9 Tasking Safety
B.3.10 Signal Type
B.3.11 Standard Signals
B.3.12 Signal Sets
B.3.13 Examine and Change Signal Action
B.3.14 Signal Queueing
B.3.15 Signal Notification Model
B.3.16 Examine Pending Signals
B.3.17 Send a Signal
B.3.18 Binding for sigsuspend
B.3.19 Synchronously Accept a Signal
B.3.20 Queue a Signal to a Process
B.3.21 Send a Signal to a Thread
B.3.22 Schedule Alarm
B.3.23 Suspend Process Execution
B.3.24 Delay Process Execution
B.3.25 B.3.25 Task Signal Entries
B.3.26 Composability Considerations
B.4 Process Environment
B.4.1 Organization
B.4.2 Package POSIX_Process_Identification
B.4.3 Package Process_Times
B.4.4 Package POSIX_Process_Environment
B.4.5 Package POSIX_Calendar
B.4.6 Package POSIX_Configurable_System_Limits
B.5 Files and Directories
B.5.1 Organization
B.5.2 Package POSIX_Permissions
B.5.3 Package POSIX_Files
B.5.4 Package POSIX_File_Status
B.5.5 Package POSIX_Configurable_File_Limits
B.5.6 Directory Operations
B.6 Input and Output Primitives
B.6.1 Package POSIX_IO
B.6.2 Package POSIX_File_Locking
B.6.3 Package POSIX_Asynchronous_IO
B.7 Device- and Class-Specific Functions
B.8 Language-Specific Services for Ada
B.8.1 General Rationale
B.8.2 Limitations on Interoperability
B.8.3 Rationale for Form Parameter
B.8.4 Unaffected Implementation Dependencies
B.8.5 Notes on Specific Topics
B.9 System Databases
B.9.1 Requirements from POSIX.1
B.9.2 Rationale for the Current Design
B.10 Data Interchange Format
B.11 Synchronization
B.11.1 Package POSIX_Semaphores
B.11.2 Mutexes & Condition Variables
B.12 Memory Management
B.12.1 Process Memory Locking
B.12.2 Package POSIX_Memory_Mapping
B.12.3 Package POSIX_Shared_Memory_Objects
B.12.4 Package POSIX_Generic_Shared_Memory
B.13 Priority Process Scheduling
B.13.1 Scheduling Concepts and Terminology
B.13.2 Package POSIX_Process_Scheduling
B.13.3 Task Scheduling
B.13.4 Synchronization Scheduling
B.13.5 Thread Scheduling Pragmas vs. Environment Variables