Chinaunix首页 | 论坛 | 博客
  • 博客访问: 153988
  • 博文数量: 72
  • 博客积分: 3680
  • 博客等级: 中校
  • 技术积分: 1051
  • 用 户 组: 普通用户
  • 注册时间: 2010-08-22 13:51
文章分类
文章存档

2010年(72)

我的朋友

分类: LINUX

2010-09-25 12:51:13

1.字符设备模块和卸载函数
     在Linux字符驱动模块加载函数中应该实现设备号的申请和cdev注册,在卸载函数中应该实现设备号的释放和cdev的注销.
      工程师效习惯将一个设备定义为一个设备相关的结构体。
           字符设备驱动模块加载和卸载函数模板框架
/*设备结构体  */
struct xxx_dev_t
{
struct cdev *cdev;
...............
}xxx_dev;
 
/* 设备驱动模块加载函数 */
static int __init xxx_init(void)
{
..........................
cdev_init(&xxx_dev.cdev,&xxx_fops);
xxx_dev.cdev.owner = THIS_MODULE;
//获取字符设备号
if (xxx_major)
{
register_chrdev_region(xxx_dev_no,1,DEV_NAME);
}
else
{
alloc_chrdev_region(&xxx_dev_no,0,1,DEV_NAME);
}
ret = cdec_add(&xxx_dev.cdev,xxx_dev_no,1);
.............
}
 
//设备驱动模块卸载函数
static void __exit xxx_exit(void)
{
/*释放设备号*/
unregister_chrdev_region(xxx_dev_no,1);
/*注销设备*/
cdev_del(&xxx_dev.cdev);
}
 
2.字符设备驱动文件操作结构体
struct file_operations xx_fops =
{
.owner = THIS_MODULE,
.read = xxx_read,
.write = xxx_write,
.ioctl = xxx_ioctl,
..........
}
 
 
 
阅读(1054) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2010-09-26 15:40:13

很好的, 收藏了 推荐一个博客,提供很多免费软件编程电子书下载: http://free-ebooks.appspot.com