首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

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

2012-03-19 
请教结构体定义--LINUX驱动程序中语句 请教下面这个结构体定义中read:device_read,一句是什么意思?structf

请教结构体定义--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, 也可以看代码.

热点排行