Linux驱动:信号量同步测试

2014-11-24 14:32:34 · 作者: · 浏览: 3

环境:


目标板:MINI6410


目标板LINUX内核版本:2.6.38




信号量主要函数:


//定义信号量


struct semaphore sem;


//初始化信号量


void sema_init(struct semaphore *sem,int val);


//获得信号量,会导致睡眠,不可在中断中使用


void down(struct semaphore *sem);


//获得信号量,能被信号打断,返回0表示正常返回,返回-EINTR表示被信号打断


int down_interruptible(struct semaphore *sem);


//尝试获得信号量sem,如果能够立即获得,返回0,否则返回非0值,它不会导致调用者睡眠,可以在中断上下文使用


int down_trylock(struct semaphore *sem);


//释放信号,唤醒等待者


void up(struct semaphore *sem);




测试代码:




测试



开启两个程序,同时打开,双进程同时操作LED