
Linux 代码分析
文章平均质量分 77
eleven_yy
这个作者很懒,什么都没留下…
展开
-
IS_ERR()说明
感谢fudan_abc的分享,本篇文章选自他的《Linux那些事儿之我是Hub(3)一样的精灵不一样的API》 人的无聊,有时候很难用语言表达.以下关于IS_ERR的文字仅献给无聊的你.如果你对内存管理没有任何兴趣,就不用往下看了,跳到下一节吧.要转载 2011-09-14 17:28:08 · 3611 阅读 · 1 评论 -
信号量和自旋锁的差别 .
1)内核同步措施 为了避免并发,防止竞争。内核提供了一组同步方法来提供对共享数据的保护。我们的重点不是介绍这些方法的详细用法,而是强调为什么使用这些方法和它们之间的差别。 Linux 使用的同步机制可以说从2.0到2.6以来不断发展完善。从最初的原子操作,到后来的信号量,从大内核锁到今天的自旋锁。这些同步机制的发展伴随Linux从单处理器到对称多处理器的过度;伴随着从非转载 2012-09-26 10:05:28 · 1374 阅读 · 0 评论 -
spin_lock详解
与UP和SMP无关的定义:typedef struct { volatile unsigned int lock; } spinlock_t; #define SPIN_LOCK_UNLOCKED (spinlock_t){ 0 }#define local_irq_save(x) __asm__ __volatile__(\"pushfl ; popl %0 ; c转载 2012-09-25 16:35:15 · 5887 阅读 · 0 评论 -
软中断,tasklet和工作队列的区别与联系
软中断,tasklet和工作队列的区别与联系 为了让中断处理运行的快,同时要完成相应的全部工作。根据具体的内容将中断分为两个部分:上半部分(中断处理程序)和下半部分(推后处理程序)。上半部分需要立即执行,并且有严格的时间限制,这些工作是在所有中断被禁止的情况下完成的,剩余部分工作推迟到下半部分。下半部分的任务就是执行与中断处理密切相关但中断处理程序本身不执行的工作。在Linu原创 2012-10-09 09:43:21 · 4040 阅读 · 0 评论 -
Linux设备驱动之I2C架构分析
一:前言I2c是philips提出的外设总线.I2C只有两条线,一条串行数据线:SDA,一条是时钟线SCL.正因为这样,它方便了工程人员的布线.另外,I2C是一种多主机控制总线.它和USB总线不同,USB是基于master-slave机制,任何设备的通信必须由主机发起才可以.而 I2C 是基于multi master机制.一同总线上可允许多个master.关于I2C协议的知识,这里不再赘述.可转载 2012-08-28 16:03:42 · 930 阅读 · 0 评论 -
Android Recovery 的代码分析
1、调用main函数在gingerbread/bootable/recovery/recovery.c最下面有个main(),这是recovery应用的主入 口,当编译recovery的时候,会生成一个名为recovery的可执行文件,我这边是放在out/目录下recovery/文件系统的/sbin目 录下,调用recovery可执行文件时会传入参数,这些参数就是main函数的参数,如下原创 2012-07-27 14:12:39 · 741 阅读 · 0 评论 -
__init的用法
在kernel中有很多__init,这个东东到底是何方神圣捏?且听小生我一一道来。下面是其定义:file:/include/linux/init.h 43 #define __init __attribute__ ((__section__ (".init.text"))) __cold 44 #define __initdata __attribute__ ((__s转载 2012-03-12 17:44:00 · 589 阅读 · 0 评论 -
Android display架构分析
Android display架构分析(一)http://hi.baidu.com/leowenj/blog/item/429c2dd6ac1480c851da4b95.html高通7系列硬件架构分析如上图,高通7系列 Display的硬件部分主要由下面几个部分组成:A、MDP高通MSM7200A内部模块,主要负责显示数据的转换和部分图像处理功能理,如YUV转RGB,放大缩转载 2012-08-08 15:43:45 · 1314 阅读 · 0 评论 -
linux内核休眠与唤醒
在Linux中,休眠主要分三个主要的步骤:(1)冻结用户态进程和内核态任务;(2)调用注册的设备的suspend的回调函数;(3)按照注册顺序休眠核心设备和使CPU进入休眠态。 冻结进程是内核把进程列表中所有的进程的状态都设置为停止,并且保存下所有进程的上下文。当这些进程被解冻的时候,他们是不知道自己被冻结过的,只是简单的继续执行。如何让Linux进入休眠呢?用户可以通过读写sys文转载 2012-07-02 16:59:09 · 926 阅读 · 0 评论 -
进程和线程的区别
简单的说,你每启动一个程序,就启动了一个进程。在Windows 3.x下,进程是最小运行单位。在Windows 95/NT下,每个进程还可以启动几个线程,比如每下载一个文件可以单独开一个线程。在Windows 95/NT下,线程是最小单位。WINDOWS的多任务特性使得线程之间独立运行,但是它们彼此共享虚拟空间,也就是共用变量,线程有可能会同时操作一片内存。 线程与进程的区别转载 2012-03-19 16:53:02 · 389 阅读 · 0 评论 -
module_init和module_exit
linux kernel中有很大一部分代码是设备驱动代码,这些驱动代码都有初始化和反初始化函数,这些代码一般都只执行一次,为了有更有效的利用内存,这些代码所占用的内存可以释放出来。linux就是这样做的,对只需要初始化运行一次的函数都加上__init属性。在kernel初始化后期,释放所有这些函数代码所占的内存空间。它是怎么做到的呢?看过module_init和module_exit的人知转载 2012-03-12 18:02:42 · 1002 阅读 · 0 评论 -
sysfs文件系统学习
为了更好地了解kobject的层次关系,有必要了解一下这种层次关系的表现机制:sysfs。本文简单地学习了一下sysfs,大部分内容来自内核文档sysfs.txt。好了,开始我们的学习之旅,呵呵。 何为sysfs sysfs是一种基于ram的文件系统,它提供了一种用于向用户空间展现内核空间里的对象、属性和链接。sysfs与kobject层次紧密相连,它将kobject层次关系表现转载 2012-03-08 10:59:35 · 477 阅读 · 0 评论 -
Linux Power Managment详解 .
Linux Power Managment谨以此文纪念过往的岁月一.前言在这个对节能要求越来越严格的年代,对设备的电源管理就显的很重要的了,尤其对于可移动设备,在电源有限的情况下,续航能力就显的很重要的。在本文中将介绍linux是如何对设备电源进行管理的。二.睡眠Linux的电源管理的主要几个文件集中在/kernel/power/main.c和/driver/base/powe转载 2011-12-09 18:22:26 · 2640 阅读 · 0 评论 -
kthread_run
最近发现在内核创建线程的时候经常会用到kthread_run()这样的一个调用。于是准备拿出来学习一下。首先看看它的定义之处才发现它是一个宏函数,而不是一个真正意义上的函数。在include/linux/Kthread.h里有/*** kthread_run - create and wake a thread.* @threadfn: the function to run until转载 2011-12-19 19:47:28 · 1122 阅读 · 0 评论 -
linux module_init 的秘密
在Linux底下写过driver模块的对这个宏一定不会陌生。module_init宏在MODULE宏有没有定义的情况下展开的内容是不同的,如果这个宏没有定义,基本上表明阁下的模块是要编译进内核的(obj-y)。1.在MODULE没有定义这种情况下,module_init定义如原创 2011-10-13 14:45:43 · 530 阅读 · 0 评论 -
gpio_request 原形代码
其原型为 int gpio_request(unsigned gpio, const char *label)先说说其参数,gpio则为你要申请的哪一个管脚,label则是为其取一个名字。其具体实现如下:int gpio_request(unsigned gpio, cons转载 2011-10-10 18:50:12 · 775 阅读 · 0 评论 -
Android.mk文件语法规范
Android.mk文件语法规范序言:-------------此文档旨在描述Android.mk文件的语法,Android.mk文件为Android NDK(原生开发)描述了你C/C++源文件。为了明白下面的内容,你必须已转载 2011-09-19 18:44:12 · 423 阅读 · 0 评论 -
android中make命令
如果android的source在android21文件夹(即Makefile文件的目录)下,先执行cd android21,然后可以执行下面的命令;1、make Settings 生成Settings.apk的文件2、 make snod 等同于ma转载 2011-09-19 17:24:25 · 516 阅读 · 0 评论 -
Linux内核的同步机制
一、引言在现代操作系统里,同一时间可能有多个内核执行流在执行,因此内核其实象多进程多线程编程一样也需要一些同步机制来同步各执行单元对共享数据的访问。尤其是在多处理器系统上,更需要一些同步机制来同步不同处理器上的执行单元对共享的数据的访问。在主流的Linux内核中包含了几乎所有现代的操作系统具有的同步机制,这些同步机制包括:原子操作、信号量(semaphore)、读写信号量(rw_semap转载 2012-09-25 16:21:05 · 689 阅读 · 0 评论