linux2.6.37中at24.c驱动的探讨
今天看到内核源码驱动中at24eeprom系列的驱动程序(driver/misc/eeprom/at24.c),这个驱动使用了sysfs的机制,建立了bin_attribute的属性结构体,并没有建立类似普通字符驱动中file_operation结构体(包含read.wtire等函数),所以我想请假下大家如何调用bin_attribute中show和store函数(对应eeprom的读写函数)。是否直接读写二进制属性文件?但读写eeprom具体地址和数据改如何传入内核呢?希望大家对这套机制熟悉的大师能指点指点。
----------------------------------------------------------------------
struct bin_attribute {
struct attributeattr;
size_tsize;
void*private;
ssize_t (*read)(struct file *, struct kobject *, struct bin_attribute *,
char *, loff_t, size_t);
ssize_t (*write)(struct file *,struct kobject *, struct bin_attribute *,
char *, loff_t, size_t);
int (*mmap)(struct file *, struct kobject *, struct bin_attribute *attr,
struct vm_area_struct *vma);
};
[解决办法]
知道了,使用lseek()指定到指定位置,在进行读写操作
其实就是对设备文件看成一个二进制文件进行操作了。
OK了