请问结构体定义--LINUX驱动程序中语句

请教结构体定义--LINUX驱动程序中语句

请教下面这个结构体定义中read:   device_read,一句是什么意思?

struct   file_operations   fops   =  
{
read:   device_read,
write:   device_write,
open:   device_open,
release:   device_release
};


我怀疑是 初始化 呵呵 严重怀疑


各位老大,这是C的基础知识呀。
无语了,不知道有没有听过“勿在浮沙之上筑高台”?


struct file_operations fops =
{
read: device_read,
write: device_write,
open: device_open,
release: device_release
};

应该是给fops结构体变量的read 赋初值device_read
这应该是gcc的用法,标准c应该不支持


类似的还有
struct test test1=
{
.a1=a1func,
.a2=a2func

}


只是语法问题吧!


gcc对标准C的扩展,<<LINUX设备驱动程序>>一书中说了相关的内容


意思是你在上层程序调用read(这个驱动文件打开后返回的句柄,xx,size)的时候,在驱动里面其实调用的是device_read
我靠这么简单的问题怎么这么多人回答的千奇百怪

意思是你在上层程序调用read(这个驱动文件打开后返回的句柄,xx,size)的时候,在驱动里面其实调用的是device_read
我靠这么简单的问题怎么这么多人回答的千奇百怪
==========================================
从C语法看就是:read = device_read?

============================

no,只是一种映射


gcc下结构体赋初值的一种语法,
标准C下一般直接struct test test1={*,*,*..},*是成员值,如device_read
是成员变量read的值
gcc把每个值和成员变量对应起来,看的更清楚.


这是典型的OO-C结构, file_operations结构体里保存函数指针, 形成类似于C++中的父类.
创建一个file_operations结构, 指定函数指针的地址, 类似于继承了父类的子类.
底层调用时只管调用file_ops结构的指针, 便调用了指向的函数, 类似于多态.

详细请见LDD, 也可以看代码.

请问结构体定义--LINUX驱动程序中语句

相关文章:

你感兴趣的文章:

标签云: