风家一良 2023-01-12 11:43 采纳率: 0%
浏览 12

globalmem代码笔记问题

《linux设备驱动开发详解》中globalmem代码笔记
https://blog.csdn.net/star714/article/details/77388639

我知道container_of根据一个结构体变量中的一个成员变量的指针来获取指向整个结构体变量的指针,也试验了ok。
看到网上写的,
inode->i_cdev是系统函数inode结构体的成员指针,
struct globalmem_dev是用户自己定义的字符设备的结构体类型,
cdev是用户自己字符设备的结构体成员-字符设备cdev。
涉及到两个结构体,一个是系统自带的inode函数结构体,另一个是用户设备的结构体,这两个不是一个结构体,但是用container_of是为了打通什么吗?

img

  • 写回答

1条回答 默认 最新

  • heart_6662 2023-01-12 12:05
    关注

    container_of的作用是根据一个结构体变量中的一个成员变量的指针来获取指向整个结构体变量的指针。在这个代码中,inode->i_cdev是系统函数inode结构体的成员指针,而struct globalmem_dev是用户自己定义的字符设备的结构体类型,cdev是用户自己字符设备的结构体成员-字符设备cdev。container_of帮助找到用户自己定义的字符设备结构体地址,从而获取字符设备的相关信息。并且将这个结构体赋给filp->private_data
    通过这个方法将inode结构体的成员i_cdev关联到globalmem_dev结构体, 从而在open、read、write、release操作中可以使用filp->private_data(dev)来操作globalmem_dev中的成员,而不需要再次转换关联。

    评论

报告相同问题?

问题事件

  • 创建了问题 1月12日

悬赏问题

  • ¥15 在虚拟机中安装flash code
  • ¥15 单片机stm32f10x编写光敏电阻调节3.3伏大功率灯亮度(光强越大灯越暗,白天正常光强灯不亮,使用ADC,PWM等模块)望各位找一下错误或者提供一个可实现功能的代码
  • ¥20 verilog状态机方法流水灯
  • ¥15 pandas代码实现不了意图
  • ¥15 GD32H7 从存储器到外设SPI传输数据无法重复启用DMA
  • ¥25 LT码在高斯信道下的误码率仿真
  • ¥45 渲染完成之后将物体的材质贴图改变,自动化进行这个操作
  • ¥15 yolov5目标检测并显示目标出现的时间或视频帧
  • ¥15 电视版的优酷可以设置电影连续播放吗?
  • ¥50 复现论文;matlab代码编写