内核调试
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
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