Keil Logo

Technical Support

On-Line Manuals

µVision User's Guide

About µVision User Interface Creating Applications Debugging Using the Debugger Simulation Start Debugging Application Program Execution Debug Windows and Dialogs Breakpoints Window Call Stack and Locals Window Code Coverage Command Window Component Viewer Disassembly Window Event Recorder Filter Component Levels Setup Event Recorder Event Viewer Execution Profiler Instruction Trace Window System Analyzer Restrictions Logic Analyzer Setup Setup in Detail Restrictions Cortex-M Trace Configuration Memory Map Memory Window Performance Analyzer Registers Window Serial Window Symbols Window System Viewer Adding System Viewer Windows System and Thread Viewer Thread States Toolbox Trace Data Window Trace Navigation Watch Window Core Peripherals Cortex-M0 and Cortex-M0+ Nested Vector Interrupt Controller System Control and Configuration System Tick Timer Fault Reports (Cortex-M0+ only) Cortex-M3, Cortex-M4, and Cortex-M7 Nested Vector Interrupt Controller System Control and Configuration System Tick Timer Fault Reports Memory Protection Unit Cortex-M23 and Cortex-M33 Nested Vector Interrupt Controller System Control and Configuration System Tick Timer Fault Reports Memory Protection Unit Security Attribution Unit Expressions Constants System Variables Peripheral Variables I/O Ports Serial Ports Program Variables (Symbols) Fully Qualified Symbols Non-Qualified Symbols Literal Symbols Using Symbols Line Numbers Bit Addresses Type Specifications Operators Differences between µVision and C Expression Examples Code and Data Trace (Cortex-M) Trace Features Tracepoint Expressions Tracepoint Intrinsics Tracepoint Limitations Configuring the Trace Hardware Tracepoint Marks Tips and Tricks Review Peripherals and CPU Configuration Simulate I/O Ports Simulate Interrupts and Clock Inputs Simulate external I/O Devices Assign Serial I/O to a PC COM Port Check Illegal Memory Access Command Input from File Preset I/O Ports or Memory Contents Write Debug Output to a File Keyboard Shortcuts TPIU Initialization after RESET (Cortex-M) Prevent Opening Files Show Japanese Messages Code Coverage Export MTB Trace Import for Code Coverage Debug Commands Debug Functions Simulation Flash Programming Dialogs Utilities Command Line Example Programs Appendix

Thread States

Each RTX thread is always in exactly one state, which tells the disposition of the thread.

State Description
RUNNING The thread that is currently running is in the RUNNING state. Only one thread at a time can be in this state. The osThreadGetId() function returns the Thread ID (TID) of the currently executing thread.
READY Threads which are ready to run are in the READY state. Once the running thread has completed processing, RTX selects the next ready thread with the highest priority and starts execution.
WAIT_DLY Threads which are waiting for a delay to expire are in the WAIT_DLY State. Once the delay has expired, the thread is switched to the READY state. The osDelay() or osWait() function places a thread in the WAIT_DLY state. Refer to the RTOS documentation for details about the delay and wait function.
WAIT_ITV Threads which are waiting for an interval to expire are in the WAIT_ITV State. Once the interval delay has expired, the thread is switched back to the READY state.

This state is not available for CMSIS-RTOS. Use the osTimer features instead.

WAIT_OR Threads which are waiting for at least one event flag are in the WAIT_OR state. When the event occurs, the thread is switched to the READY state. The osSignalWait() function places a thread in the WAIT_OR state.
WAIT_AND Threads which are waiting for all the set events to occur are in the WAIT_AND state. When all event flags are set, the thread is switched to the READY state. osSignalWait() function places a thread in the WAIT_AND state.
WAIT_SEM Threads which are waiting for a semaphore are in the WAIT_SEM state. When the token is obtained from the semaphore, the thread is switched to the READY state. The osSemaphoreWait() function places a thread in the WAIT_SEM state.
WAIT_MUT Threads which are waiting for a free mutex are in the WAIT_MUT state. When a mutex is released, the thread acquire the mutex and switch to the READY state. The osMutexWait() function places a thread in the WAIT_MUT state.
WAIT_MBX Threads which are waiting for a mailbox message are in the WAIT_MBX state. Once the message has arrived, the thread is switched to the READY state.
Threads waiting to send a message when the mailbox is full are also put into the WAIT_MBX state. When the message is read from the mailbox, the thread is switched to the READY state. In this case, the osMailGet() function places a thread in the WAIT_MBX state.
INACTIVE Threads which have not been started or threads which have been deleted are in the INACTIVE state. The osThreadTerminate() function places a thread that has been started (with osThreadCreate()) into the INACTIVE state.
  Arm logo
Important information

This site uses cookies to store information on your computer. By continuing to use our site, you consent to our cookies.

Change Settings

Privacy Policy Update

Arm’s Privacy Policy has been updated. By continuing to use our site, you consent to Arm’s Privacy Policy. Please review our Privacy Policy to learn more about our collection, use and transfers
of your data.