linux字符设备驱动 并发与竞态

 内核调试
1.打印调试,发行时去除  DPDEBUG开关
2.调试器
3.查询

并发和竞态
if(copy_from
1.信号量
不能在内核外使用,进程不能得到就到睡眠队列,再唤醒
init_MUTEX 初始化互斥锁值为1

2.自旋锁
spin_lock_init(x)
spin_lock(x)
spin_trylock(x)
spin_unlock

信号量与自旋锁
可以有多个持有者
通常是保持时间长的

ioctl用户调用
int ioctl(int fd,unsigned long cmd,...)

ioctl命令被划分成几个段 共32位
/include/asm/ioctl.h
1.类型 8位  
2.序号 8位
3.数据传送方向_IOC_NONE  _IOC_READ 
_IOC_WRITE
4.大小
ioctl 函数实现(参数检测)
不要检测
copy_from_user
copy_to_user


access_ok 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值