//symb_struct_C.c --> 标记化结构
/*********************************************************
* 标记传参不用理会参数传递的顺序;
* 可以选择性传参(使用标记初始化法,可以相当自由地对你有把握的参数进行初始化);
* 扩展性更好(很容易在该结构体中增加一个字段);
* LDD3上如是说:将频繁被访问的成员放在相同硬件缓存上,
将大大提高效率(the entrance of some funcs)。
**********************************************************/
#define THIS_MODULE ">>>MY_MODULE"
struct file_operations{
char *owner;
void (*llseek)(void);
void (*read)(void);
void (*write)(void);
void (*ioctl)(void);
void (*open)(void);
void (*release)(void);
};
void my_llseek(void)
{
puts(">>>my_llseek...");
}
void my_read(void)
{
puts(">>>my_read...");
}
void my_write(void)
{
puts(">>>my_write...");
}
void my_ioctl(void)
{
puts(">>>my_ioctl...");
}
void my_open(void)
{
puts(">>>my_open...");
}
void my_release(void)
{
puts(">>>my_release...");
}
struct file_operations my_fops = {
.owner = THIS_MODULE,
.llseek = my_llseek,
.write = my_write,
.read = my_read,
.ioctl = my_ioctl,
.open = my_open,
.release = my_release,
};
int main(int argc, char *argv[])
{
puts(my_fops.owner);
my_fops.open();
my_fops.read();
my_fops.write();
my_fops.ioctl();
my_fops.release();
return 0;
}