每个字符设备的驱动都要包含对这个字符设备的初始化,而这个初始化其实是一个非常固定的步骤,接着我们就来看看这个初始化怎么写。
1 申请注册一个设备(char 字符设备)
static inline int register_chrdev(unsigned int major, const char *name,
const struct file_operations *fops)
参数1-----major 表设备号(32位的值 由主+次设备号构成)高12位主设备号+低20位的次设备号构成
参数2-----name 表示设备名字
参数3-----file_operations,表示文件操作集,是应用层要对设备进行的操作,常用的有:open,read,write
struct file_operations {
struct module *owner;
loff_t (*llseek) (struct file *, loff_t, int);
ssize_t (*read) (struct file *, char __user *, size_t, loff_t *);
ssize_t (*write) (struct file *, const char __user *, size_t, loff_t *);
ssize_t (*aio_read) (struct kiocb *, const struct iovec *, unsigned long, loff_t);
ssize_t (*aio_write) (struct kiocb *, const struct iovec *, unsigned long,