环境:
目标板: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