自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(256)
  • 资源 (5)
  • 收藏
  • 关注

转载 schedule() -- 调度进程

The goal of the schedule( ) function consists of replacing the currently executing process with another one. Thus, the key outcome of the function is to set a local variable called next, so that it

2012-12-14 16:12:49 748

转载 进程不能睡眠的情况

进程不能睡眠的情况:1、进程已经持有一个自旋锁、seqlock、rcu锁2、在进程中关闭了中断3、除非能确保,在某处,能够找到这个进程,并且可以唤醒此进程;否则,不应进入睡眠。使用等待队列写数据时,如果无空间可写,则应进入睡眠,但应检查执行睡眠代码时,是否有空间可写,避免发生“先唤醒,后睡眠”,即将要执行睡眠代码时,读操作释放了空间,释放空间后会

2012-12-14 11:42:24 592

转载 bt

http://blog.csdn.net/newtonnl?viewmode=contents

2012-12-13 17:42:11 860

转载 copy_to_user、copy_from_user

include   copy_to_user(), copy_from_user()  在内核的学习中会遇到很多挺有意思的函数,而且能沿着一个函数扯出来很多个相关的函数。copy_to_user和copy_from_user就是在进行驱动相关程序设计的时候,要经常遇到的两个函数。由于内核空间与用户空间的内存不能直接互访,因此借助函数copy_to_user()完成用户空间到内核

2012-12-13 13:30:29 713

转载 memcpy

目录函数原型功能所需头文件返回值说明程序例展开函数原型功能所需头文件返回值说明程序例展开编辑本段函数原型  void *memcpy(void *dest, const void *src, size_t n);编辑本段功能  从源src所指的内存地址的起始位置开始拷贝n个字节到

2012-12-13 09:55:25 591

转载 fstat、stat和lstat 区别

stat系统调用系列包括了fstat、stat和lstat,它们都是用来返回“相关文件状态信息”的,三者的不同之处在于设定源文件的方式不同。1首先隆重介绍的是一个非常重要的”VIP”人物,他是fstat, stat和lstat三者都要用到的一个结构体类型,名字叫做struct stat。可以说,没有这个struct stat的支持,上述三个系统调用将寸步难行。这个s

2012-12-12 10:03:25 564

转载 sprintf()/simple_strtoul()

字符串格式化命令,主要功能是把格式化的数据写入某个字符串中。sprintf 是个变参函数,使用时经常出问题,而且只要出问题通常就是能导致程序崩溃的内存访问错误。无非就是那么几种情况,通常用眼睛再把出错的代码多看几眼就看出来了。目录函数简介参数说明及应用举例使用sprintf 的常见问题展开函数简介参数说

2012-12-11 19:48:04 4635

转载 access()

功能描述: 检查调用进程是否可以对指定的文件执行某种操作。   用法: #include #include int access(const char *pathname, int mode);     参数: pathname: 需要测试的文件路径名。   mode: 需要测试的操作模式,可能值是一个或多个R_OK(可读?), W_OK(可写?), X

2012-12-10 14:44:35 781

转载 Linux下使用daemon函数编写后台程序

以前我们在看《unix环境高级编程》的时候,有专门的整章详细介绍如何编写一个后台daemon程序(精灵程序),主要涉及到创建会话组,切换工 作目录,设置文件屏蔽字,关闭不必要的描述符等多个操作。这些操作对于每一个后台程序来说都是类似的。在Linux中专门提供了一个函数来完成这个daemon化的过程,这个函数的原型如下int daemon (int __nochdir, int __

2012-12-04 00:12:52 21417

转载 僵尸进程

僵尸进程怎样产生的:  一个进程在调用exit命令结束自己的生命的时候,其实它并没有真正的被销毁,而是留下一个称为僵尸进程(Zombie)的数据结构(系统调用 exit,它的作用是使进程退出,但也仅仅限于将一个正常的进程变成一个僵尸进程,并不能将其完全销毁)。  在Linux进程的状态中,僵尸进程是非常特殊的一种,它已经放弃了几乎所有内存空间,没有任何可执行代码,也不能被调度,仅仅

2012-12-02 22:38:50 886

转载 守护进程实现

Some basic rules to coding a daemon prevent unwanted interactions from happening. We state these rules and then show a function,daemonize, that implements them.编写一个没有交互功能的守护进程是有一定的步骤的。我们列出相关的步骤,并且给出

2012-12-02 22:37:52 525

转载 守护进程概念介绍

在linux或者unix操作系统中在系统的引导的时候会开启很多服务,这些服务就叫做守护进程。为了增加灵活性,root可以选择系统开启的模式,这些模式叫做运行级别,每一种运行级别以一定的方式配置系统。 守护进程是脱离于终端并且在后台运行的进程。守护进程脱离于终端是为了避免进程在执行过程中的信息在任何终端上显示并且进程也不会被任何终端所产生的终端信息所打断。守护进程简介  守护进程,也就是

2012-12-02 22:33:05 948

转载 i2c_smbus_read_byte ()/i2c_smbus_write_byte()/i2c_smbus_read_byte_data ()/i2c_smbus_write_byte_data

Namei2c_smbus_read_byte — SMBus “receive byte” protocolSynopsiss32 fsfunci2c_smbus_read_byte (const struct i2c_client * client); ArgumentsclientHandle to sl

2012-11-30 15:18:05 34035 1

转载 Android中HAL如何向上层提供接口总结

http://www.open-open.com/lib/view/open1325474381453.html

2012-11-28 00:12:01 662

转载 运行不息的内核线程kthread

http://zhangwenxin82.blog.163.com/blog/static/114595956201211493426236/要创建一个内核线程有许多种方法,我们这里要学的是最简单的一种。打开include/linux/kthread.h,你就看到了它全部的API,一共三个函数。 struct task_struct kthread_ru

2012-11-21 00:41:49 3697

转载 完成量(struct completion)/complete()/init_completion()/wait_for_completion()/阻塞与非阻塞/

struct  completionlinux completion理解http://blog.chinaunix.net/uid-22145625-id-1789484.html                                                                           Linux设备驱动中的并发控制总结转载自:ht

2012-11-21 00:36:43 3159

转载 用Gvim建立IDE编程环境 (Windows篇)

http://rokin.iteye.com/blog/475274

2012-11-19 23:50:26 655

原创 android log

SensorDevice.cpp (frameworks\base\services\sensorservice)  D/PhoneApp(  373): onCreate: mProximityWakeLock: WakeLock{4059b6c0 held=false, refCount=0}解决办法:属性原来为0664,应改为0777D/Sensors

2012-11-19 01:10:39 1012

转载 linux内核模块之间通信

今天师兄问,linux内核模块之间如何进行通信?我才想起我之前也有这个疑问,只是当时不需要所以就没去关心了。晚上查了些资料,终于弄明白了些。这里的通信可以简单点理解,就是模块B如何调用A的函数,变量或者常量。为了简化,我设计一个模块A中的一个函数为printMSG,原型为int printMSG(int n);传入的参数n表示打印几遍一个固定的字符串。模块A(在helloworld基础上修改的

2012-11-15 12:37:34 2507

原创 Android 网站

http://guide.eoeandroid.com/您还未登录? 登录注册eoe首页|移动资讯|移动开放日|移动人才招聘|开发者服务

2012-11-14 13:03:09 522

转载 Android 驱动跟系统开发 1. 一个简单的例子

http://blog.csdn.net/zhangjie201412/article/details/7703855首先,边学习边记录点自己的代码,希望看了我写的代码觉得不怎么样的,多多提出来,让我也学习学习,我一定会虚心接受大家的指导。这里我们是来学习android 驱动和android系统框架的,这里我只针对于整个android设备驱动的一个流程,从上到下的调用,而且在这里我们去使用

2012-11-09 01:39:08 1348

转载 sysfs方式实现马达驱动

由于对sysfs的概念不是太清楚,只是知道sysfs是一种类似于/proc的虚拟文件系统,可以在用户空间读写sysfs中的相应文件访问或控制内核空间数据,后拜读各类文章后终于对sysfs及平台设备有了更深层次的理解,但读的再多不如亲手一试。恰巧公司需要为android系统提供一个马达驱动,并且android又恰巧很多驱动的读写方式都是通过sysfs操作的,于是开始行动……#define VIB

2012-11-05 23:17:05 662

转载 input子系统学习笔记九 evdev输入事件驱动分析

http://blog.chinaunix.net/uid-20776117-id-3212124.html evdev 输入事件驱动,为输入子系统提供了一个默认的事件处理方法。其接收来自底层驱动的大多数事件,并使用相应的逻辑对其进行处理。evdev 输入事件驱动从底层接收事件信息,将其反映到 sys 文件系统中,用户程序通过对 sys 文件系统的操作,就能够达到处理事件的能力。下面先

2012-10-23 23:49:14 1089

转载 闲聊linux中的input设备(12) 多去读读她的心,关注她的内心世界

插播一条消息:火箭官网刚刚公布,姚明彻底告别本赛季。看来退役也是迟早的事情了,其实上大学就一直关注火箭队,一个主要原因是有姚明,谁让咱是中国人呢,中国人都是很爱国的,当然个别间谍分子除外。因为姚明,喜欢上了麦迪……如今二人都沦落这般境地,想想让人心寒。烟花易冷、人事易分啊。好了,不提这些伤心地事儿了。我们做点有劲的事儿,继续研究我们的evdev 设备美眉。前面已经打开她的心扉了。某位脑残的

2012-10-21 21:51:50 915

转载 闲聊linux中的input设备(11) 慢慢打开她的心扉

没错,到目前为止,akm input设备也注册了,evdev handler大叔的全貌也搞明白了,他们的女儿也亭亭玉立了……是不是该干正事的时候了?好吧,我们就来看看如何来干这份正事:还是列出那份操作集函数(handler大叔为我们这些笑的最后的弟兄精心准备的泡妹妹大法,不过现实生活中可没有这样的爸爸):static const struct file_operatio

2012-10-21 21:50:44 1083

转载 闲聊linux中的input设备(10) 原来你也在这里

废话不多讲,开门见山,我们继续上节那个没有完的故事,我们收集到的那些值到底会传到哪里去呢?深入input_pass_event(dev, type, code, value)内部,看她花落谁家?static void input_pass_event(struct input_dev *dev,                          unsigned int type,

2012-10-21 21:49:46 1731

转载 闲聊linux中的input设备(9) 代代相传,何处是尽头

这里我们只以其中的一行为例来分析一下如何给我们的input子系统上报事件。input_report_abs(data->input_dev, ABS_RX, rbuf[0]);继续跟踪: static inline void input_report_abs(struct input_dev *dev, unsigned int code, int value){

2012-10-21 21:48:50 1787

转载 闲聊linux中的input设备(8) 面对美女,我们将何去何从

说到evdev handler这个名字,相信大家一定再熟悉不过了,就是那个妻妾成群孩子成堆的家伙,一个让世界上很多男人都望尘莫及的家伙。嫉妒吧,羡慕吧,这些或许都已不重要,为了解解恨,我们还得想办法搞定她跟akm input设备大妈生下的那个女儿了。不过想搞定他女儿,咱得先搞定她爸。只要她爸开口了,后面的事情可能就好说了一些。不管怎样,还是来熟悉一下这位evdev handle大叔。s

2012-10-21 21:46:07 1228

转载 闲聊linux中的input设备(7) 爱情的结晶

Handler兄果然是handler兄,很给力,这不,刚和人家好上,就有了爱情的种子。有位仁兄要问了:“他是怎么做到的呢?说出来让我学习学习一下,哥这么多年了,还是一直和自己的左手生活着”,好吧,我们就来看看事情是怎样发生的:  没有错,就在第六节的error = handler->connect(handler, dev, id);这行代码中,发生了那么点事儿,也就是那么点事儿,让他们最

2012-10-21 21:44:12 1216

转载 闲聊linux中的input设备(6) 一见钟情,从此注定牵手一生

看到这里,有的哥们要生气了,怎么我们美丽的input设备被嫁出去,居然一下就忽悠过去了,都不详细描述一下她的具体被嫁过程,她到底嫁给哪个handler了?又是怎么相中的?相中后他们两又一起做了些什么?好了,为了满足这位兄弟的欲望,我们来详细阅读一下前面那个input_attach_handler(dev, handler)函数。就是在这个函数中,发生了所有该发生的事情。static i

2012-10-21 21:35:28 979

转载 闲聊linux中的input设备(5) 她那含情脉脉的眼神

http://blog.csdn.net/lmm670/article/details/6084210真正的执行者乃input_register_device()函数。同样来自input core中,我们来看一下她的全貌:int input_register_device(struct input_dev *dev){       1 static at

2012-10-21 18:24:14 947

转载 闲聊linux中的input设备(4) 她一直默默地在背后支持着你

对应input core,前面我一直在夸她的好,对于一个大家都不认识的家伙,我这样说她,是不是显的特虚,好了,为了证明她并不是那么的虚,我不得不拿出前面第二节中出现过的两行代码来看看:akm->input_dev = input_allocate_device();err = input_register_device(akm->input_dev);没有错,这正是我们要把

2012-10-18 23:44:54 859

转载 闲聊linux中的input设备(3)如果不认识他们仨,故事继续不下去了

从前一节来看,在linux内核中添加一个input设备变得很简单了。我们再也不必须去动手写那些该死的接口函数了。可是你有没有想过,是谁让我们的工作变得这么简单了呢?答案是linux内核中的input core。她总是那么痴情,默默地不求回报地为你做许许多多的事情,在你背后默默的支持你爱着你。是的,你所想到的大多数事情,我们的input core都已经为你做好。除了感动,我们还能说什么呢?(in

2012-10-18 00:37:13 945

转载 闲聊linux中的input设备(2)初次相识便好上

究竟何谓input设备,相信武汉跳蚤市场上卖宠物小狗的大妈都能一口答出来,你能不知道么?对,就是我们传说中的输入设备。说到输入设备,相信用过电脑的兄弟都不会陌生了,即按键、鼠标、键盘、等一系列需要我们用户“动手”产生信息,然后丢给我们聪明绝顶的pc来处理的设备。前面说了,linux内核input子系统中已经实现了input设备的接口函数,这使得我们工作量大大的减轻了。我们以akm8973芯片(用于

2012-10-18 00:35:22 1266

转载 闲聊linux中的input设备(1)Linux中的设备大家族

用过linux的哥们都知道,linux所有的设备都是以文件的形式实现的,要访问一个设备,我们只需要以open、read、write的形式对设备的进行操作就可以了。在linux系统的/dev目录下,罗列了当前系统支持的所有设备。运行 ls /dev一下,着实吓了一大跳,[root@localhost ~]# ls /devadsp        full     midi

2012-10-18 00:34:32 1115

转载 linux设备和驱动加载的先后顺序

Linux驱动先注册总线,总线上可以先挂device,也可以先挂driver,那么究竟怎么控制先后的顺序呢。Linux系统使用两种方式去加载系统中的模块:动态和静态。静态加载:将所有模块的程序编译到Linux内核中,由do_initcall函数加载核心进程(/init/main.c)kernel_initàdo_basic_setup()àdo_initcalls()该函数中会将在__

2012-10-09 11:16:43 1228

转载 Linux内核部件分析--设备驱动模型之device-driver

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

2012-10-09 11:12:17 874

转载 Linux内核部件分析--设备驱动模型之bus

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

2012-10-09 11:10:52 1228

转载 Linux内核部件分析--设备驱动模型之device

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

2012-10-09 11:10:04 993

转载 Linux内核部件分析--设备驱动模型之driver

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

2012-10-09 11:01:39 712

slickedit color theme solarized

slickedit color theme solarized

2013-11-27

slickedit bitstream vera fonts

slickedit bitstream vera fonts

2013-11-27

slickedit v18 18.0.1.2 序列号 破解

亲测windows7 32,ubuntu12.0.4 64 内附序列号生成软件 read_me.txt为详细使用方法。

2013-11-26

slickedit 2013 v18 win linux mac

slickedit 2013 v18 (18.0.1.2) 包含win mac linux 32/64 但个人使用的是linux 64位的 se_18000102_linux64.tar.gz

2013-11-22

UNIX环境高级编程

UNIX环境高级编程(第二版中文) 影印版

2012-12-24

空空如也

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

TA关注的人

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