Chinaunix首页 | 论坛 | 博客
  • 博客访问: 641215
  • 博文数量: 75
  • 博客积分: 7001
  • 博客等级: 少将
  • 技术积分: 1465
  • 用 户 组: 普通用户
  • 注册时间: 2007-07-11 17:39
文章分类

全部博文(75)

文章存档

2010年(1)

2009年(25)

2008年(49)

我的朋友

分类: LINUX

2008-07-01 20:11:51

2.6内核设备的注册模板

2.6仍然支持通过register_chrdev()函数来注册字符设备,但是建议用新的API替代。新的2.6的字符设备注册/注销模板:

1  //设备结构体
2  struct xxx_dev_t
3  {
4    struct cdev cdev;
5    ...
6  } xxx_dev;
7  //设备驱动模块加载函数
8  static int __init xxx_init(void)
9  {
10   ...
11   cdev_init(&xxx_dev.cdev, &xxx_fops); //初始化cdev
12   xxx_dev.cdev.owner = THIS_MODULE;
13   //获取字符设备号
14   if (xxx_major)
15   {
16     register_chrdev_region(xxx_dev_no, 1, DEV_NAME);
17   }
18   else
19   {
20     alloc_chrdev_region(&xxx_dev_no, 0, 1, DEV_NAME);
21   }
22  
23   ret = cdev_add(&xxx_dev.cdev, xxx_dev_no, 1); //注册设备
24   ...
25 }
26 /*设备驱动模块卸载函数*/
27 static void __exit xxx_exit(void)
28 {
29   unregister_chrdev_region(xxx_dev_no, 1); //释放占用的设备号
30   cdev_del(&xxx_dev.cdev); //注销设备
31   ...
32 }

阅读(1368) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~