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);


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值