...
os_prio.c
contains the code to set, clear, and search the bitmap table. These functions are internal to µC/OS-III and are placed in os_prio.c
to allow them to be optimized in assembly language by replacing os_prio.c
with an assembly language equivalent os_prio.asm
, if necessary.
To determine the highest priority level that contains ready-to-run tasks, the bitmap table is scanned until the first bit set in the lowest bit position is found using OS_PrioGetHighest()
. The code for this function is shown in the listing below.
The function CPU_CntLeadZeros()
simply counts how many zeros there are in a CPU_DATA
entry starting from the left (i.e., most significant bit). For example, assuming 32 bits, 0xF0001234
results in 0 leading zeros and 0x00F01234
results in 8 leading zeros.
...