Skip to content

linux 驱动开发小结

cheyiliu edited this page Sep 22, 2014 · 2 revisions

内核空间:

驱动在注册设备时,关联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

Ref

Clone this wiki locally