VxWorks Kernel Programmer's Guide, 6.6 Programmers Guide
User Manual:
Open the PDF directly: View PDF
Page Count: 866 [warning: Documents this large are best viewed by clicking the View PDF Link!]
- VxWorks Kernel Programmer's Guide, 6.6
- Contents
- Part I Core Technologies
- 1 Overview
- 2 Kernel
- 2.1 Introduction
- 2.2 Kernel Architecture
- 2.3 System Startup
- 2.4 VxWorks Configuration
- 2.5 Power Management
- 2.6 Kernel Applications
- 2.6.1 C and C++ Libraries
- 2.6.2 Application Structure
- 2.6.3 VxWorks Header Files
- 2.6.4 Static Instantiation of Kernel Objects
- 2.6.5 Applications and VxWorks Kernel Component Requirements
- 2.6.6 Building Kernel Application Modules
- 2.6.7 Downloading Kernel Application Object Modules to a Target
- 2.6.8 Linking Kernel Application Object Modules with VxWorks
- 2.6.9 Image Size Considerations
- 2.6.10 Configuring VxWorks to Run Applications Automatically
- 2.7 Custom Kernel Libraries
- 2.8 Custom VxWorks Components and CDFs
- 2.8.1 Creating and Modifying Components
- 2.8.2 CDF Precedence and CDF Installation
- 2.8.3 Testing New Components
- 2.8.4 Component Description Language
- 2.8.5 CDF Naming Conventions
- 2.8.6 Component CDF Object
- 2.8.7 Parameter CDF Object
- 2.8.8 Initialization Group CDF Object
- 2.8.9 Bundle CDF Object
- 2.8.10 Profile CDF Object
- 2.8.11 Folder CDF Object
- 2.8.12 Selection CDF Object
- 2.8.13 CDF Template
- 2.9 Custom System Calls
- 2.10 Custom Scheduler
- 3 Boot Loader
- 3.1 Introduction
- 3.2 Using a Default Boot Loader
- 3.3 Boot Loader Image Types
- 3.4 Boot Loader Shell
- 3.5 Boot Loader Parameters
- 3.6 Rebooting VxWorks
- 3.7 Customizing and Building Boot Loaders
- 3.8 Installing Boot Loaders
- 3.9 Booting From a Network
- 3.10 Booting From a Target File System
- 3.11 Booting From the Host File System Using TSFS
- 4 Multitasking
- 4.1 Introduction
- 4.2 Tasks and Multitasking
- 4.3 Task Scheduling
- 4.4 Task Creation and Management
- 4.5 Task Error Status: errno
- 4.6 Task Exception Handling
- 4.7 Shared Code and Reentrancy
- 4.8 Intertask and Interprocess Communication
- 4.9 Public and Private Objects
- 4.10 Shared Data Structures
- 4.11 Mutual Exclusion
- 4.12 Semaphores
- 4.13 Message Queues
- 4.14 Pipes
- 4.15 VxWorks Events
- 4.16 Message Channels
- 4.17 Network Communication
- 4.18 Signals
- 4.19 Watchdog Timers
- 4.20 Interrupt Service Routines
- 4.20.1 Connecting Routines to Interrupts
- 4.20.2 Interrupt Stack
- 4.20.3 Writing and Debugging ISRs
- 4.20.4 ISRs and the Kernel Work Queue
- 4.20.5 Special Limitations of ISRs
- 4.20.6 Exceptions at Interrupt Level
- 4.20.7 Reserving High Interrupt Levels
- 4.20.8 Additional Restrictions for ISRs at High Interrupt Levels
- 4.20.9 Interrupt-to-Task Communication
- 5 POSIX Facilities
- 5.1 Introduction
- 5.2 Configuring VxWorks with POSIX Facilities
- 5.3 General POSIX Support
- 5.4 POSIX Header Files
- 5.5 POSIX Namespace
- 5.6 POSIX Clocks and Timers
- 5.7 POSIX Asynchronous I/O
- 5.8 POSIX Advisory File Locking
- 5.9 POSIX Page-Locking Interface
- 5.10 POSIX Threads
- 5.11 POSIX Thread Mutexes and Condition Variables
- 5.12 POSIX and VxWorks Scheduling
- 5.13 POSIX Semaphores
- 5.14 POSIX Message Queues
- 5.15 POSIX Signals
- 5.16 POSIX Memory Management
- 6 Memory Management
- 6.1 Introduction
- 6.2 Configuring VxWorks With Memory Management Facilities
- 6.3 System Memory Maps
- 6.4 Shell Commands
- 6.5 System RAM Autosizing
- 6.6 Reserved Memory
- 6.7 Kernel Heap and Memory Partition Management
- 6.8 Memory Error Detection
- 6.9 Virtual Memory Management
- 6.10 Additional Memory Protection Features
- 6.11 Processes Without MMU Support
- 7 I/O System
- 7.1 Introduction
- 7.2 Configuring VxWorks With I/O Facilities
- 7.3 Files, Devices, and Drivers
- 7.4 Basic I/O
- 7.4.1 File Descriptors
- 7.4.2 Standard Input, Standard Output, and Standard Error
- 7.4.3 Standard I/O Redirection
- 7.4.4 Open and Close
- 7.4.5 Create and Remove
- 7.4.6 Read and Write
- 7.4.7 File Truncation
- 7.4.8 I/O Control
- 7.4.9 Pending on Multiple File Descriptors with select( )
- 7.4.10 POSIX File System Routines
- 7.5 Buffered I/O: stdio
- 7.6 Other Formatted I/O
- 7.7 Asynchronous Input/Output
- 7.8 Devices in VxWorks
- 7.8.1 Serial I/O Devices: Terminal and Pseudo-Terminal Devices
- 7.8.2 Pipe Devices
- 7.8.3 Pseudo I/O Device
- 7.8.4 Network File System (NFS) Devices
- 7.8.5 Non-NFS Network Devices
- 7.8.6 Null Devices
- 7.8.7 Sockets
- 7.8.8 Extended Block Device Facility: XBD
- 7.8.9 Transaction-Based Reliable File System Facility: TRFS
- 7.8.10 Block Devices
- 7.9 Differences Between VxWorks and Host System I/O
- 7.10 Internal I/O System Structure
- 7.11 PCMCIA
- 7.12 Peripheral Component Interconnect: PCI
- 8 Local File Systems
- 8.1 Introduction
- 8.2 File System Monitor
- 8.3 Virtual Root File System: VRFS
- 8.4 Highly Reliable File System: HRFS
- 8.4.1 Configuring VxWorks for HRFS
- 8.4.2 Configuring HRFS
- 8.4.3 Creating an HRFS File System
- 8.4.4 HRFS, ATA, and RAM Disk Examples
- 8.4.5 Transactional Operations and Commit Policies
- 8.4.6 Configuring Transaction Points at Runtime
- 8.4.7 File Access Time Stamps
- 8.4.8 Maximum Number of Files and Directories
- 8.4.9 Working with Directories
- 8.4.10 Working with Files
- 8.4.11 Crash Recovery and Volume Consistency
- 8.4.12 I/O Control Functions Supported by HRFS
- 8.5 MS-DOS-Compatible File System: dosFs
- 8.5.1 Configuring VxWorks for dosFs
- 8.5.2 Configuring dosFs
- 8.5.3 Creating a dosFs File System
- 8.5.4 dosFs, ATA Disk, and RAM Disk Examples
- 8.5.5 Working with Volumes and Disks
- 8.5.6 Working with Directories
- 8.5.7 Working with Files
- 8.5.8 Disk Space Allocation Options
- 8.5.9 Crash Recovery and Volume Consistency
- 8.5.10 I/O Control Functions Supported by dosFsLib
- 8.5.11 Booting from a Local dosFs File System Using SCSI
- 8.6 Raw File System: rawFs
- 8.7 CD-ROM File System: cdromFs
- 8.8 Read-Only Memory File System: ROMFS
- 8.9 Target Server File System: TSFS
- 9 Network File System: NFS
- 10 Flash File System Support: TrueFFS
- 10.1 Introduction
- 10.2 Overview of Implementation Steps
- 10.3 Creating a System with TrueFFS
- 10.4 Using TrueFFS Shell Commands
- 10.5 Using TrueFFS With HRFS
- 11 Error Detection and Reporting
- 12 Target Tools
- 12.1 Introduction
- 12.2 Kernel Shell
- 12.2.1 C Interpreter and Command Interpreter
- 12.2.2 Kernel and Host Shell Differences
- 12.2.3 Configuring VxWorks With the Kernel Shell
- 12.2.4 Configuring the Kernel Shell
- 12.2.5 Starting the Kernel Shell
- 12.2.6 Using Kernel Shell Help
- 12.2.7 Using Kernel Shell Control Characters
- 12.2.8 Kernel Shell History
- 12.2.9 Defining Kernel Shell Command Aliases
- 12.2.10 Loading and Unloading Kernel Object Modules
- 12.2.11 Debugging with the Kernel Shell
- 12.2.12 Aborting Routines Executing from the Kernel Shell
- 12.2.13 Console Login Security
- 12.2.14 Using a Remote Login to the Kernel Shell
- 12.2.15 Launching a Shell Script Programmatically
- 12.2.16 Executing Shell Commands Programmatically
- 12.2.17 Accessing Kernel Shell Data Programmatically
- 12.2.18 Using Kernel Shell Configuration Variables
- 12.2.19 Adding Custom Commands to the Command Interpreter
- 12.2.20 Creating a Custom Interpreter
- 12.3 Kernel Object-Module Loader
- 12.3.1 Configuring VxWorks with the Kernel Object-Module Loader
- 12.3.2 Kernel Object-Module Loader API
- 12.3.3 Summary List of Kernel Object-Module Loader Options
- 12.3.4 Loading C++ Modules into the Kernel
- 12.3.5 Specifying Memory Locations for Loading Objects
- 12.3.6 Guidelines and Caveats for Kernel Object-Module Loader Use
- 12.4 Kernel Symbol Tables
- Symbol Entries
- Symbol Updates
- Searching the Symbol Library
- 12.4.1 Configuring VxWorks with Symbol Tables
- 12.4.2 Creating a Built-In System Symbol Table
- 12.4.3 Creating a Loadable System Symbol Table
- 12.4.4 Using the VxWorks System Symbol Table
- 12.4.5 Synchronizing Host and Kernel Modules List and Symbol Table
- 12.4.6 Creating and Using User Symbol Tables
- 12.5 Show Routines
- 12.6 WDB Target Agent
- 12.6.1 Configuring VxWorks with the WDB Target Agent
- 12.6.2 WDB Target Agent and VxWorks SMP
- 12.6.3 Using the WDB Target Agent with a TIPC Network
- 12.6.4 Scaling the WDB Target Agent
- 12.6.5 WDB Target Agent and Exceptions
- 12.6.6 Starting the WDB Target Agent Before the VxWorks Kernel
- 12.6.7 Creating a Custom WDB Communication Component
- 12.7 Common Problems
- 13 C++ Development
- Part II Multiprocessing Technologies
- 14 Overview of Multiprocessing Technologies
- 15 VxWorks SMP
- 15.1 Introduction
- 15.2 Technology Overview
- 15.3 VxWorks SMP Configuration and Build
- 15.4 Booting VxWorks SMP
- 15.5 Programming for VxWorks SMP
- 15.6 Spinlocks for Mutual Exclusion and Synchronization
- 15.7 CPU-Specific Mutual Exclusion
- 15.8 Memory Barriers
- 15.9 Atomic Memory Operations
- 15.10 CPU Affinity
- 15.11 CPU Information and Management
- 15.12 Debugging SMP Code
- 15.13 Optimizing SMP Performance
- 15.14 Sample Programs
- 15.15 Migrating Code to VxWorks SMP
- 15.15.1 Code Migration Path
- 15.15.2 Overview of Migration Issues
- 15.15.3 RTP Applications and SMP
- 15.15.4 Implicit Synchronization of Tasks
- 15.15.5 Synchronization and Mutual Exclusion Facilities
- 15.15.6 VxWorks SMP Variants of Uniprocessor Routines
- 15.15.7 Unsupported Uniprocessor Routines and SMP Alternatives
- 15.15.8 SMP CPU-Specific Variables and Uniprocessor Global Variables
- 15.15.9 Memory-Access Attributes
- 15.15.10 Drivers and BSPs
- 16 Shared-Memory Objects: VxMP
- 16.1 Introduction
- 16.2 Using Shared-Memory Objects
- 16.3 System Requirements
- 16.4 Performance Considerations
- 16.5 Configuring VxWorks for Shared Memory Objects
- 16.6 Displaying Information About Shared Memory Objects
- 16.7 Troubleshooting
- 17 Distributed Shared Memory: DSHM
- 18 Message Channels
- Index