本帖最后由 鬼鬼一哈 于 2010-10-20 16:50 编辑
///////////////////////////////节点要自己创建///////////////////////////////////
static void gpio_setup_cdev(struct cdev *dev, int minor,struct file_operations *fops)
{ /*字符设备的创建和注册*/
int err,devno = MKDEV(major, minor);
cdev_init(dev, fops);
dev->owner = THIS_MODULE;
dev->ops = fops;
err = cdev_add (dev, devno, 1);
if(err) { printk(KERN_NOTICE "Error %d adding gpio %d", err, minor); }
}
static struct cdev gpio_devs;
static int __init gpio_init(void)
{
int result;
dev_t dev = MKDEV(major,0);
/ *分配设备号,省略代码*/
gpio_setup_cdev(&gpio_devs, 0, &gpio_fops);
printk("The major of gpio dev`ice is %d\n",major);
return 0;
}
/////////////////////////////////////节点自动生成////////////////////////////////////
static struct cdev gpio_devs;
static int __init gpio_init(void)
{
int result;
dev_t dev = MKDEV(major,0);
/ *分配设备号,省略代码*/
gpio_setup_cdev(&gpio_devs, 0, &gpio_fops);
//很多例子里都没写这一句(红色代码段)设备的创建和注册。。。。。
///////////////////////节点自动生成代码////////////////////////////
gpio_class = class_create(THIS_MODULE,GPIO_DEVICE_NAME);
device_create(gpio_class, NULL, MKDEV(major, 0), NULL, GPIO_DEVICE_NAME);
printk("The major of gpio dev`ice is %d\n",major);
return 0;
}
是不是在节点自动生成代码中(代码里已经完成了设备的创建和注册了么?)不用添加代码
gpio_setup_cdev(&gpio_devs, 0, &gpio_fops);么? |