字符设备驱动02

Code:
  1. 信号量(sleep)   
  2.     定义信号量:   
  3.         struct semaphore sem;   
  4.     初始化信号量:   
  5.         void sema_init(struct semaphore *sem, int val)   
  6.     初始化互斥锁信号量:   
  7.         void init_MUTEX(struct semaphore *sem);//将sem的值置为1   
  8.         void init_MUTEX_LOCKED(struct semaphore *sem)//将sem的值置为0   
  9.     定义初始化合二为一的宏:   
  10.         DECLARE_MUTEX(sem)//sem的值置为1   
  11.         DECLARE_MUTEX_LOCKED(sem)//sem的值置为0   
  12.     获取信号量:   
  13.         void down(struct semaphore *sem)//成功则sem的值减1   
  14.         int down_interruptible(struct semaphore *sem)//与down(struct semaphore *sem)相同,但是可以被中断   
  15.         down_killable(struct semaphore *sem)//是进程睡眠在TASK_KILLABLE类型的睡眠状态   
  16.     释放信号量:   
  17.         void up(struct semaphore *sem)//成功则sem的值加1   
  18. 自旋锁(busy)   
  19.     初始化   
  20.         spin_lock_init(lock);   
  21.     获取自旋锁   
  22.         spin_lock(lock);   
  23.         spin_trylock(lock);   
  24.     释放自旋锁   
  25.         spin_unlock(lock);   
  26.   
  27.   
  28. 总结: 信号量可以拥有多个持有者,而自旋锁只能有一个;   
  29.     信号量适合于保持时间较长的情况,自旋锁适合于保持时间非常短的情况;   
  30.        

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值