CONTENTS Title Page Copyright Page Preface 1 Scope 2 Definitions and General Requirements 2.1 Terminology 2.2 Conventions 2.2.1 Function and Type Names 2.3 Conformance 2.3.1 Implementation Conformance 2.3.1.1 Requirements 2.3.1.2 Documentation 2.3.1.3 Performance Measurement Documentation 2.3.2 Application Conformance 2.3.2.1 Strictly Conforming POSIX.4a Application 2.3.2.2 Conforming POSIX.4a Application 2.3.2.3 Conforming POSIX.4a Application Using Extensions 2.3.3 Language-Dependent Services for the C Programming Language 2.3.4 Common Usage C Standard Language System Support 2.4 General Terms 2.5 General Concepts 2.6 Error Numbers 2.7 Primitive System Data Types 2.8 Environment Description 2.9 C Language Definitions 2.9.1 Headers and Function Prototypes 2.10 Numerical Limits 2.10.1 Minimum Values 2.10.2 Runtime Invariant Values 2.10.3 Runtime Increasable Values 2.10.4 Bounded Ranges of Values 2.11 Symbolic Constants 2.11.1 References 2.12 Rationale Relating to Definitions and General Requirements 3 Thread Management 3.1 Introduction 3.2 Options 3.3 Functions 3.3.1 Thread Creation Attributes 3.3.2 Thread Creation 3.3.3 Wait for Thread Termination 3.3.4 Detaching a Thread 3.3.5 Thread Termination 3.3.6 Get Calling Thread's ID 3.3.7 Compare Thread IDs 3.3.8 Dynamic Package Initialization 3.4 Performance Metrics 3.5 Rationale Relating to Thread Management 4 Thread Priority Scheduling 4.1 Introduction 4.2 Options 4.3 Functions 4.3.1 Thread Creation Scheduling Attributes 4.3.2 Thread Priority Scheduling 4.3.3 Thread Yield 4.3.4 Process Priority Scheduling 4.4 Performance Metrics 4.5 Rationale Relating to Thread Priority Scheduling 5 Synchronization Primitives 5.1 Introduction 5.2 Options 5.3 Functions 5.3.1 Mutex Creation Attributes 5.3.2 Creating and Deleting a Mutex 5.3.3 Locking and Unlocking a Mutex 5.3.4 Condition Creation Attributes 5.3.5 Creating And Deleting Conditions 5.3.6 Broadcasting and Signaling a Condition 5.3.7 Waiting on a Condition 5.4 Performance Metrics 5.5 Rationale Relating to Synchronization Primitives 6 Thread Cancellation 6.1 Introduction 6.2 Options 6.3 Thread Cancellation Overview 6.4 Functions 6.4.1 Canceling Execution of a Thread 6.4.2 Establishing Cleanup Routines 6.4.3 Setting Cancelability State 6.5 Rationale Relating to Thread Cancellation 7 Thread-Specific Data 7.1 Introduction 7.2 Options 7.3 Functions 7.3.1 Create a Thread-Specific Data Key 7.3.2 Thread-Specific Data Management 7.4 Performance Metrics 7.5 Rationale Relating to Thread-Specific Data 8 Process Control 8.1 Introduction 8.2 Options 8.3 Functions 8.3.1 Create a New Process 8.3.2 Execute a File 8.3.3 Terminate a Process 8.4 Rationale Relating to Process Control 9 Signals and Asynchronous Events 9.1 Introduction 9.2 Options 9.3 Signal Concepts 9.4 Functions 9.4.1 Wait for an Asynchronous Signal 9.4.2 Examine and Change Signal State 9.4.3 Non-Local Jumps 9.4.4 Associate Signals to an Event Class 9.4.5 Alarm Delivery 9.4.6 Send a Signal 9.4.7 Send a Signal to a Thread 9.5 Per-Process Signal State Option 1 9.6 Per-Thread Signal State Option 1 9.7 Rationale Relating to Signals and Asynchronous Events 10 Reentrant Functions 10.1 Introduction 10.2 Options 10.3 Functions 10.3.1 Functions Returning a Pointer to a Static Structure 10.3.2 Functions Returning Pointer to Static String 10.3.3 Functions Communicating by Means of Static Variables 10.3.4 Stdio Synchronization Functions 10.3.5 Functions Requiring Explicit Client Locking 10.4 Rationale Relating to Reentrant Functions TABLES 2-1 Functions Specified in P1003.4a/D4 Section 2.9.1 Not Supported by VAXELN POSIX Threads 2-2 Minimum and Maximum Values Defined in <limits.h> 2-3 Runtime Invariant Values Defined in <limits.h> 2-4 Runtime Increasable Values Defined in <limits.h> 2-5 Limits Defined in <limits.h> 2-6 Symbolic Names Defined in <unistd.h>