当前位置: 技术问答>linux和unix
这个结构体(struct file_operations fh_sbr_dev_ops)是什么意思?
来源: 互联网 发布时间:2016-10-17
本文导语: struct file_operations fh_sbr_dev_ops= { read:fh_sbr_dev_read, // write:fh_sbr_dev_write, open:fh_sbr_dev_open, release:fh_sbr_dev_close, ioctl:fh_sbr_dev_ioctl }; 代码出自linuxnetbridgeBr.c文件.是桥接部分的代码.看了一下...
struct file_operations fh_sbr_dev_ops=
{
read:fh_sbr_dev_read,
// write:fh_sbr_dev_write,
open:fh_sbr_dev_open,
release:fh_sbr_dev_close,
ioctl:fh_sbr_dev_ioctl
};
代码出自linuxnetbridgeBr.c文件.是桥接部分的代码.看了一下,不太明白里面的成员变量都是些什么东西.
比如最后一个 ioctl:fh_sbr_dev_ioctl:
ioctl的定义如下:
#define ioctl(a,b,c) xf86ioctl(a,b,c)
似乎是个函数宏.
fh_sbr_dev_ioctl的定义如下:
int fh_sbr_dev_ioctl(struct inode *inode,struct file *filep,unsigned int cmd,unsigned long args)
{ ....}
根本就是另一个函数了.那它们中间那个冒号是啥,放在一起又是个啥意思?
敬请各位赐教.
{
read:fh_sbr_dev_read,
// write:fh_sbr_dev_write,
open:fh_sbr_dev_open,
release:fh_sbr_dev_close,
ioctl:fh_sbr_dev_ioctl
};
代码出自linuxnetbridgeBr.c文件.是桥接部分的代码.看了一下,不太明白里面的成员变量都是些什么东西.
比如最后一个 ioctl:fh_sbr_dev_ioctl:
ioctl的定义如下:
#define ioctl(a,b,c) xf86ioctl(a,b,c)
似乎是个函数宏.
fh_sbr_dev_ioctl的定义如下:
int fh_sbr_dev_ioctl(struct inode *inode,struct file *filep,unsigned int cmd,unsigned long args)
{ ....}
根本就是另一个函数了.那它们中间那个冒号是啥,放在一起又是个啥意思?
敬请各位赐教.
|
中间的冒号是指前面是结构定义的名字,后面是具体实现函数的名字。
|
+1
现在内核中用得更多的形式是:
struct file_operations fh_sbr_dev_ops=
{
.read = fh_sbr_dev_read,
...
};
|
这是linux驱动程序的一种结构
应用程序不能直接操作硬件,使用统一的接口函数调用硬件驱动程序,这些接口函数就集合在file_operations结构中
应用程序不能直接操作硬件,使用统一的接口函数调用硬件驱动程序,这些接口函数就集合在file_operations结构中
|
2.4内核是那样表达,到2.6内核
struct file_operations fh_sbr_dev_ops=
{
.read = fh_sbr_dev_read,
...
};
只是一个形式而已,二者皆可。
struct file_operations fh_sbr_dev_ops=
{
.read = fh_sbr_dev_read,
...
};
只是一个形式而已,二者皆可。