
Linux驱动开发笔记
Linux驱动开发笔记
小C菜鸟
一蓑烟雨任平生
展开
-
5.KObject
转载声明:http://blog.chinaunix.net/uid-23253303-id-3923995.html1.介绍kobject, kset, ktype之间的关系:linux 设备驱动模型应用了面向对象的思想,其中,kobject是最基本的基类,其他数据结构都是其派生的产物,通过将kobject嵌入到各个数据结构中,实现了类似的继承关系。举例来说kobject就像是一个普通人,通过额外赋予他不同的职务和工具,使他成为了不同类型的人,比如餐厅的服务员,餐厅的领班等。kobject将各个派生原创 2020-06-24 11:31:41 · 301 阅读 · 0 评论 -
4.poll接口
1.poll原理poll用来做什么,就是用于在应用层select时候,驱动检查有没有数据可以读的函数。在很多函数里面都要实现。目的就是告诉应用层数据到了。当select时,是否直接返回,还得取决于传入的fd的属性,如果属性是阻塞型,会使用驱动的poll函数做检查,有数据就会返回相应的掩码,如果没有,那么select就在会阻塞,当驱动层有数据到来时,会再一次的调用poll函数做检查,如果有数据了,那么立马会唤醒阻塞的进程或者线程。那么select就会返回。如果不阻塞,当poll检查没有数据时,会立原创 2020-06-23 18:11:21 · 718 阅读 · 0 评论 -
3.模块依赖EXPORT_SYMBOL
1.依赖的模块#include <linux/init.h>#include <linux/module.h>void depend_func(void){ printk("depend func\n");}EXPORT_SYMBOL(depend_func);static int __init depend_module_init(void){ printk("depend init\n"); return 0;}static void _原创 2020-06-22 19:31:00 · 237 阅读 · 0 评论 -
2.带参数的可加载模块
1. 定义模块参数的方法:module_param(name, type, perm);其中,name:表示参数的名字; type:表示参数的类型; perm:表示参数的访问权限;2. 数组类型模块参数的定义:用逗号间隔的列表提供的值;声明一个数组参数:module_param_array(name, type, num, perm);其中,name:表示数组的名字; type:表示参数的类型; num :表示数组中元素数量; perm:表原创 2020-06-22 19:14:43 · 298 阅读 · 0 评论 -
1. 简单的可加载模块
module_init(**_init); // 模块初始化接口module_exit(**_exit); // 模块卸载接口#include <linux/init.h>#include <linux/module.h>static int __init simple_module_init(void){ printk("simple module init.\n"); return 0;}static void __exit simple_mo原创 2020-06-22 18:46:14 · 223 阅读 · 0 评论