[英]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.