写驱动,其实主要就是三件事:
1、实现struct file_operations中的函数。
一般至少需要实现六个:
int (*open) (struct inode *, struct file *);
int (*release) (struct inode *, struct file *);
ssize_t (*read) (struct file *, char __user *, size_t, loff_t);
ssize_t (*write) (struct file *, const char __user, size_t, loff_t);
loff_t (*llseek) (struct file *, loff_t, int);
int (*ioctl) (struct inode *, struct file *, unsigned int, unsigned long);
2、实现两个模块中必须的函数:
static int __init my_init(void);
static void __exit my_exit(void);
模块,无外乎就是多了init和exit这两个函数,可以把驱动程序中实现的函数加载进内核中,和把驱动程序从内核中卸载。
3、写一个加载模块的脚本,里面要在用insmod加载了驱动模块之后,
用mknode创建/dev中相应的文件。今后用户操作设备时都是通过访问/dev中的设备文件进行的。
文章评论(0条评论)
登录后参与讨论