定义位置:kernel/msm-3.18/include/linux/device.h
static inline void dev_set_drvdata(struct device *dev, void *data){dev->driver_data = data;
}
static inline void *dev_get_drvdata(const struct device *dev){return dev->driver_data;
}kernel/msm-3.18/include/linux/i2c.h
struct i2c_client{unsigned short addr;struct device dev;
};//自定义结构体
struct data{int num;char *name;
};栗子一:i2c_set_clientdata和i2c_get_clientdata也是调用这两个函数
kernel/msm-3.18/include/linux/i2c.h
static inline void i2c_set_clientdata(struct i2c_client *dev, void *data){dev_set_drvdata(&dev->dev, data);
}
static inline void *i2c_get_clientdata(const struct i2c_client *dev){return dev_get_drvdata(&dev->dev);
}struct data set_stu;
struct i2c_client *i2c;
//1.申请内存,devm_kzalloc()函数自动释放内存
devm_kzalloc(&i2c->dev, sizeof(struct stu), GFP_KERNEL);//2.设置结构体stu到kernel结构体void*
dev_set_drvdata(&i2c->dev, set_stu);//3.获取结构体stu
struct data get_stu;
get_stu = dev_get_drvdata(&i2c->dev);//4.置空,不用时
dev_set_drvdata(&i2c->dev, NULL);栗子二:struct snd_soc_dai{};
<1>.kernel/msm-3.18/include/sound/soc-dai.h
struct snd_soc_dai{struct snd_soc_codec *codec;
}; <2>.kernel/msm-3.18/include/sound/soc.h
struct snd_soc_codec { struct snd_soc_component component;
};<3>.kernel/msm-3.18/include/sound/soc.h
struct snd_soc_component {struct device *dev;
};struct data set_stu;
struct data get_stu;
struct snd_soc_dai *dai;//1.申请内存,devm_kzalloc()函数自动释放内存
devm_kzalloc(dai->codec->component.dev, sizeof(struct stu), GFP_KERNEL);//2.设置结构体stu到kernel结构体void*
dev_set_drvdata(dai->codec->component.dev, set_stu);//3.获取结构体stu
get_stu = (struct data*)dev_get_drvdata(dai->codec->component.dev); //4.置空,不用时
dev_set_drvdata(dai->codec->component.dev, NULL);

Linux内核dev_set_drvdata()和dev_get_drvdata()存储自定义结构体用法相关推荐

  1. Linux内核中的PCB里面task_struct结构体中的具体信息

    1.PCB进程控制块--->task_struct 广义上,所有的进程信息被放在一个叫做进程控制块的数据结构中,可以理解为进程属性的集合. 每个进程在内核中都有一个进程控制块来维护进程的相关信息 ...

  2. exfat单元分配要设置多少_微软宣布,支持往Linux内核里添加exFAT存储了!跨系统存储的福音...

    栗子 发自 凹非寺  量子位 报道 | 公众号 QbitAI exFAT,是微软开发的文件系统,为闪存而生. 你的U盘.SD卡.手机等等存储设备,能存4G以上的大文件,很大程度上是它的功劳. 可exF ...

  3. Linux下DIR,dirent,stat等结构体详解

    最近在看Linux下文件操作相关章节,遇到了这么几个结构体,被搞的晕乎乎的,今日有空,仔细研究了一下,受益匪浅. 首先说说DIR这一结构体,以下为DIR结构体的定义: struct __dirstre ...

  4. Linux下DIR,dirent,stat等结构体详解(转)

    最近在看Linux下文件操作相关章节,遇到了这么几个结构体,被搞的晕乎乎的,今日有空,仔细研究了一下,受益匪浅. 首先说说DIR这一结构体,以下为DIR结构体的定义: struct __dirstre ...

  5. Gin 框架学习笔记(01)— 自定义结构体绑定表单、绑定URI、自定义log、自定义中间件、路由组、解析查询字符串、上传文件、使用HTTP方法

    要实现一个 API 服务器,首先要考虑两个方面:API 风格和媒体类型.Go 语言中常用的 API 风格是 RPC 和 REST,常用的媒体类型是 JSON.XML 和 Protobuf.在 Go A ...

  6. 【Qt】信号和槽传递自定义结构体

    一.使用信号和槽传递自定义结构体 这是一个老问题了,但是每次使用都要bing,因此做个笔记整理下. 一共有三种方法,可以让结构体在信号和槽之间传递.前两种方法可以让结构体在线程之间传递,最后一种方法只 ...

  7. C++对自定义结构体变量排序

    在C++中,如果容器中的数据类型为int double等基本类型时,我们很容易利用STL自带的函数对其进行排序,但是如果数据类型是我们自定义的结构体或者类呢,这时候再利用STL进行排序就力不从心了.在 ...

  8. Qt中的QByteArray和自定义结构体之间的相互转换

    在Qt项目开发中,经常会碰到自定义结构体和字符数组之间的转换问题,不妨假设结构体名字为custom_struct, 字符数组名字为array_data 1. QByteArray转换为自定义结构体 c ...

  9. QML < 5 > QML 访问C++ 类 (函数Q_INVOKABLE、枚举Q_ENUMS 、成员变量Q_PROPERTY、自定义结构体QVariantMap、List数据QVariantL

    QML < 5 > QML 访问C++ 类 (函数Q_INVOKABLE.枚举Q_ENUMS .成员变量Q_PROPERTY.自定义结构体(QVariantMap ).List数据QVar ...

最新文章

  1. hr2000 光谱Matlab,HR4000 HR2000 HR2000+ 光纤光谱仪 CG HC-1光栅 消除高阶衍射滤光片-广州标旗...
  2. setFilters使用方法
  3. Java JDBC批处理插入数据操作
  4. Vue011_ 内置指令与自定义指令
  5. RabbitMQ教程C#版 “Hello World”
  6. fermat数推素数无穷_如何在3分钟内对Fermat测试进行素数测试
  7. 多少秒算长镜头_你了解植保无人机一天到底能够干多少活吗??
  8. webservice测试工具
  9. Android 数据存储/访问 之 SharedPreferences(偏好设定)
  10. IDEA运行下载的Servlet时报错 Error running Tomcat 8.5.8: Unable to open debugger port (127.0.0.1:49551):
  11. linux局域网即时通讯,基于身份的Linux下局域网即时通讯系统的研究与实现
  12. linux限制message日志大小,message显示rsyslog日志服务警告信息due to rate-limiting
  13. diskgenius系统迁移_关于系统迁移至SSD
  14. [Hive优化]--常用参数优化汇总
  15. python 画图colorbar 颜色大全 plt.cm.get_cmap
  16. 【开源】司马编译器 Smart Compiler
  17. HTML中清除浮动的几种方法
  18. linux ubuntu 常用口令
  19. 订阅号消息 服务号 信息推送
  20. Handdle AI在芯片字符瑕疵识别检测中的应用

热门文章

  1. goaccess配置nginx日志解析
  2. MAC下安装NDKR10e
  3. (面试必知)必知必会的冒泡排序和快速排序
  4. 旧的非flash版Metalink的入口
  5. [Android Samples视频系列之ApiDemos] App-Activity-Recreate
  6. KB954430补丁重复安装失败的解决办法
  7. VC多线程编程(转)
  8. Heaps 高性能游戏引擎
  9. Spring Cloud 是什么
  10. html tab键自动填充,HTML tabindex — TAB按键操作