MINI2440i2c驱动学习二
来源:互联网 发布:网络真人视频赌博揭秘 编辑:程序博客网 时间:2024/05/18 04:01
在测试函数中有个函数eeprom_open("/dev/i2c/0", 0x50, EEPROM_TYPE_8BIT_ADDR, &e);其中里面的调用如下
int eeprom_open(char *dev_fqn, int addr, int type, struct eeprom* e)
{
当程序执行到fd = open(dev_fqn, O_RDWR);时就会调用驱动中的i2cdev_open(struct inode *inode, struct file *file)函数
static int i2cdev_open(struct inode *inode, struct file *file)
{
out:
}
驱动做了些什么呢??
慢慢分析:
unsigned int minor = iminor(inode);
获得被打开的设备文件的次设备号,通过函数static inline unsigned iminor(const struct inode *inode)
{
}
i2c_dev = i2c_dev_get_by_minor(minor);
adap = i2c_get_adapter(i2c_dev->adap->nr);
获得i2c_dev和adap结构体主要是为了后面的client
client = kzalloc(sizeof(*client), GFP_KERNEL);
填充client.一个client结构体就表示一个i2c设备
file->private_data = client;
是为了在以后的操作中能通过file中的private_data获得client
同理,释放函数就是和open函数相反,在条用close()是static int i2cdev_release(struct inode *inode, struct file *file)
{
}被调用,在这里释放了client结构体和file->private_data = NULL;
- MINI2440i2c驱动学习二
- MINI2440i2c驱动学习一
- 驱动学习笔记二:加载驱动
- Linux驱动学习--初识PCI驱动(二)
- 驱动学习总结(二)
- 驱动学习笔记(二)
- 内核驱动学习(二)
- 驱动学习笔记(二)打印字符串
- tonyos学习笔记之二 GPIO驱动
- 关于事件驱动的学习二 select()
- 文件过滤驱动学习笔记(二)
- LCD驱动 学习笔记(二)[型号:SPFD5408]
- linux驱动学习(二) Makefile高级
- linux设备驱动开发学习笔记二
- SD卡驱动学习(二)
- linux驱动学习(二) Makefile高级
- input子系统驱动学习之二
- linux2.6.28-tty设备驱动学习(二)
- 1. I2C 协议
- MFC控件大小随窗体改变而改变
- 总结@ 在C# 中的用法
- 选择排序
- 数列的排列组合求解
- MINI2440i2c驱动学习二
- w3school学习7-jQuery CSS 操作
- supersocket 调试
- MINI2440i2c驱动学习一
- 链表操作1
- Linux的页面回收与反向映射机制
- w3school学习8-jQuery AJAX 函数
- oracle 10g中的正则表达式
- web项目取得spring配置的数据源的简单实现方法