typedef structatomic_t
//將原子變數v增加i
static inline void atomic_add(int i, atomic_t *v)
//將原子變數v增加i,判斷增加後v是不是負數
static inline int atomic_add_negative(int i, atomic_t *v)
//將原子變數v增加i,並返回加後的值
static inline int atomic_add_return(int i, atomic_t *v)
//u不等於v,則將v+a
static inline int __atomic_add_unless(atomic_t *v, int a, int u)
return c;
}//將old與v所在的記憶體中的值相比較,如果相等,則將new存到v所表示的位址單元中
//如果不相等,則該位址的值不變
static inline int atomic_cmpxchg(atomic_t *v, int old, int new)
//將原子變數v減1
static inline void atomic_dec(atomic_t *v)
//將原子變數v減1,並判斷減1後是否為0,返回1警告是0,⚠
static inline int atomic_dec_and_test(atomic_t *v)
//同atomic_dec,atomic_dec_and_test
static inline void atomic_inc(atomic_t *v)
static inline int atomic_inc_and_test(atomic_t *v)
//讀原子值
static inline int atomic_read(const atomic_t *v)
//設定v的值為i,無返回值
static inline void atomic_set(atomic_t *v, int i)
//同atomic_add,atomic_add_return
static inline void atomic_sub(int i, atomic_t *v)
static inline int atomic_sub_and_test(int i, atomic_t *v)
static inline int atomic_sub_return(int i, atomic_t *v)
一些核心同步API 2
獲取訊號量,成功後sem的計數器減1 不成功後程序將進入睡眠狀態而一直等待下去 注意區分down interruptible down killable 由於會使程序進入睡眠狀態 不響應任何訊號量,阻塞 所以不建議使用 void down 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...