- 论坛徽章:
- 1
|
第一次学习和开发驱动程序,有许多问题还是很模糊,希望能够得到大家的帮助。
最近需要开发一款CAN卡的驱动,恰好实验室有另外一块研华的CAN1680是有linux下的驱动的,于是学习了源代码,也看了《LINUX设备驱动程序》一书,看了一部分,感觉讲的很模糊,概念性的东西太多了,好了进入正题。问题是这样的:
static struct file_operations can_fops = {
.owner = THIS_MODULE,
.open = can_open,
.release = can_close,
.read = can_read,
.write = can_write,
.poll = can_select,
.ioctl = can_ioctl,
.fasync = can_fasync,
};
例如字符型设备驱动对file_operations这个结构体进行填充,我可不可以理解为重新实现了open(),wirte(),read()等函数?
因为我发现CAN1680那家公司给的CAN驱动例程里用的write(),和read()函数都是用的unstd.h或者fcntl.h里面的库函数。。。。那如果这样的话,我在驱动程序里实现的这些write(),read()之类的函数又是谁在调用呢?驱动程序本身么???
|
|