Chinaunix首页 | 论坛 | 博客
  • 博客访问: 502236
  • 博文数量: 76
  • 博客积分: 4010
  • 博客等级: 上校
  • 技术积分: 1534
  • 用 户 组: 普通用户
  • 注册时间: 2007-04-10 16:28
文章分类
文章存档

2010年(1)

2009年(3)

2008年(72)

我的朋友

分类: LINUX

2008-05-07 19:29:56

     在设备驱动程序中,在用open函数打开时候,首先就要确定要具体打开的设备。其中的inode参数在i_cdev字段中包含了我们所需要的信息,就是我们先前设置的cdev的结构。唯一的问题是,通常不需要cdev结构本身,而是希望得到包含cdev结构的设备原始结构,在ldd3中就是scull_dev结构。实现此技巧的就是通过在中的container_of宏来实现:
    container_of(pointer, container_type, container_field);

struct scull_dev *dev;      /*device information*/
dev = container_of(inode->i_cdev, struct scull_dev, cdev);
filp->private_data = dev    /*for other method*/
一旦代码找到scull_dev结构后,scull将一个指针保存到了file结构的private_data字段中,这样可以方便以后对该指针的访问。
阅读(1591) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~