簡體   English   中英

Linux內核rt.c / deadline.c中的空函數

[英]Empty function in rt.c/deadline.c in Linux Kernel

我正在研究Linux內核中的實時調度算法,並且看到有許多函數調用,而實際上它們中沒有定義任何函數:

(在內核3.15上)例如:

rt.c 1392 : dequeue_pushable_task(rq, p); 
rt.c 365  : static inline void dequeue_pushable_task(struct rq *rq, struct task_struct *p)
              {
              }


rt.c 1394 : set_post_schedule(rq);
rt.c 365  : static inline void set_post_schedule(struct rq *rq)
              {
              }

它們也在用於檢查SMP的ifdef中重新定義。 我只是想確定,這些功能特定於SMP嗎? 或有任何理由要使用這些空功能。

按照sched / deadline上的注釋:添加與SCHED_DEADLINE SMP相關的數據結構和邏輯1baca4ce16b8cc7d4f50be1f7914799af30a2861 commit

這些方法用於將截止期限任務保留在特定於CPU的運行隊列中,可推送或可拉出的截止期限任務的概念要求它們是多個CPU運行隊列,以在兩者之間推送和拉出任務。 如果未設置CONFIG_SMP,則只有一個CPU運行隊列,因此不會遷移所需的任務。

因此,是的,函數實現特定於SMP,具有這些空函數的原因是為了編譯代碼,但在未定義CONFIG_SMP時不執行任何操作,而不必在每個調用站點上執行更多的ifdef檢查。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM