
Android
Sweeet
这个作者很懒,什么都没留下…
展开
-
MODULE_DEVICE_TABLE的理解
在Linux IIC驱动中看到一段代码:static struct platform_device_id xx_driver_ids[] = {{.name = "s3c2410-i2c",.driver_data = TYPE_S3C2410,}, {.name = "s3c2440-i2c",.driver_data = TYPE_S3C2440,转载 2014-09-04 15:50:27 · 1437 阅读 · 0 评论 -
file_operations中各项解析
linux设备驱动中file_operations结构体分析 struct module *owner第一个 file_operations 成员根本不是一个操作; 它是一个指向拥有这个结构的模块的指针. 这个成员用来在它的操作还在被使用时阻止模块被卸载. 几乎所有时间中, 它被简单初始化为 THIS_MODULE, 一个在 中定义的宏.loff_t (*llseek)转载 2014-05-16 09:31:54 · 756 阅读 · 0 评论 -
linux i2c设备驱动
一. i2c的结构体 1. i2c适配器[cpp] view plaincopystruct i2c_adapter { struct module *owner; //模块所有者 unsigned int id __deprecated; unsigned int class; //支持转载 2014-06-24 17:28:30 · 352 阅读 · 0 评论 -
Linux workqueue工作原理
1. 什么是workqueue Linux中的Workqueue机制就是为了简化内核线程的创建。通过调用workqueue的接口就能创建内核线程。并且可以根据当前系统CPU的个数创建线程的数量,使得线程处理的事务能够并行化。workqueue是内核中实现简单而有效的机制,他显然简化了内核daemon的创建,方便了用户的编程. 工作队列(workqueue)是另外一转载 2014-06-25 16:29:49 · 270 阅读 · 0 评论 -
字符杂项设备(miscdevice)
misc杂项设备是主设备号为10的驱动设备在linux内核源码miscdevice.h里杂项设备描述结构体定义:struct miscdevice {int minor;const char *name;const struct file_operations *fops;struct list_head list;struct转载 2014-05-16 11:25:13 · 497 阅读 · 0 评论 -
ABS_MT_TOUCH_MAJOR和ABS_MT_WIDTH_MAJOR
通常的多点触摸周期可以描述为: ABS_MT_*|SYN_MT_REPORT|ABS_MT_*|SYN_MT_REPORT|SYN_REPORT 有些ABS_MT事件是必须实现的,如ABS_MT_POSITION_X和ABS_MT_POSITION_Y.而某些事件,如ABS_MT_TOUCH_MAJOR和ABS_MT_WIDTH_MAJOR是否需要实现则转载 2014-05-16 11:20:23 · 2169 阅读 · 0 评论 -
Linux内核中的Kconfig、Makefile、.config
毛毛同学今天学习了驱动程序模块的安装与卸载,在这个过程中毛毛发现,内核的目录中有许多的Kconfig、Makefile文件,但是毛毛不知道为什么需要这些文件,这些文件又是用来做什么的。下面我们就和陶毛毛同学一起来学习下这些文件的作用是什么。 首先我们来学习什么Makefile,什么是Kconfig ,什么是.config Makefile:一个文本形式的文件转载 2014-05-16 15:43:41 · 274 阅读 · 0 评论 -
System.map
有关System.map文件的信息好象很缺乏。其实它一点也不神秘,并且在整个事情当中它并不象看上去那么得重要。但是由于缺乏必要的文档说明,使其显得比较神秘。它就象耳垂,我们每个人都有,但却不知道是干什么用的。本网页就是用来说明这个问题的。注意,我并不会是百分之一百正确的。例如,一个系统很可能没有/proc文件系统支持,但是大多数系统肯定有。这里我假定你是“随大流的”,并有一个典型配置的系统转载 2014-05-22 10:50:19 · 246 阅读 · 0 评论 -
input_dev结构体分析
在输入子系统的设备驱动中,最重要的数据结构是struct input_dev,如下所示。需要完成的大部分工作都是围绕着它来的,它是驱动的主体。每个struct input_dev代表一个输入设备。 /* include/linux/input.h */struct input_dev { const char *name;//设备名 const char *phys; c转载 2014-05-23 11:18:01 · 455 阅读 · 0 评论 -
module_init 和 late_initcall 区别
在init.h 中有如下定义 #define pure_initcall(fn) __define_initcall("0",fn,1)#define core_initcall(fn) __define_initcall("1",fn,1)#define core_initcall_sync(fn) __define_initcall("1s",fn,1s)转载 2014-06-24 17:10:06 · 309 阅读 · 0 评论 -
Linux中断申请之request_threaded_irq
在linux里,中断处理分为顶半(top half),底半(bottom half),在顶半里处理优先级比较高的事情,要求占用中断时间尽量的短,在处理完成后,就激活底半,有底半处理其余任务。底半的处理方式主要有soft_irq, tasklet, workqueue三种,他们在使用方式和适用情况上各有不同。soft_irq用在对底半执行时间要求比较紧急或者非常重要的场合,主要为一些subsys转载 2014-05-23 13:46:47 · 851 阅读 · 0 评论 -
input-dev输入子系统
一.input子系统简介: linux系统中,input输入子系统驱动主要可以分为:设备驱动层、input core层和input handler事件处理层。设备驱动层为具体用户设备驱动,输入设备由struct input-dev 结构表示,并由input_register_device和input_unregister_device来注册和卸载;input hander事件转载 2014-05-23 11:16:59 · 574 阅读 · 0 评论 -
关于file_operations结构体
结构体file_operations在头文件 linux/fs.h中定义,用来存储驱动内核模块提供的对设备进行各种操作的函数的指针。该结构体的每个域都对应着驱动内核模块用来处理某个被请求的 事务的函数的地址。举个例子,每个字符设备需要定义一个用来读取设备数据的函数。结构体 file_operations中存储着内核模块中执行这项操作的函数的地址。一下是该结构体 在内核2.6.5中看起来的样子:转载 2014-05-16 09:39:32 · 249 阅读 · 0 评论