通常,会在驱动的probe函数中获取device的相关信息,然后使用 platform_set_drvdata进行保存。在其他函数中要用到时(比如remove),通过platform_get_drvdata来获取。 内核中的定义为: #define platform_get_drvdata(_dev)dev_get_drvdata(&(_dev)->dev) #define platform_set_drvdata(_dev,data)dev_set_drvdata...
内核提供了这个方法,使用函数platform_set_drvdata()可以将ndev保存成平台总线设备的私有数据。以后再要使用它时只需调用platform_get_drvdata()就可以了。 staticint__devinitdm9000_probe(struct platform_device*pdev) { struct dm9000_plat_data*pdata=pdev->dev.platform_data; struct board_info*db;/*Poin...
通常,会在驱动的probe函数中获取device的相关信息,然后使用 platform_set_drvdata进行保存。在其他函数中要用到时(比如remove),通过platform_get_drvdata来获取。 内核中的定义为: #define platform_get_drvdata(_dev)dev_get_drvdata(&(_dev)->dev) #define platform_set_drvdata(_dev,data)dev_set_drvdata...
驱动中常用到platform_set_drvdata 和 platform_get_drvdata这两个函数,用于保存局部变量: include/linux/platform_device.h中: static inline void *platform_get_drvdata(const struct platform_device *pdev) { return dev_get_drvdata(&pdev->dev); } static inline void platform_set_drvdata(struct platfo...
probe函数中定义的局部变量,如果我想在其他地方使用它怎么办呢?这就需要把它保存起来。 内核提供了这个方法,使用函数可以将保存成平台总线设备的私有数据。以后再要使用它时只需调用就可以了。 #defineplatform_set_drvdata(_dev,data)dev_set_drvdata(&(_dev)->dev,(data)) ...
void platform_set_drvdata(struct platform_device *pdev, void *data); ``` 该函数有两个参数: - `pdev`:指向要设置私有数据的平台设备的指针。 - `data`:指向要与该平台设备关联的私有数据的指针。 调用该函数后,可以使用 `platform_get_drvdata` 函数来获取与平台设备相关联的私有数据。
struct globalfifo_dev *gl = platform_get_drvdata(pdev); // 获取驱动数据 misc_deregister(&gl->miscdev); // 注销混杂设备 printk(KERN_INFO "%s driver found device unpluged!!\n", __func__); return 0; } static struct platform_driver globalfifo_driver = { ...
函数static int platform_match(struct device *dev, struct device_driver *drv)在内核drivers/base/platform.c中,其源代码如下: staticintplatform_match(structdevice*dev,structdevice_driver*drv){structplatform_device*pdev=to_platform_device(dev);structplatform_driver*pdrv=to_platform_driver(drv);/* When...
void *platform_data; /* Platform specific data, device core doesn't touch it */ void *driver_data; /* Driver data, set and get with dev_set_drvdata/dev_get_drvdata */ #ifdef CONFIG_PROVE_LOCKING struct mutex lockdep_mutex; #endif ...
platform_set_drvdata(dev,fbi); 1353 1354 ret=register_framebuffer(&fbi->fb); 1355 if(retdev,"Failedtoregisterframebufferdevice:%d\n",ret); 1357 gotofailed; 1358 } 1359 1360#ifdefCONFIG_PM 1361 //TODO 1362#endif 1363 1364#ifdefCONFIG_CPU_FREQ ...