init_MUTEX

2.6.25及以後的linux內核版本廢除了init_MUTEX函數

新版本使用sema_init函數

 

平臺:X86 32位
內核:2.6.24
定義
 

引用
static inline void init_MUTEX (struct semaphore *sem) 
{ 
        sema_init(sem, 1); 
}



說明:Init_MUTEX()函數初始化信號量爲互斥量。 互斥量爲信號量的特例,它可以防止數據被兩個不同系統調用讀寫。 

sema_init (sem, 1) 定義爲:

引用

static inline void sema_init (struct semaphore *sem, int val)
{
/*
*    *sem = (struct semaphore)__SEMAPHORE_INITIALIZER((*sem),val);
*
* i'd rather use the more flexible initialization above, but sadly
* GCC 2.7.2.3 emits a bogus warning. EGCS doesn't. Oh well.
*/
    atomic_set(&sem->count, val);
    sem->sleepers = 0;
    init_waitqueue_head(&sem->wait);
}


sleepers : 指定了允許進入等待進入臨界區的進程數,這裏初始化爲 0 。
init_waitqueue_head() : 初始化一個等待隊列頭。

 

這樣不難得出

廢除init_MUTEX

將原來使用init_MUTEX(sem)的地方統統替換爲sema_init(sem,1); 即可

發佈了63 篇原創文章 · 獲贊 16 · 訪問量 17萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章