Linux驅動 互斥鎖mutex測試

2021-08-26 14:08:11 字數 2041 閱讀 1460

linux驅動:互斥鎖mutex測試

環境:

主機:fedora12

目標板:mini6410

目標板linux核心版本:2.6.38

互斥鎖主要函式:

//建立互斥鎖

define_mutex(mutexname);

//加鎖,如果加鎖不成功,會阻塞當前程序

void mutex_lock(struct mutex *lock);

//解鎖

void mutex_unlock(struct mutex *lock);

//嘗試加鎖,會立即返回,不會阻塞程序

int mutex_trylock(struct mutex *lock);

測試**:

#include #include #include //#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define device_name "led_driver"

#define t_majors 700

static struct cdev fun_cdev;

static dev_t dev;

static struct class *led_class;

//初始化互斥鎖

static define_mutex(sem);

//功能:初始化io

static void init_led(void)

//功能:ioctl操作函式

//返回值:成功返回0

static long led_driver_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)

else

//等待2s

//t = jiffies;

//while (time_after(jiffies,t + 2 * hz) != 1);

init_waitqueue_head(&wait);

sleep_on_timeout(&wait,2 * hz);

writel(temp,s3c64xx_gpkdat);

printk (device_name"\tjdh:led_driver cmd=%d arg=%d jiffies = %d\n",cmd,arg,jiffies);

//解鎖

mutex_unlock(&sem);

return 0;

}static struct file_operations io_dev_fops = ;

static int __init dev_init(void)

device_create(led_class, null, dev, null, "led_driver");

return ret;

}static void __exit dev_exit(void)

module_init(dev_init);

module_exit(dev_exit);

module_license("gpl");

module_author("jdh");

測試

用/article/details/7178741中的測試程式進行測試:

開啟兩個程式,同時開啟,雙程序同時操作led

Linux驅動 互斥鎖mutex測試

linux驅動 互斥鎖mutex測試 環境 主機 fedora12 目標板 mini6410 目標板linux核心版本 2.6.38 互斥鎖主要函式 建立互斥鎖 define mutex mutexname 加鎖,如果加鎖不成功,會阻塞當前程序 void mutex lock struct mute...

linux之mutex 互斥鎖

在posix thread中定義有一套專門用於執行緒同步的mutex函式 有兩種方法建立互斥鎖,靜態方式和動態方式。posix定義了乙個巨集pthread mutex initializer來靜態初始化互斥鎖,方法如下 pthread mutex t mutex pthread mutex init...

Linux應用程式互斥鎖mutex

mutex從本質上說就是一把鎖,在應用層提供對共享資源的保護訪問。1 初始化 在linux下,執行緒的互斥量資料型別是pthread mutex t。在使用前,要對它進行初始化。通過pthread mutex init進行初始化,並且在釋放記憶體 free 前需要呼叫pthread mutex de...