lk中預設只能支援32個優先順序,為什麼呢?

2021-07-22 02:53:03 字數 782 閱讀 7605

明白原理有就可以support 無限個優先順序了。

因為在lk中 用於表示優先順序的bitmap ,

static uint32_t run_queue_bitmap;是uint32_t也就是只有32個bit 可以使用

我們一般在新建thread 後,將thread 插入到run_queue中時,會設定這個run_queue_bitmap

/* run queue manipulation */

static void insert_in_run_queue_head(thread_t *t)

static void insert_in_run_queue_tail(thread_t *t)

如上所示,不管是查到到run_queue的head還是tail 都會設定run_queue_bitmap。

可見run_queue_bitmap 只和thread的prority 有關,也就是說如果像個thread的優先順序相等,

那他們對應在run_queu_bitmap中的同乙個bit。同時也就可以這麼 理解,就是run_queue_bitmap 中

某乙個bit 置位,並不代表這個優先順序的thread 就只有乙個

如果這個thread 將要被執行,那就要clear run_queue_bitmap中對應的bit

void thread_resched(void)

可以看到只有這個優先順序的thread在run_queue 中為null時,也就是這個優先順序對應的thread 已經執行完了

才把對應的bit在run_queue_bitmap 中清掉.

stm32中斷優先順序

cm3 核心支援 256 個中斷,stm32 並沒有使用 cm3 核心的全部只用了它的一部分。stm32 有 84 個中斷,包括 16 個核心中斷和 68 個可遮蔽中斷,stm32f103 系列上面只有 60 個 107 系列才有 68 個 下面針對stm32f103 系列說明。與 nvic 相關的...

STM32 中斷 優先順序設定

stm32中斷 優先順序設定 記性老差,前邊熟悉的東西,轉眼又忘了。今又翻開以前的筆記,重溫記錄如下 參考 記不清楚了 一 中斷優先順序概念 stm32 cortex m3 中有兩個優先順序的概念 搶占式優先順序和響應優先順序,有人把響應優先順序稱作 亞優先順序 或 副優先順序 每個中斷源都需要被指...

stm32 中斷優先順序配置

一 中斷優先順序概念 stm32 cortex m3 中有兩個優先順序的概念 搶占式優先順序和響應優先順序,有人把響應優先順序稱作 亞優先順序 或 副優先順序 每個中斷源都需要被指定這兩種優先順序。二 中斷響應次序 1 具有高搶占式優先順序的中斷可以在具有低搶占式優先順序的中斷處理過程中被響應,即中...