
linux内核
liwendovo
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
vim使用技巧
1. 本文的目标是提供一些vim的使用技巧,利用这些技巧可以提高vim的操作效率。部分技巧在vi上也可以使用,但是现在基本上都是用vim了。2. 本文是整理和总结使用技巧,而非讲解vim入门,因此不会涉及最基本的使用,例如如何上移或下移光标,对此类操作请参阅任何一本vim或者vi教程。3. 本文阅读对象是了解了vim的基本操作,而希望高效地利用vim进行工作的人。熟练使用vim的人自然转载 2012-10-12 10:13:13 · 789 阅读 · 0 评论 -
Linux设备模型之input子系统详解(一)
一:前言最近在研究android的sensor driver,主要是E-compass,其中用到了Linux input子系统.在网上也看了很多这方面的资料,感觉还是这篇分析的比较细致透彻,因此转载一下以便自己学习,同时和大家分享!(这篇博客主要是以键盘驱动为例的,不过讲解的是Linux Input Subsystem,可以仔细的研究一下!)键盘驱动将检测到的所有按键都上报给了inpu转载 2012-08-09 09:16:01 · 964 阅读 · 0 评论 -
linux底层驱动模型之二:上层容器
§1)bus 系统中总线由struct bus_type描述,定义为:struct bus_type { char * name; 总线类型的名称 struct subsystem subsys; 与该总线相关的subsystem struct kset drivers; 所有与该总线相关的驱动程序集合 struct kset device转载 2012-07-24 22:16:43 · 545 阅读 · 0 评论 -
input子系统学习笔记二 input子系统介绍及结构图
input子系统介绍 输入设备(如按键,键盘,触摸屏,鼠标,蜂鸣器等)是典型的字符设备,其一般的工作机制是底层在按键,触摸等动作发生时产生一个中断(或驱动通过timer定时查询),然后cpu通过SPI,I2C或者外部存储器总线读取键值,坐标等数据,放一个缓冲区,字符设备驱动管理该缓冲区,而驱动的read()接口让用户可以读取键值,坐标等数据。 在Linu转载 2012-07-24 16:58:05 · 910 阅读 · 0 评论 -
[快速上手Linux设备驱动]之一切皆是文件思想
只要用过linux的筒子,或者保守点说接触到一些linux思想的同志肯定听说过这样一句话,在linux下,“一切皆是文件”!不错,今天walfred将在快速上手linux设备驱动这一块,谈谈linux的设备也符合“一切皆是文件”的思想在linux设备驱动模型应用。如果你不理解Linux设备模型,请看下面:1.[快速上手Linux设备驱动]之我看Linux设备模型(总线篇)转载 2012-07-24 17:15:02 · 697 阅读 · 0 评论 -
input子系统学习笔记九 evdev输入事件驱动分析
evdev 输入事件驱动,为输入子系统提供了一个默认的事件处理方法。其接收来自底层驱动的大多数事件,并使用相应的逻辑对其进行处理。evdev 输入事件驱动从底层接收事件信息,将其反映到 sys 文件系统中,用户程序通过对 sys 文件系统的操作,就能够达到处理事件的能力。下面先对 evdev 的初始化进行简要的分析。evdev的初始化 evdev 以模块的方式被组织在转载 2012-07-24 17:03:57 · 1011 阅读 · 0 评论 -
input子系统学习笔记八 input子系统的详细分析
为了对输入子系统有一个清晰的认识,本节将分析输入系统的初始化过程。在 Linux 中,输入子系统作为一个模块存在,向上,为用户层提供接口函数,向下,为驱动层程序提供统一的接口函数。这样,就能够使输入设备的事件通过输入子系统发送给用户层应用程序,用户层应用程序也可以通过输入子系统通知驱动程序完成某项功能。子系统初始化函数 input_init() 输入子系统作为一个模块转载 2012-07-24 17:03:16 · 628 阅读 · 0 评论 -
input子系统学习笔记七 handler处理器注册分析
input_handler 是输入子系统的主要数据结构,一般将其称为handler处理器,表示对输入事件的具体处理。input_handler 为输入设备的功能实现了一个接口,输入事件最终传递到handler 处理器,handler 处理器根据一定的规则,然后对事件进行处理,具体的规则将在下面详细介绍。关键数据结构 struct input_dev 物理输入设备的转载 2012-07-24 17:02:29 · 879 阅读 · 0 评论 -
input子系统学习笔记六 按键驱动实例分析下
input_report_key()向子系统报告事件 在 button_interrupt()中断函数中,不需要考虑重复按键的重复点击情况,input_report_key()函数会自动检查这个问题,并报告一次事件给输入子系统。该函数的代码如下:C++代码static inline void input_report_key(struct input_转载 2012-07-24 17:01:24 · 1517 阅读 · 0 评论 -
个人对kobject的一点研究
原文:http://bbs.chinaunix.net/thread-2004737-1-1.html在LINUX中最让人不解的大概就是/sys下面的内容了下面首先让我们来创建一个简单的platform设备,并从这个设备的视角进行深入,在此篇文章的深入过程中,我们只看kobeject的模型我所使用的内核版本号为2.6.26,操作系统的内核版本号为2.6.27-7,暂未发现2.6.2转载 2012-07-25 08:58:10 · 605 阅读 · 0 评论 -
linux底层驱动模型之一:Kobject
1)Kobject Kobject 是Linux 2.6引入的新的设备管理机制,在内核中由struct kobject表示。通过这个数据结构使所有设备在底层都具有统一的接口,kobject提供基本的对象管理,是构成Linux2.6设备模型的核心结构,它与sysfs文件系统紧密关联,每个在内核中注册的kobject对象都对应于sysfs文件系统中的一个目录。Kobject是组成设备模型转载 2012-07-24 22:15:55 · 532 阅读 · 0 评论 -
Linux设备模型之input子系统详解(二)
六:event事件的处理在开始的时候曾以linux kernel文档中自带的代码作分析.提出了几个事件上报的API. 这些API其实都是input_event()的封装.代码如下:void input_event(struct input_dev *dev, unsigned int type, unsigned int code, int value){转载 2012-08-09 09:17:13 · 1489 阅读 · 0 评论 -
Linux设备模型之input子系统详解(三)
十:evdev设备结点的open()操作对主设备号为INPUT_MAJOR的设备节点进行操作,会将操作集转换成handler的操作集.在evdev中,这个操作集就是evdev_fops.对应的open函数如下示:static int evdev_open(struct inode *inode, struct file *file){ struct转载 2012-08-09 09:18:16 · 1481 阅读 · 0 评论 -
platform设备驱动
1.platform总线、设备与驱动 在Linux 2.6的设备驱动模型中,关心总线、设备和驱动这3个实体,总线将设备和驱动绑定。在系统每注册一个设备的时候,会寻找与之匹配的驱动;相反的,在系统每注册一个驱动的时候,会寻找与之匹配的设备,而匹配由总线完成。 一个现实的Linux设备和驱动通常都需要挂接在一种总线上,对于本身依附于PCI、USB、I2 C、SPI等转载 2012-07-25 22:14:07 · 595 阅读 · 0 评论 -
Linux驱动中,probe函数何时被调用
最近看到linux的设备驱动模型,关于Kobject、Kset等还不是很清淅。看到了struct device_driver这个结构时,想到一个问题:它的初始化函数到底在哪里调用呢?以前搞PCI驱动时用pci驱动注册函数就可以调用它,搞s3c2410驱动时只要在mach-smdk2410.c中的struct platform_device *smdk2410_devices {}中加入设备也会调用转载 2012-07-27 11:05:35 · 829 阅读 · 0 评论 -
Ubuntu 163 源
http://mirrors.163.com/.help/ubuntu.htmlsudo apt-get install update-manager-core sudo do-release-upgradehttp://mirrors.163.com/ubuntu/dists/原文件备份:sudo cp /etc/apt/sources.list/etc/apt/so转载 2012-06-23 12:25:44 · 3251 阅读 · 0 评论 -
从 HAL层 到java应用层重写mini6410 led功能
从HAL层到java应用层重写mini6410 led功能记录了我从HAL层到应用层如何把led这个设备控制实现的过程。如果有遗漏或者错误,请各位高手指点。这个事例通过Manager的形式调用Service,但是将LedService加入进了SystemSeivice,生成的libandroid_server.so文件是系统启动自动加载的,在应用程序中直接调用ServiceMana转载 2012-08-16 11:07:48 · 878 阅读 · 0 评论 -
sysfs接口函数的建立_DEVICE_ATTR
说道sysfs接口,就不得不提到函数宏 DEVICE_ATTR,原型是#define DEVICE_ATTR(_name, _mode, _show, _store) \struct device_attribute dev_attr_##_name = __ATTR(_name, _mode, _show, _store)函数宏DEVICE_ATTR内封装的是__ATTR(_转载 2012-09-02 14:28:41 · 692 阅读 · 0 评论 -
Android 4.0 事件输入(Event Input)系统
1. TouchScreen功能在Android4.0下不工作 原来在Android2.3.5下能正常工作的TouchScreen功能,移植到Android 4.0就不能正常工作了。凭直觉,Android4.0肯定有鬼。真是不看不知道,一看吓一跳。在Android 4.0中,Event Input地位提高了,你看看,在Adroid2.3.5中,它在frameworks/base/l转载 2012-08-13 21:34:27 · 1341 阅读 · 0 评论 -
Android编译环境(1) - 编译Native C的模块
Android编译环境本身比较复杂,且不像普通的编译环境:只有顶层目录下才有Makefile文件,而其他的每个component都使用统一标准的Android.mk. Android.mk文件本身是比较简单的,不过它并不是我们熟悉的Makefile,而是经过了Android自身编译系统的很多处理,因此要真正理清楚其中的联系还比较复杂,不过这种方式的好处在于,编写一个新的Android.mk来给An转载 2012-08-16 15:17:36 · 821 阅读 · 0 评论 -
What is RCU, Fundamentally?
http://lwn.net/Articles/262464/ December 17, 2007Paul E. McKenney, IBM Linux Technology CenterJonathan Walpole, Portland State University Department of Computer Science王旭 [gnawux(at)转载 2012-07-31 13:39:17 · 1376 阅读 · 0 评论 -
内核定时器 struct timer_list
本文来自:http://hi.baidu.com/zhlg_hzh/blog/item/d298b49b57a1cab2c8eaf42b.html 定时器,有时也称为动态定时器或内核定时器,是管理内核时间的基础。内核经常要推后执行某些代码,比如下半部机制就是为了将工作推后执行。我们需要一种工具,使工作能够在指定时间点上执行,正好在希望的时间点上,内核定时器正是这样一种工具。转载 2012-07-30 19:40:31 · 680 阅读 · 0 评论 -
Android 中input event的分析
文章将分析Android 的Input Event 子系统的来龙去脉。Android 系统里面有很多小工具,运行这些工具,我们对它们有一个感性的认识,进而阅读和分析这些小工具源代码,再顺藤摸瓜,就可以把整个子系统的来龙去脉弄清楚。1.运行toolbox的getevent 工具。# getevent -helpgetevent -helpUsage:转载 2012-08-13 19:53:35 · 738 阅读 · 0 评论 -
Linux中的工作队列
工作队列一般用来做滞后的工作,比如在中断里面要做很多事,但是比较耗时,这时就可以把耗时的工作放到工作队列。说白了就是系统延时调度的一个自定义函数。 工作队列是实现延迟的新机制,从 2.5 版本 Linux 内核开始提供该功能。不同于微线程一步到位的延迟方法,工作队列采用通用的延迟机制, 工作队列的处理程序函数能够休眠(这在微线程模式下无法实现)。 工作队列可以有比微线程转载 2012-07-27 14:45:32 · 736 阅读 · 0 评论 -
linux INIT_WORK 创建工作队列
Linux 2.6内核使用了不少工作队列来处理任务,他在使用上和 tasklet最大的不同是工作队列的函数可以使用休眠,而tasklet的函数是不允许使用休眠的。工作队列的使用又分两种情况,一种是利用系统共享的工作队列来添加自己的工作,这种情况处理函数不能消耗太多时间,这样会影响共享队列中其他任务的处理;另外一种是创建自己的工作队列并添加工作。(一)利用系统共享的工作队列添加工作:转载 2012-07-27 14:23:54 · 2142 阅读 · 1 评论 -
内核定时器 struct timer_list
定时器,有时也称为动态定时器或内核定时器,是管理内核时间的基础。内核经常要推后执行某些代码,比如下半部机制就是为了将工作推后执行。我们需要一种工具,使工作能够在指定时间点上执行,正好在希望的时间点上,内核定时器正是这样一种工具。定时器使用简单,只须执行一些初始化工作,设置一个超时时间,指定超时发生后执行的函数,然后激活定时器就可以了。注意,定时器并不周期运行,它在超时后就自行销毁,转载 2012-07-27 14:31:30 · 809 阅读 · 0 评论 -
[快速上手Linux设备驱动]之我看Linux设备模型(设备篇)
上一篇,walfred讲述了一个简单的字符设备驱动,没有看的同学一定要好好的看哦[快速上手Linux设备驱动]之我看Linux字符设备驱动,从这篇文章起,OurUnix转了一篇很不错的描写Linux设备模型的文章。例子和实验使用《LDD3》所配的lddbus模块(稍作修改)。 当然在看这一篇文章之前,希望你已经阅读了[快速上手Linux设备驱动]之我看Linux设备模型(总线篇)一文。转载 2012-07-24 19:52:35 · 664 阅读 · 0 评论 -
[快速上手Linux设备驱动]之我看字符设备驱动
这段时间算是把linux下的字符设备给基本吃透了,这边walfred会根据自己的观点,分解拆卸linux下字符设备并将其整理出来。预备知识这边提到的linux字符设备驱动是基于linux动态加载模块的思想,所以请务必知道linux模块的应用,可参考内核模块编程入门程序及标准Makefile文件。1Linux字符设备驱动描述图说明:1.1这里我向大多数介绍linux字符设转载 2012-07-24 19:50:47 · 744 阅读 · 0 评论 -
Linux中的静态链接库分析与使用
在C语言的层面上,对代码的重复利用通常是通过库(library)的方式来实现的。传统意义上的库指的是以后缀.a结尾的文件。严格来讲,函数库应当分为两种:静态链接库和动态链接库,也称动态共享库。静态链接库通常是指以.a为后缀的文件,而动态链接库则常常以.so为后缀名。 静态链接库其实就是把一个或多个目标文件(即编译生成的.o文件)归档在一个文件中。此后,当需要使用这个静态库中的某个功能时,将这转载 2012-07-24 17:13:04 · 1119 阅读 · 1 评论 -
Git使用基础篇
Git是一个分布式的版本控制工具,本篇文章从介绍Git开始,重点在于介绍Git的基本命令和使用技巧,让你尝试使用Git的同时,体验到原来一个版 本控制工具可以对开发产生如此之多的影响,文章分为两部分,第一部分介绍Git的一些常用命令,其中穿插介绍Git的基本概念和原理,第二篇重点介绍 Git的使用技巧,最后会在Git Hub上创建一个开源项目开启你的Git实战之旅1、Git转载 2012-08-03 10:57:50 · 657 阅读 · 0 评论 -
ANDROID JNI之JAVA域与c域的互操作
本文讲述AndroidJava域与C域互操作:Java域调用c域的函数;c域访问Java域的属性和方法;c域生成的对象的保存与使用。重点讲解c域如何访问Java域。虽然AndroidJNI实现中,c实现与c++实现是有所区别的,但行文中并未区分c还是c++。 0. Android中的JNIAndroid的APP开发一般是用Java,用到的系统服务和操作系统相关的东西是用c写的转载 2012-07-03 08:54:14 · 584 阅读 · 0 评论 -
Android应用框架之AndroidApplication
Android Application Android提供给开发程序员的概念空间中Application只是一个松散的表征概念,没有多少实质上的表征。在Android实际空间中看不到实际意义上的应用程序的概念,即使有一个叫Application的类,这个也就是个应用程序上下文状态,是一个极度弱化的概念。Application只是一个空间范畴的概念,Application就是Activit转载 2012-07-02 19:40:48 · 516 阅读 · 0 评论 -
LINUX下USB1.1设备学习小记(6)_hid与input子系统(3)
现在回到input_attach_handler中error = handler->connect(handler, dev, id);现在知道handler->connect是啥了吧,就是mousedev_connectmousedev_connect在/drivers/input/mousedev.c中 staticint mousedev_connect(转载 2012-07-11 15:38:52 · 3149 阅读 · 0 评论 -
LINUX下USB1.1设备学习小记(6)_hid与input子系统(2)
走完之前的程序后的数据结构如下 注意,之后会把local中的数据清空好,到下一组为0x09, 0x01这是一个局域项目,重新向局域结构中添加项目下一个组为0xa1, 0x00这是一个主项目,用于物理集合收集的开始添加完成后的数据结构如下 又把局域结构中的数据清零到下一组,为0x05, 0x09这是一个全局项目,重设用途继续下一组, 0转载 2012-07-11 15:38:05 · 1896 阅读 · 0 评论 -
LINUX下USB1.1设备学习小记(6)_hid与input子系统(1)
现在终于开始匹配设备的接口驱动了目标当然是hid,当然在了解驱动初始化过程之前,让我们先看看一下hid协议我对hid协议的理解是建立在鼠标上的,所以如果有理解不当的地方,请务必请大家指出我们先来看鼠标的结构,鼠标有左键,右键,中键,滚轮,X轴和Y轴这6个量其中左键,右键和中键的点击可以用0和1两个数值来表达,呢么就占1bit然后是X轴,Y轴和滚轮,我们假设他们的相对数值变化范围转载 2012-07-11 15:37:13 · 3447 阅读 · 0 评论 -
Linux HID 驱动开发(2) USB HID Report 描述及usage 概念
在USB的枚举后,即交互完 设备描述符(device descriptor),配置描述符(configure descriptor),接口描述符(interface descriptor)和终端描述符(endpointer desciptor)。如果是HID设备,即class值为3设备交互还会发送一系统的特殊包来描述HID设备的特性。 这一些描述HID的特性称为Report Descr转载 2012-07-11 13:42:09 · 2626 阅读 · 0 评论 -
Linux设备驱动之HID驱动
一:前言继前面分析过UHCI和HUB驱动之后,接下来以HID设备驱动为例来做一个具体的USB设备驱动分析的例子.HID是Human Interface Devices的缩写.翻译成中文即为人机交互设备.这里的人机交互设备是一个宏观上面的概念,任何设备,只要符合HID spec,都可以称之为HID设备.常见的HID设备有鼠标键盘,游戏操纵杆等等.在接下来的代码分析中,可以参考HID的spec.这转载 2012-07-11 11:23:38 · 1637 阅读 · 0 评论 -
Linux usbtouchscreen驱动分析
在Linux内核中自带USB触摸屏驱动,以linux-2.6.33.3\drivers\input\touchscreen.c为例,进行解析:1.驱动加载:static int __init usbtouch_init(void){return usb_register(&usbtouch_driver); //驱动注册}其中usbtouch_driver定转载 2012-07-11 11:21:29 · 821 阅读 · 0 评论 -
Linux Device和Driver注册过程,以及Probe的时机
Linux Device和Driver注册过程,以及Probe的时机 Linux 2.6的设备驱动模型中,所有的device都是通过Bus相连。device_register() / driver_register()执行时通过枚举BUS上的Driver/Device来实现绑定,本文详解这一过程。这是整个LINUX设备驱动的基础,PLATFORM设备,I2C上的设备等诸设备的注册最转载 2012-07-11 09:13:35 · 661 阅读 · 0 评论 -
Linux USB触摸屏驱动注解
Linux USB触摸屏驱动注解Linux USB触摸屏驱动注解 参考2.6.31版本中的driver/usb/input/usbtouchscreen.c。驱动可分为几个部分:驱动加载部分、probe部分、open部分、urb回调函数处理部分。 一、 驱动加载部分 static int __init usbtouch _init(void) {转载 2012-07-11 09:47:30 · 1337 阅读 · 0 评论