//獲取訊號量,成功後sem的計數器減1;不成功後程序將進入睡眠狀態而一直等待下去
//注意區分down_interruptible(),down_killable()
//由於會使程序進入睡眠狀態(不響應任何訊號量,阻塞),所以不建議使用
void down(struct semaphore *sem)
//獲取訊號量,失敗進入睡眠,但可被別的訊號中斷
//當有另外的核心控制路徑給這個因為競爭不到訊號量而睡眠的程序傳送乙個【普通訊號】時,
//它就會立即返回而放棄繼續競爭訊號量
int down_interruptible(struct semaphore *sem)
//獲取訊號量,失敗進入睡眠,但可被別的訊號中斷
//當有另外的核心控制路徑給這個因為競爭不到訊號量而睡眠的程序傳送乙個【致命訊號】時,
//它就會立即返回而放棄繼續競爭訊號量
int down_killable(struct semaphore *sem)
//獲取訊號量,等待 timeout 時間,超時則返回
int down_timeout(struct semaphore *sem, long timeout)
//原子地獲取訊號量,成功與否都會立即返回
int down_trylock(struct semaphore *sem)
//讀寫訊號量
struct rw_semaphore ;
//初始化訊號量,將count設定為 val
struct semaphore ;
static inline void sema_init(struct semaphore *sem, int val)
//釋放訊號量,sem->count加1
void up(struct semaphore *sem)
一些核心模組API 2
核心符號表 就是在核心的內部函式或變數中,可供外部引用的函式和變數的符號表。其實說白了就是乙個索引檔案,它存在的目的就是讓外部軟體可以知道kernel檔案內部實際分配的位置。給乙個記憶體位址address,查詢乙個核心符號,並將該符號的基本資訊,符號名name,偏移offset 大小size,所屬模...
一些核心排程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
解除安裝irq鍊錶中與輸入引數相對應的 irqaction 描述符 void remove irq unsigned int irq,struct irqaction act 動態申請及註冊乙個中斷 動態建立乙個irqaction描述符,把該描述 符加入到irq鍊錶中 0 建立成功 16 中斷號被占...