自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(26)
  • 收藏
  • 关注

转载 从文件到字符设备

在/dev下面有很多设备,其中也有大家广为使用的字符设备,呢里面的文件是如何与字符设备挂钩的呢~  平时我们使用的open函数是如何动态加载字符设备的操作集的呢~下面就让我们慢慢剖析~ (以内核2.6.26为参考)一.首先是文件系统~   需要动态解析文件路径名  像/dev/ts0  在文件系统里分为3个部分  1./(根文件目录)  2.dev(根文件目录下的d

2012-12-12 09:51:46 384

转载 linux输入子系统(3)

第3章输入子系统核心层 上面两章分别讲了 Linux 输入子系统的设备驱动层和事件处理层,这两层的实现都是建立在输入核心层的基础之上的。核心层负责管理所有的资源并连接驱动层和事件处理层。3.1     input core 初始化输入子系统的核心层的实现都在 driver/input/input.c文件中, 初始化函数如 程序清单 3.1 所示。 程序清单

2012-12-08 17:38:38 296

转载 linux输入子系统(2)

第2章输入子系统的事件驱动上一章已经说过输入子系统分为三层,最上面的一层是事件处理层,我们暂时称它为事件驱动,这是相对于上一章的设备驱动来讲的。上一章介绍了设备驱动注册时要与匹配的 handler 连接,报告的事件也会分发给连接的 handler ,这一章介绍 handler 的相关操作。 2.1     重要的数据结构首先介绍 input_handle ,这个结构

2012-12-08 17:36:09 547

转载 个人对kobject的一点研究[3]

下面,我开始对kobject kset和ktype做分析先说说关系,ktype与kobject和kset这两者之前的关系较少,让我画一个图,是这样的2009-01-19 01:34 上传下载附件(2.66 KB)ktype依赖于kobject,kset也依赖于kobject,而kobject有时需要kset(所以用了一个白箭头),不一

2012-12-08 17:26:37 365

转载 个人对kobject的一点研究[2]

现在到bus_register了注册的参数platform_bus_type如下所示struct bus_type platform_bus_type = {        .name                = "platform",        .dev_attrs        = platform_dev_attrs,        .match

2012-12-08 17:25:28 359

转载 个人对kobject的一点研究[1]

在LINUX中最让人不解的大概就是/sys下面的内容了下面首先让我们来创建一个简单的platform设备,并从这个设备的视角进行深入,在此篇文章的深入过程中,我们只看kobeject的模型我所使用的内核版本号为2.6.26,操作系统的内核版本号为2.6.27-7,暂未发现2.6.27-7与2.6.26的重大不同首先写一个简单的模块#include #include

2012-12-08 17:23:25 352

转载 Android Building System 分析

Android Building System 分析by thinker 2 Columns 關鍵字:Androidcoding想要了解一個系統,我常會從 makefile 或是 building system 下手,以了解系統組成元素為何? 目錄結構為何? 對於Android ,我也不例外。透過了解 building system ,我們能知道如何新增、修改、

2012-11-28 21:10:12 238

转载 Android Makefile分析

随着移动互联网的发展,移动开发也越来越吃香了,目前最火的莫过于android,android是什么就不用说了,android自从开源以来,就受到很多人的追捧。当然,一部人追捧它是因为它是Google开发的。对一个程序员来说,一个系统值不值得追捧得要拿代码来说话。我这里并不打算分析android的代码,而是android的makefile,也许大家已经知道了在android源码里,我们可以看见很

2012-11-27 21:09:10 316

转载 android文件系统介绍汇总

们将会针对Android根文件系统的相关目录结构等方面的问题进行一个详细的讲解,以帮助大家快速掌握这方面的知识。  我们曾经在一篇文章中为大家详细介绍过Android文件系的一些基本概念,相信大家已经可以充分了解这一知识点了。在这里大家将会继续对Android根文件系统的基本概念进行一个初步的掌握。  经过这几天在网上搜索关于Android根文件系统的相关资料,发现已经有很多高手

2012-11-27 21:00:23 1493

转载 Android编译过程详解(三)

Android编译过程详解(一):http://www.cnblogs.com/mr-raptor/archive/2012/06/07/2540359.html    Android编译过程详解(二):http://www.cnblogs.com/mr-raptor/archive/2012/06/08/2541571.html    Android编译过程详解(三):http://ww

2012-11-27 20:51:38 292

转载 Android编译过程详解(二)

Android编译过程详解(一):http://www.cnblogs.com/mr-raptor/archive/2012/06/07/2540359.html    Android编译过程详解(二):http://www.cnblogs.com/mr-raptor/archive/2012/06/08/2541571.html    Android编译过程详解(三):http://ww

2012-11-27 20:50:46 259

转载 Android编译过程详解(一)

Android编译过程详解(一):http://www.cnblogs.com/mr-raptor/archive/2012/06/07/2540359.html    Android编译过程详解(二):http://www.cnblogs.com/mr-raptor/archive/2012/06/08/2541571.html    Android编译过程详解(三):http://ww

2012-11-27 20:49:51 298

转载 JNI接口函数<三>

字符串操作 NewStringjstring   NewString(JNIEnv *env, const jchar *unicodeChars,jsize len);利用 Unicode 字符数组构造新的 java.lang.String 对象。参数:env:JNI 接口指针。unicodeChars:指向 Unicode 字符串的指

2012-11-27 20:43:24 278

转载 JNI接口函数<二>

对象操作 AllocObjectjobject  AllocObject(JNIEnv *env, jclass clazz);分配新 Java 对象而不调用该对象的任何构造函数。返回该对象的引用。clazz 参数务必不要引用数组类。参数:env:JNI 接口指针。clazz:Java 类对象。返回值:返回 Java

2012-11-27 20:41:53 324

转载 JNI接口函数<一>

本章为 JNI 函数提供参考信息。其中列出了全部 JNI 函数,同时也给出了 JNI 函数表的准确布局。注意:“必须”一词用于约束 JNI 编程人员。例如,当说明某个 JNI 函数必须接收非空对象时,就应确保不要向该 JNI 函数传递 NULL。这时,JNI 实现将无需在该 JNI 函数中执行 NULL 指针检查。本章的部分资料改编自 Netscape 的 JRI 文档。该

2012-11-27 20:40:39 307

转载 linux内核部件分析(十一)——waitqueue与线程的阻塞

当你必须一个复杂的系统,协调系统的方方面面,灵活地支持各种机制和策略,即使很简单的问题也会变得很复杂。linux绝对就是这样一个复杂的系统。所以我们要理解它,尽量从原理的角度去理解事务的处理流程,尽量避免各种细枝末节的干扰,尽量规避那些足以压垮自己的庞然大物。(尽管细致末节和庞然大物很可能就是linux闪光的地方,但我们还是小心为上。)原理    现在我们来考虑linux中线程的阻塞。它的

2012-11-27 12:39:48 420

转载 linux内核部件分析(十)——设备驱动模型之class

前面看过了设备驱动模型中的bus、device、driver,这三种都是有迹可循的。其中bus代表实际的总线,device代表实际的设备和接口,而driver则对应存在的驱动。但本节要介绍的class,是设备类,完全是抽象出来的概念,没有对应的实体。所谓设备类,是指提供的用户接口相似的一类设备的集合,常见的设备类的有block、tty、input、usb等等。     class对应的代码在d

2012-11-27 12:38:48 308

转载 linux内核部件分析(九)——设备驱动模型之device-driver

前面我们分析了device、driver、bus三种类型,主要是三者的注册与注销,在sysfs中的目录与属性文件创建等内容。本节就来详细分析下,在设备注册到总线上时,总线是如何为其寻找对应的驱动的;在驱动注册到总线上时,总线又是如何为其寻找对应的设备的。    本节的实现代码集中在drivers/base/bus.c和drivers/base/dd.c中。先来回忆下,在device_reg

2012-11-27 12:36:50 372

转载 linux内核部件分析(八)——设备驱动模型之bus

前面我们分析了设备驱动模型中的device和driver,device和driver本来是不相关的东西,只因为bus的存在,才被联系到了一起。本节就来看看设备驱动模型中起枢纽作用的bus。本节的头文件在include/linux/device.h和drivers/base/base.h,实现代码主要在bus.c中。因为在bus中有很多代码时为了device找到driver或者driver找到dev

2012-11-27 12:36:01 365

转载 linux内核部件分析(七)——设备驱动模型之driver

上节我们分析设备驱动模型中的device,主要是drivers/base/core.c,可以说是代码量最大的一个文件。本节要分析的驱动driver,就要相对简单很多。原因也很简单,对于driver,我们能定义的公共部分实在不多,能再sysfs中表达的也很少。本节的分析将围绕drivers/base/driver.c,但头文件仍然是include/linux/device.h和drivers/bas

2012-11-27 12:35:14 361

转载 linux内核部件分析(六)——设备驱动模型之device

linux的设备驱动模型,是建立在sysfs和kobject之上的,由总线、设备、驱动、类所组成的关系结构。从本节开始,我们将对linux这一设备驱动模型进行深入分析。     头文件是include/linux/device.h,实现在drivers/base目录中。本节要分析的,是其中的设备,主要在core.c中。[cpp] view plaincopyprint?

2012-11-27 12:34:14 495

转载 linux内核部件分析(五)——设备驱动模型的基石kobject

之前我们分析了引用计数kref,总结了sysfs提供的API,并翻译了介绍kobject原理及用法的文档。应该说准备工作做得足够多,kobject的实现怎么都可以看懂了,甚至只需要总结下API就行了。可我还是决定把kobject的实现代码从头分析一遍。一是因为kobject的代码很重要,会在设备驱动模型代码中无数次被用到,如果不熟悉的话可以说是举步维艰。二是为了熟悉linux的编码风格,为以后分析

2012-11-27 12:33:18 315

转载 linux内核部件分析(四)——更强的链表klist

前面我们说到过list_head,这是linux中通用的链表形式,双向循环链表,功能强大,实现简单优雅。可如果您认为list_head就是链表的极致,应该在linux链表界一统天下,那可就错了。据我所知,linux内核代码中至少还有两种链表能占有一席之地。一种就是hlist,一种就是本节要介绍的klist。虽然三者不同,但hlist和klist都可以看成是从list_head中发展出来的,用于特殊

2012-11-27 12:32:22 255

转载 linux内核部件分析(三)——记录生命周期的kref

kref是一个引用计数器,它被嵌套进其它的结构中,记录所嵌套结构的引用计数,并在计数清零时调用相应的清理函数。kref的原理和实现都非常简单,但要想用好却不容易,或者说kref被创建就是为了跟踪复杂情况下地结构引用销毁情况。所以这里先介绍kref的实现,再介绍其使用规则。       kref的头文件在include/linux/kref.h,实现在lib/kref.c。闲话少说,上代码。

2012-11-27 12:31:35 336

转载 linux内核部件分析(二)——原子性操作atomic_t

在任何处理器平台下,都会有一些原子性操作,供操作系统使用,我们这里只讲x86下面的。在单处理器情况下,每条指令的执行都是原子性的,但在多处理器情况下,只有那些单独的读操作或写操作才是原子性的。为了弥补这一缺点,x86提供了附加的lock前缀,使带lock前缀的读修改写指令也能原子性执行。带lock前缀的指令在操作时会锁住总线,使自身的执行即使在多处理器间也是原子性执行的。xchg指令不带lock前

2012-11-27 12:30:43 443

转载 linux内核部件分析(一)——连通世界的list

在linux内核中,有一种通用的双向循环链表,构成了各种队列的基础。链表的结构定义和相关函数均在include/linux/list.h中,下面就来全面的介绍这一链表的各种API。[cpp] view plaincopyprint?struct list_head {      struct list_head *next, *prev;  };  这是链表的元

2012-11-27 12:25:10 251

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除