struct device { ... struct device_private *p; ... }
struct device_private { ... void *driver_data; ... }
dev_set_drvdata
void dev_set_drvdata(struct device *dev, void *data) { int error; if (!dev) return; if (!dev->p) { error = device_private_init(dev); if (error) return; } dev->p->driver_data = data; }
该函数的作用其实就是将驱动数据指针data存储到设备结构体变量中
dev_get_drvdata
void *dev_get_drvdata(const struct device *dev) { if (dev && dev->p) return dev->p->driver_data; return NULL; }
与dev_set_drvdata相反的操作,将之前调用dev_set_drvdata写入设备结构体变量中的驱动数据取出来