自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 读写锁

读写锁读写锁 (rwlock)功能特点简介读写锁实际是一种特殊的自旋锁,它把对共享资源的访问者划分成读者和写者,读者只对共享资源进行读访问,写者则需要对共享资源进行写操作。这种锁相对于自旋锁而言,能提高并发性,因为在多处理器系统中,它允许同时有多个读者来访问共享资源,最大可能的读者数为实际的逻辑CPU数。写者是排他性的,一个读写锁同时只能有一个写者或多个读者(与CPU数相关),

2013-08-08 10:06:15 521

转载 sysfs接口函数的建立_DEVICE_ATTR

sfs接口函数到建立_DEVICE_ATTR最近在弄Sensor驱动,看过一个某厂家的成品驱动,里面实现的全都是sysfs接口,hal层利用sysfs生成的接口,对Sensor进行操作。说道sysfs接口,就不得不提到函数宏 DEVICE_ATTR原型是#define DEVICE_ATTR(_name, _mode, _show, _store) \s

2013-08-06 16:32:44 567

转载 fcntl使用

功能描述:根据文件描述词来操作文件的特性。#include #include  int fcntl(int fd, int cmd); int fcntl(int fd, int cmd, long arg); int fcntl(int fd, int cmd, struct flock *lock);[描述]fcntl()针对(文件)描述符提供控制。参数fd

2013-07-23 14:41:30 468

转载 mknod命令

mknod命令用于创建一个设备文件,即特殊文件首先要明白什么是设备文件,简单的我们说 操作系统与外部设备(入磁盘驱动器,打印机,modern,终端 等等)都是通过设备文件来进行通信的,在Unix/Linux系统与外部设备通讯之前,这个设备必须首先要有一个设备文件,设备文件均放在/dev目录下一般情况下在安装系统的时候系统自动创建了很多已检测到的设备的设备文件,但有时候我们也需要自己手动创建,命

2013-07-23 14:30:54 5794

转载 Android 启动过程详解

1. Boot系统初始化, 具体过程参见(systemcoreinitInit.c)中的main函数,这时候,手机或者模拟器出现的画面是一个console,显示“ANDROID”msg。2. 初始化成功后,就开始mounting系统,具体参见(systemcoremountdMountd.c) 中的main函数。3.接下来运行ndroidRuntime,并开始启动java虚拟机da

2013-07-23 13:54:35 400

转载 Linux下mkdir函数

Linux下mkdir函数头文件库:#include #include 函数原型:int mkdir(const char *pathname, mode_t mode);函数说明:mkdir()函数以mode方式创建一个以参数pathname命名的目录,mode定义新创建目录的权限。返回值:若目录创建成功,则返回0;否则返回

2013-07-23 13:42:50 1904

转载 在内核里写i2c client 驱动的两种方式

前文介绍了利用/dev/i2c-0在应用层完成对i2c设备的操作,但很多时候我们还是习惯为i2c设备在内核层编写驱动程序。目前内核支持两种编写i2c驱动程序的方式。下面分别介绍这两种方式的实现。这里分别称这两种方式为“Adapter方式(LEGACY)”和“Probe方式(new style)”。(1) Adapter方式(LEGACY)(下面的实例代码是在2.6.27内核的pca

2013-07-15 13:17:52 544

转载 内存屏障

内核中定义的内存屏障原语有: #define barrier() __asm__ __volatile__("": : :"memory") #define mb() alternative("lock; addl $0,0(%%esp)", "mfence", X86_FEATURE_XMM2) #define rmb() alternative("lock; addl $0,0

2013-07-11 10:17:28 516

转载 initcall和module_init

在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)

2013-07-08 14:53:25 529

转载 DEVICE_ATTR 和 sysfs 的东西 -- sysfs_create_group

说道sysfs接口,就不得不提到函数宏 DEVICE_ATTR原型是#define DEVICE_ATTR(_name, _mode, _show, _store) struct device_attribute dev_attr_##_name = __ATTR(_name, _mode, _show, _store)函数宏DEVICE_ATTR内封装的是__ATTR(_na

2013-07-04 15:01:00 595

转载 如何使用adb 修改查看和修改gpio的状态

To show GPIO status:   adb shell "cat /sys/devices/virtual/misc/mtgpio/pin"To change GPIO status:   adb shell "echo \"-w=99:0 1 0 0 0 1 0\" >/sys/devices/virtual/misc/mtgpio/pin" 每行分别对应: 

2013-07-02 11:18:23 3060

转载 Linux stat函数讲解

Linux stat函数讲解Linux stat函数讲解:表头文件:    #include             #include 定义函数:    int stat(const char *file_name, struct stat *buf);函数说明:    通过文件名filename获取文件信息,并保存在buf所指的结构体stat中返回值:

2013-06-27 15:40:10 429

转载 Linux文件系统的工作原理

Linux的ext2, ext3, 和 ext4 文件系统 ——Ubuntu和大多数最新的Linux发布版中使用的是ext4——采用了一种更聪明的方法来存放文件。与把多个文件并排放在磁盘上不同,Linux文件系统把所有文件都分散到了整个磁盘上,每两个文件之间都留有相当巨大的空闲空间。当文件被修改、体积增加时,它们通常有足够的空间来扩展。一旦有碎片产生时,文件系统会尝试移动整个文件来消除碎片,所以你

2013-06-26 13:52:45 774

转载 I2c在应用层读写有两种方式

I2c在应用层读写有两种方式。1       ioctl(fd,I2C_TIMEOUT,1);/*超时时间*/                ioctl(fd,I2C_RETRIES,2);/*重复次数*/                /***write data to e2prom**/                e2prom_data.nmsgs=

2013-06-25 14:22:48 1571

转载 创建3个节点。sys下面和proc、dev下面。

创建3个节点。sys下面和proc、dev下面。sys下节点的产生。/*访问设置属性方法*/  static ssize_t led_val_show(struct device* dev, struct device_attribute* attr,  char* buf);  static ssize_t led_val_store(struct

2013-06-25 14:20:35 1529

转载 Linux Kernel Panic报错解决思路

Linux Kernel Panic报错解决思路IN: LINUX :-) HOT: 13,220 ℃9八2011Linux虽然没有蓝屏现象,不过Kernel报错有时也会让人头疼。有时重启后正常,linux系统运行一段时间后又down了,总不能出现问题就reboot啊。我从网上搜集一下资料,整理了出来,希望大家能在评论与我交流您的看法与经验。什么是Kernel Pani

2013-06-24 15:06:12 615

转载 Linux kernel panic解决方法

kernel panic错误表现kernel panic 主要有以下几个出错提示:Kernel panic-not syncing fatal exception in interruptkernel panic - not syncing: Attempted to kill the idle task!kernel panic - not syncing: killing

2013-06-24 15:04:53 670

转载 seq_file 讲得很明白

kernel module编程(八):读取proc文件之seq_file   在上次我们使用了read_proc的方式通过/proc文件读取kernel module的信息。作者给的例子他自己说是ugly。而我们在读取大量数据时发现,受到用户buffer大小的限制(page的大小),可能需要读取多次,不仅需要记录上次读取的位置,而且由于每次读取我们申请了信号量,读取完释

2013-06-20 14:19:44 1049

转载 copy_from_user 详解

copy_from_user函数的目的是从用户空间拷贝数据到内核空间,失败返回没有被拷贝的字节数,成功返回0.这么简单的一个函数却含盖了许多关于内核方面的知识,比如内核关于异常出错的处理.从用户空间拷贝数据到内核中时必须很小心,假如用户空间的数据地址是个非法的地址,或是超出用户空间的范围,或是那些地址还没有被映射到,都可能对内核产生很大的影响,如oops,或被造成系统安全的影响.所以

2013-06-14 11:36:39 457

转载 .globl _start

.globl指示告诉汇编器,_start这个符号要被链接器用到,所以要在目标文件的符号表中标记它是一个全局符号(在第 5.1 节 “目标文件”详细解释)。_start就像C程序的main函数一样特殊,是整个程序的入口,链接器在链接时会查找目标文件中的_start符号代表的地址,把它设置为整个程序的入口地址,所以每个汇编程序都要提供一个_start符号并且用.globl声明。如果一个符号没有用.gl

2013-06-10 13:51:23 429

转载 linux statfs命令函数介绍

statfs 主要用来获得磁盘的空间sun 系统下为 statvfs, linux系统下为statfs #ifdef sun#include #endif#ifdef linux#include    // 此处也可以为#endif   中调用     下有结构      struct   st

2013-06-10 10:17:54 2579

转载 ADB server didn't ACK * failed to start daemon * 解决方案

前几天请假了,回到公司后,打开电脑,插上手机,eclipse居然报ADB server didn't ACK * failed to start daemon *的错误,之前出这样的问题,都是:  1. 查看任务管理器,关闭adb.exe进程,或者重新插一下手机,重启eclipse;  2. 或者在eclipse里面的DDMS里面的devices区间右上角有个向下的箭头:

2013-06-07 16:05:58 485

转载 linux shell 脚本之深入浅出的grep的用法

今天在纠结grep用法时候,由于讲解的教材比较少,纠结了较长的时间。最终还是攻下了,所以拿出来给大家分享。grep      显示匹配一个或多个模式的文本行,时常会作为管道后的第一步,以便对匹配上的数据做进一步处理。最常见用法,查询文件内字符串[root@localhost /]# grep root /etc/shadow root:$1$HFDnk5hm$D

2013-06-02 22:02:50 412

转载 《Linux内核修炼之道》精华分享与讨论(21)——二分法与printk()

人生就是一个茶几,上面摆满了杯具。内核也是一个大茶几,不过它上面的杯具是一个个的bug。确定bug什么时候被引入是一个很关键的步骤,在这个定位bug的过程中,不论有意或无意,都会很自然地用到二分查找的方法。二分查找法的基本原理对于二分查找法,我们不会也不应该会感到陌生。作为一种高效的查找算法,它曾出现在我们的数据结构课堂里,出现在一次又一次的面试里,更是会频繁地应用在我们的代码里。在我们所

2013-06-02 21:30:27 487

转载 list_for_each_entry

参考:http://blog.sina.com.cn/s/blog_5e99b41e0100rxgf.htmlhttp://hi.baidu.com/shiftedmind/blog/item/1a7c8381e6a67fa56d8119da.html         在Linux内核源码中,经常要对链表进行操作,其中一个很重要的宏是list_for_each_entry:

2013-05-29 16:53:59 421

转载 自旋锁spin_lock和raw_spin_lock

本文不打算详细探究spin_lock的详细实现机制,只是最近对raw_spin_lock的出现比较困扰,搞不清楚什么时候用spin_lock,什么时候用raw_spin_lock,因此有了这篇文章。/******************************************************************************************

2013-05-29 16:37:08 613 1

转载 kdump

kexec是一个快速启动机制,允许通过已经运行的内核的上下文启动一个Linux内核,不需要经过BIOS。BIOS可能会消耗很多时间,特别是带有众多数量的外设的大型服务器。这种办法可以为经常启动机器的开发者节省很多时间。kdump 是一个新的,而且非常可信赖的内核崩溃转储机制。崩溃转储数据可以从一个新启动的内核的上下文中获取,而不是从已经崩溃的内核的上下文。当系统崩溃 时,kdump使用ke

2013-05-29 16:10:19 491

转载 Linux内核的Oops

什么是Oops?从语言学的角度说,Oops应该是一个拟声词。当出了点小事故,或者做了比较尴尬的事之后,你可以说"Oops",翻译成中国话就叫做“哎呦”。“哎呦,对不起,对不起,我真不是故意打碎您的杯子的”。看,Oops就是这个意思。在Linux内核开发中的Oops是什么呢?其实,它和上面的解释也没什么本质的差别,只不过说话的主角变成了Linux。当某些比较致命的问题出现时,我们的Linux

2013-05-29 16:07:03 459

转载 BUG 和 BUG_ON

原文:http://blog.csdn.net/onlyfever/article/details/5722712调试的时候很有用的东西:dump_stack 使用前,先在内核配置中把kernel debug选上:make menuconfig:kernel hacking-->kernel debug 作用:一些内核调用可以用来方便标记

2013-05-29 15:56:21 423

转载 offsetof(TYPE, MEMBER)

offsetof(TYPE, MEMBER)该宏在Linux内核代码(版本2.6.22)中定义如下:#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER); 分析:(TYPE *)0,将 0 强制转换为 TYPE 型指针,记 p = (TYPE *)0,p是指向TYPE的指针,它的值是0。那么 p

2013-05-29 15:44:24 363

转载 container_of 理解

问题:如何通过结构中的某个变量获取结构本身的指针???关于container_of见kernel.h中:/*** container_of - cast a member of a structure out to the containing structure* @ptr:     the pointer to the member.* @type:     the t

2013-05-29 15:33:54 400

系统框架介绍

适用于对于初学者和中级学者,介绍系统的基本框架,有一个比较详尽的说明。

2014-05-09

Oracle+SQL

对于Oracle+SQL优化,有比较详尽的讲解,适合初学者以及中等学者深入学习。

2014-05-09

WCDMA.协议pdf

全美最大IT公司一位专家写的WCDMA教程\lecture2.pdf

2012-11-06

全美最大IT公司一位专家写的WCDMA教程

全美最大IT公司一位专家写的WCDMA教程,不错!

2012-11-06

空空如也

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

TA关注的人

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