在linux 内核编程中,会经常见到一个宏函数container_of(ptr,type,member), 但是当你通过追踪源码时,像我们这样的一般人就会绝望了(这一堆都是什么呀?函数还可以这样定义???怎么还有0呢??? 哎,算了,还是放弃吧。。。)。这就是内核大佬们厉害的地方,随便两行代码就让我们怀疑人生,凡是都需要一个...
IS_ERR_OR_NULL(res->mac)) 4454 memcpy(priv->dev->dev_addr, res->mac, ETH_ALEN); 4455 4456 dev_set_drvdata(device, priv->dev); 4457 4458 /* Verify driver arguments */ 4459 stmmac_verify_args(); 4460 4461 /* Allocate workqueue */ 4462 priv->wq = create_singlethread_workqueue(...
Interestingly the author of the Linux Misc Device: general protection fault at misc_deregister() on driver with private data allocation question tried to use driver data of the miscelleneous device (which is available via the this_device member of struct miscdevice). However, as we may see, ...
*(cam->video_dev) = mxc_v4l_template;//设置ops操作->v4l2_file_operations->mxc_v4l_ioctl->mxc_v4l_do_ioctl->VIDIOC_*_IOCTL:{...} video_set_drvdata(cam->video_dev, cam);//将cam设置为cam->video_dev的私有数据->dev_set_drvdata ->dev->p->driver_data = data; cam->crop_bounds....
dev_set_drvdata(dev, res_name); dev_dax->dax_kmem_res = new_res;return 0; } @@ -95,7 +92,6 @@ static int dev_dax_kmem_remove(struct device *dev) { struct dev_dax *dev_dax = to_dev_dax(dev); struct range range = dax_kmem_range(dev_dax);...
dev_set_drvdata(&rpdev->dev,ctrldev); returnret; Expand All@@ -531,7 +524,7 @@ static void rpmsg_chrdev_remove(struct rpmsg_device *rpdev) if(ret) dev_warn(&rpdev->dev,"failed to nuke endpoints: %d\n",ret); device_del(&ctrldev->dev); ...
set_bit(minor, minors);//更新次设备位图 list_add(&spidev->device_entry, &device_list);//添加进设备链表 } mutex_unlock(&device_list_lock); if (status == 0) spi_set_drvdata(spi, spidev);//spi->dev->p->driver_data=spidev ...
sdio_set_drvdata(func, card); lbs_add_card(card, &func->dev); /* Allocate an Ethernet device and register it */ lbs_cfg_alloc // 分配一个无线网络设备结构体,并初始化 wdev = kzalloc(sizeof(struct wire wdev->wiphy = wiphy_new(&lbs_cfg80211_ops, sizeof( lbs_init_adapter // init...
video_set_drvdata(dev->vfd, dev); } } 该函数中出现一个config_a_device(dev)函数,这个函数是video_device设备的初始化配置函数,包括对文件操作指针的赋值,这里是一个初始化封装。 先来看看v4l2_detect()函数: structcamera_sensor *v4l2_detect(structacq_device_t *dev) ...
浅析ASoC-audio驱动oss框架下_dev_dsp与alsa框架下设备节点打开和创建简易流程 -