linux 驱动开发小结 - cheyiliu/All-in-One GitHub Wiki
内核空间:
驱动在注册设备时,关联file_ops结构体(有wirte, read, seek, release, ioctl)
用户空间:
当用户程序调用write/read/ioctl时,内核会最终调用file_ops结构里的函数(write read ioctl均是系统调用 http://www.ibm.com/developerworks/cn/linux/kernel/syscall/part1/appendix.html)
重要函数:
使用内核提供的专用函数,完成数据在应用程序空间和驱动程序空间的交换
unsigned long copy_to_user(void __user *to,
const void *from, unsigned long n);
unsigned long copy_from_user(void *to, const
void __user *from, unsigned long n);
put_user(local,user);
get_user(local,user);
设备号相关
int register_chrdev_region(dev_t from, unsigned count, const char *name); void unregister_chrdev_region(dev_t from, unsigned count);
注册删除设备
cdev_add cdev_del