Linux驅動 互斥鎖mutex測試

2021-09-11 05:11:37 字數 4725 閱讀 3596

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...