一些核心程序排程API 6

2021-08-20 07:10:39 字數 1746 閱讀 2871

//此函式用以終止輸入引數k對應的程序

//返回值就是 int (*threadfn)(void *data) 的int值

int kthread_stop(struct task_struct *k)

ret = k->exit_code;

put_task_struct(k);

trace_sched_kthread_stop_ret(ret);

return ret;

}//將 wait 加入到 q所在等待佇列的頭部,wait需要滿足是乙個單獨節點,不與別的元素相干

void prepare_to_wait(wait_queue_head_t *q, wait_queue_t *wait, int state)

//將 wait 加入到 q所在等待佇列的尾部,wait需要滿足是乙個單獨節點,不與別的元素相干

void prepare_to_wait_exclusive(wait_queue_head_t *q, wait_queue_t *wait, int state)

//將 wait 從 q所在的等待佇列中刪除

void remove_wait_queue(wait_queue_head_t *q, wait_queue_t *wait)

//改變p的排程策略及實時優先順序

int sched_setscheduler(struct task_struct *p, int policy,

const struct sched_param *param)

/*程序的優先順序分為 靜態優先順序, 動態優先順序

靜態優先順序:程序在建立之初就分配的值,100-139,越小越緊急,static_prio=120+nice

動態優先順序:隨著程序在核心的時間而改變,是核心排程的參考依據,與程序排程策略 policy 有關

*///更改p的nice值,也即修改它的靜態優先順序

void set_user_nice(struct task_struct *p, long nice)

queued = task_on_rq_queued(p);

if (queued)

dequeue_task(rq, p, 0);

p->static_prio = nice_to_prio(nice);

set_load_weight(p);

old_prio = p->prio;

p->prio = effective_prio(p);

delta = p->prio - old_prio;

if (queued)

out_unlock:

task_rq_unlock(rq, p, &flags);

}//獲取程序的nice值

static inline int task_nice(const struct task_struct *p)

//喚醒睡眠狀態的程序,使程序變為 task_running態,從而能被cpu重新排程執行

int wake_up_process(struct task_struct *p)

//讓當前程序所占用的核心空間短暫讓步,短暫釋放占用的cpu資源,給其他程序執行的機會

void yield(void)

[例]result=kthread_create_on_node(my_function,null,-1,namefrm);

wake_up_process(result);

yield(); //此時 my_function得以執行,沒有yield,父程序不會讓步

一些核心程序排程API 3

程序狀態描述 task running 0 可執行狀態,要麼準備執行,要麼正在執行 task interruptible 1 可中斷的等待狀態,程序在睡眠狀態,直到某個條件為真 才被排程執行,函式interruptible sleep on 使程序進入 該狀態task uninterruptible...

一些核心排程API(2)

根據tcb,獲取對應的記憶體資訊,儲存在專門描述tcb記憶體資訊的 mm struct 中 struct mm struct get task mm struct task struct task task unlock task return mm tcb專門的記憶體資訊儲存區 struct mm...

一些核心模組API 2

核心符號表 就是在核心的內部函式或變數中,可供外部引用的函式和變數的符號表。其實說白了就是乙個索引檔案,它存在的目的就是讓外部軟體可以知道kernel檔案內部實際分配的位置。給乙個記憶體位址address,查詢乙個核心符號,並將該符號的基本資訊,符號名name,偏移offset 大小size,所屬模...