Thread Stacks and Stack Sizes
6.2 Synchronization Mechanisms
The eCos kernel provides the mechanisms for the threads in the system to communicate with each other and synchronize access to shared resources. The mechanisms provided by the eCos kernel are: • Mutexes • Semaphores • Condition variables • Flags • Message boxes • Spinlocks for SMP systems The kernel also provides API functions that allow applications to make use of the synchro- nization mechanisms. Some of the synchronization mechanism API functions provided are either blocking or nonblocking. Blocking function calls, such as cyg_semaphore_wait, halt execution of the thread until the API function can complete successfully. Nonblocking function calls, such as cyg_semaphore_trywait, attempt to complete successfully; however, if the API function is not successful, a return code indicates the status of the call so the thread can proceed with its execution. Another type of blocking call, blocking with timeout, also exists for certain synchroniza- tion mechanisms. These are API functions that halt execution of the thread for a specified period of time, such as cyg_semaphore_timed_wait, while attempting to complete the function call successfully. If the function does not complete successfully before the timeout period, the function returns, indicating an unsuccessful status.6.2.1 Mutexes
The first synchronization mechanism provided by eCos is the mutex. A mutex mutual exclusion object allows multiple threads to share a resource serially. The resource can be an area of mem- ory or a piece of hardware, such as a Direct Memory Access DMA controller. A mutex is similar to a binary semaphore in that it only has two states—locked and unlocked. However, there are a couple of differences between a binary semaphore and a mutex. 96 Chapter 6 • Threads and Synchronization MechanismsParts
» Prentice.Hall – Embedded.Software.Development.with.eCos
» Where It All Started—Cygnus Solutions
» The eCos Configuration Method
» eCos Core Components The Origins of eCos
» Processor and Evaluation Platform Support
» eCos Support The Origins of eCos
» Component Framework eCos Terminology
» Component Repository eCos Terminology
» Configuration Options eCos Terminology
» Components and Packages Targets
» Summary Prentice.Hall – Embedded.Software.Development.with.eCos
» The Example HAL Function Call Trace
» Next, the Example HAL Function Call Trace
» Finally, the platform reset routine uses the architecture macros defined in
» HAL Macro Definitions Overview
» Common Configuration Components HAL Configuration
» Architecture-Specific Configuration Components HAL Configuration
» HAL and Kernel Exception Handling
» Application Exception Handling Exceptions
» Interrupt and Scheduler Synchronization
» Interrupt Service Routine Management
» Interrupt State Management Interrupt Control
» Interrupt Controller Management Interrupt Control
» Summary Summary Prentice.Hall – Embedded.Software.Development.with.eCos
» Virtual Vector Configuration Virtual Vectors
» Communication Channels Virtual Vector Table Initialization
» Kernel Directory Structure The Kernel
» Multilevel Queue Scheduler The Scheduler
» Bitmap Scheduler Priority Levels
» Scheduler Configuration The Scheduler
» Thread Stacks and Stack Sizes
» Condition Variables Synchronization Mechanisms
» Message Boxes Synchronization Mechanisms
» Counters Counters, Clocks, Alarms, and Timers
» Clocks Alarms Counters, Clocks, Alarms, and Timers
» Timers Counters, Clocks, Alarms, and Timers
» Asserts and Tracing Prentice.Hall – Embedded.Software.Development.with.eCos
» IO Sub-System IO Control System
» Device Drivers IO Control System
» ROM File System File Systems
» RAM File System File Systems
» USB Support Prentice.Hall – Embedded.Software.Development.with.eCos
» OpenBSD FreeBSD Networking Support
» Networking Threads Networking Support
» Networking Configuration Networking Support
» Networking Tests Networking Support
» DNS Support Networking Support
» SNMP Support Prentice.Hall – Embedded.Software.Development.with.eCos
» The GoAhead Embedded WebServer
» Symmetric Multi-Processing Support Prentice.Hall – Embedded.Software.Development.with.eCos
» Additional Features Prentice.Hall – Embedded.Software.Development.with.eCos
» Overview Prentice.Hall – Embedded.Software.Development.with.eCos
» RedBoot Directory Structure Prentice.Hall – Embedded.Software.Development.with.eCos
» RedBoot Configuration Installation and Configuration
» Boot Scripting RedBoot Commands
» Cygwin Tools Directory Structure
» Installing the Platform-Specific Cross-Development Tools
» Installing WinCVS Accessing the Online eCos Source Code Repository
» Setting WinCVS Preferences Accessing the Online eCos Source Code Repository
» WinCVS Update Commands Accessing the Online eCos Source Code Repository
» Package Directory Structure Packages
» CDL Script Files The Component Definition Language Overview
» Saving Configurations Screen Layout
» Importing and Exporting Configurations
» Configuration Window Screen Layout
» Conflicts Window Screen Layout
» Properties Window Screen Layout
» Short Description Window Screen Layout
» Memory Layout Window Screen Layout
» Memory Layout Manipulation Screen Layout
» eCos Repository Database The Configuration Tool
» Graphical Representation of CDL Script Files
» Conflicts and Resolutions Using Templates
» The Package Administration Tool
» The Command-Line Configuration Tool
» Source-Navigator Additional Open-Source Tools
» Splint Additional Open-Source Tools
» A Closer Look The eCos Build Process
» Development Hardware Setup Examples Overview
» Building the Application Application
» Loading the Application Application
» Using the GDB Command-Line Interface
» The eCos Tests Prentice.Hall – Embedded.Software.Development.with.eCos
» Simulators Prentice.Hall – Embedded.Software.Development.with.eCos
» Overview of Porting Prentice.Hall – Embedded.Software.Development.with.eCos
Show more