当前位置: 技术问答>linux和unix
I2C驱动里的一个结构体
来源: 互联网 发布时间:2016-11-04
本文导语: static struct platform_driver s3c24xx_i2c_driver = { .probe = s3c24xx_i2c_probe, .remove = s3c24xx_i2c_remove, .id_table = s3c24xx_driver_ids, .driver = { .owner = THIS_MODULE, .name = "s3c-i2c", .pm = S3C24XX_DEV_PM_OPS, }, }; 1.我现在的理解是它在...
static struct platform_driver s3c24xx_i2c_driver = {
.probe = s3c24xx_i2c_probe,
.remove = s3c24xx_i2c_remove,
.id_table = s3c24xx_driver_ids,
.driver = {
.owner = THIS_MODULE,
.name = "s3c-i2c",
.pm = S3C24XX_DEV_PM_OPS,
},
};
1.我现在的理解是它在定义结构体的同时给结构体进行了赋值,这么理解对么?1
2..driver里面又嵌套着这样的定义,是不是道理也是一样的?引用的时候是“结构体名.driver.owner”这么引用么???
小弟才疏学浅,请各位高手指教,不胜感激。
.probe = s3c24xx_i2c_probe,
.remove = s3c24xx_i2c_remove,
.id_table = s3c24xx_driver_ids,
.driver = {
.owner = THIS_MODULE,
.name = "s3c-i2c",
.pm = S3C24XX_DEV_PM_OPS,
},
};
1.我现在的理解是它在定义结构体的同时给结构体进行了赋值,这么理解对么?1
2..driver里面又嵌套着这样的定义,是不是道理也是一样的?引用的时候是“结构体名.driver.owner”这么引用么???
小弟才疏学浅,请各位高手指教,不胜感激。
|
是这样的,驱动中到处使用这种方式。
|
你可以查看platform_driver这个结构体的定义你可以发现,他其实就是包含了函数指针和一个名为device_driver 的结构体。 s3c24xx_i2c_driver 就是定义了一个名s3c24xx_i2c_driver为platform_driver结构,同时对其成员赋值。
struct platform_driver {
int (*probe)(struct platform_device *);
int (*remove)(struct platform_device *);
void (*shutdown)(struct platform_device *);
int (*suspend)(struct platform_device *, pm_message_t state);
int (*suspend_late)(struct platform_device *, pm_message_t state);
int (*resume_early)(struct platform_device *);
int (*resume)(struct platform_device *);
struct device_driver driver;
};
struct platform_driver {
int (*probe)(struct platform_device *);
int (*remove)(struct platform_device *);
void (*shutdown)(struct platform_device *);
int (*suspend)(struct platform_device *, pm_message_t state);
int (*suspend_late)(struct platform_device *, pm_message_t state);
int (*resume_early)(struct platform_device *);
int (*resume)(struct platform_device *);
struct device_driver driver;
};