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");
測試
用中的測試程式進行測試:
開啟兩個程式,同時開啟,雙程序同時操作led
再分享一下我老師大神的人工智慧教程吧。零基礎!通俗易懂!風趣幽默!還帶黃段子!希望你也加入到我們人工智慧的隊伍中來!
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");
測試
用中的測試程式進行測試:
開啟兩個程式,同時開啟,雙程序同時操作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...