二、 驱动module的初始化
scull_init_module函数中主要做了以下几件事情:
a) 分配并注册主设备号和次设备号
int register_chrdev_region(dev_t first, unsigned int count, char *name)
int alloc_chrdev_region(dev_t *dev, unsigned int firstminor, unsigned int count, char *name)
b) 初始化代表设备的struct结构体:scull_dev
c) 初始化互斥体init_MUTEX
d) 初始化在内核中代表设备的cdev结构体,最主要是将该设备与file_operations结构体联系起来。在Linux内核中,cdev结构体才是真正代表了某个设备。在内核调用设备的open,read等操作之前,必须先分配并注册一个或者多个cdev结构。