在linux 内核编程中,会经常见到一个宏函数container_of(ptr,type,member), 但是当你通过追踪源码时,...
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(...
*(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(&rpdev->dev,ctrldev); returnret; @@ -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); ...
pci_set_drvdata(pdev, priv);return 0;out_port: com20020pci_remove(pdev); err_free_arcdev: free_arcdev(dev); break; } if (ret) com20020pci_remove(pdev); return ret; }8 changes: 2 additions & 6 deletions 8 drivers/net/bonding/bond_main.c Original file line numberDiff line ...
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 ...
video_set_drvdata(dev->vfd, dev); } } 该函数中出现一个config_a_device(dev)函数,这个函数是video_device设备的初始化配置函数,包括对文件操作指针的赋值,这里是一个初始化封装。 先来看看v4l2_detect()函数: structcamera_sensor *v4l2_detect(structacq_device_t *dev) ...
ret = request_irq((unsigned int)cirq, (irq_handler_t)mt6573_sd_cd_irq, 0, DRV_NAME, host); if (ret) goto free_irq; } } 这一段是热插拔识别SD卡的重要函数,做热插拔这里必须实现。 platform_set_drvdata(pdev, mmc); //把mmc的数据挂到pdev私有数据下 ...
浅析ASoC-audio驱动oss框架下_dev_dsp与alsa框架下设备节点打开和创建简易流程 -
Linux以太网驱动架构 linux以太网架构共包含三个部分 1 linux的网络架构 2 以太网mac数据驱动(收发) 3 以太网phy的驱动 linux的网络驱动架构及流程申请注册及初始化设备 1...ndev) return -ENOMEM; SET_NETDEV_DEV(ndev, &pdev->...