void *dev_get_drvdata(const struct device *dev)///返回驱动数据的指针, 参数设备指针 { if (dev && dev->p)//设备指针不为NULL, 下面的p也不为NULL return dev->p->driver_data;//返回它的驱动数据 return NULL;///否则返回NULL } 你还是问问把,感觉加的注释也没啥意义 ...
会经常见到一个宏函数container_of(ptr,type,member), 但是当你通过追踪源码时,像我们这样的一般人就会绝望了(这一堆都是什么呀?函数还可以这样定义???怎么还有0呢??? 哎,算了,还是放弃吧。。。)。这就是内核大佬们厉害的地方,随便两行代码就让我们怀疑人生,凡是都需要一个过程,慢慢来吧。
add_class_attrs(class_get(cls));{ class_create_file(cls, &cls->class_attrs[i]);{ sysfs_create_file(&cls->p->subsys.kobj, &attr->attr); } } } } } device_create(structclass*class,structdevice *parent, dev_t devt,void*drvdata,constchar*fmt, ...);//函数原型 修改自动创建的设备...
); } struct platform_device *platformdev = of_find_device_by_node(dmaOfNode); struct rk3568_i2s_tdm_dev *i2s_tdm = dev_get_drvdata(&platformdev->dev); (void)regBase; if (regmap_read(i2s_tdm->regmap, reg, val)) { AUDIO_DEVICE_LOG_ERR("read register fail: [%04x]", r...
struct spidev_data *spidev = spi_get_drvdata(spi);//根据spi设备获取spidev_data spin_lock_irq(&spidev->spi_lock);//上自旋锁 spidev->spi = NULL;//清空spidev_data->spi指针 spi_set_drvdata(spi, NULL);//spi->dev->p->driver_data=NULL ...
video_set_drvdata(dev->vfd, dev); } } 该函数中出现一个config_a_device(dev)函数,这个函数是video_device设备的初始化配置函数,包括对文件操作指针的赋值,这里是一个初始化封装。 先来看看v4l2_detect()函数: structcamera_sensor *v4l2_detect(structacq_device_t *dev) ...
会经常见到一个宏函数container_of(ptr,type,member), 但是当你通过追踪源码时,像我们这样的一般人就会绝望了(这一堆都是什么呀?函数还可以这样定义???怎么还有0呢??? 哎,算了,还是放弃吧。。。)。这就是内核大佬们厉害的地方,随便两行代码就让我们怀疑人生,凡是都需要一个过程,慢慢来吧。
device_create(structclass*class,structdevice *parent, dev_t devt,void*drvdata,constchar*fmt, ...);//函数原型 修改自动创建的设备节点的权限、所有者和所属组: 修改system/core/rootdir/ueventd.rc文件即可,在其中加入将要创建的设备节点的相关属性。
struct spidev_data *spidev = spi_get_drvdata(spi);//根据spi设备获取spidev_data spin_lock_irq(&spidev->spi_lock);//上自旋锁 spidev->spi = NULL;//清空spidev_data->spi指针 spi_set_drvdata(spi, NULL);//spi->dev->p->driver_data=NULL ...
struct spidev_data *spidev = spi_get_drvdata(spi);//根据spi设备获取spidev_data spin_lock_irq(&spidev->spi_lock);//上自旋锁 spidev->spi = NULL;//清空spidev_data->spi指针 spi_set_drvdata(spi, NULL);//spi->dev->p->driver_data=NULL...