LINUX驱动-注册驱动程序

注册驱动程序的几种方法:

(1)调用register_chrdev

  if (register_chrdev(MAJOR_NUM, " gobalvar ", &gobalvar_fops)) 
  { 
   //…注册失败 
  } 
  else 
  { 
   //…注册成功 
  } 


(2)先调用register_chrdev_region,再调用cdev_add

  dev_id = MKDEV(major, 0);
  retval = register_chrdev_region(dev_id, 1,NAME);

  cdev_init(&dev, &fops);
  cdev_add(&dev, dev_id, 1);


(3)前两种方法使用在已知主设备号的情况下,这一种方法由内核自动分配主设备号。例子:

	if (major) {
		dev_id = MKDEV(major, 0);
		retval = register_chrdev_region(dev_id, CS5535_GPIO_COUNT,
						NAME);
	} else {
		retval = alloc_chrdev_region(&dev_id, 0, CS5535_GPIO_COUNT,
					     NAME);
		major = MAJOR(dev_id);
	}

	if (retval) {
		release_region(gpio_base, CS5535_GPIO_SIZE);
		return -1;
	}

	printk(KERN_DEBUG NAME ": base=%#x mask=%#lx major=%d\n",
	       gpio_base, mask, major);

	cdev_init(&cs5535_gpio_cdev, &cs5535_gpio_fops);
	cdev_add(&cs5535_gpio_cdev, dev_id, CS5535_GPIO_COUNT);


 

你可能感兴趣的:(linux)