自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(106)
  • 资源 (1)
  • 收藏
  • 关注

原创 ubuntu 设置代理

https://wiki.archlinux.org/index.php/proxy_settings#Proxy_settings_on_GNOME3

2014-04-24 13:08:48 943

转载 usb协议总结

http://fangjian0518.blog.163.com/blog/static/5591965620116283232431/一 枚举过程:◆ 用户将一个USB设备插入USB端口,主机为端口供电,设备此时处于上电状态。◆主机检测设备。◆集线器使用中断通道将事件报告给主机。◆主机发送Get_Port_Status(读端口状态)请求,以获取更多的设备信息。◆集

2014-04-18 14:22:24 960

原创 linux ftrace

在设置完function这个tracer后, 得echo > set_event这个问

2014-04-18 14:19:14 718

转载 Assert && De-assert

http://blog.sina.com.cn/s/blog_4b7bd3380100gokz.html读E文经常会碰到一些关键术语,今天看了Assert和deassert,把它们的含义转载出来,供大家查阅。       1、Assert(Asserting、Asserted),De-assert(Deassert、deasserting、deasserted)      asse

2014-04-10 10:10:27 1571

原创 linux pfn, page, physical/virtual address

从页框号page结构体(定义在include/linux/mm_types.h文件里)pfn_to_page(pfn);page_to_pfn(page);页框号物理地址得到页框号:physical_addr >> PAGE_SHIFT   #asm/page_types.h物理地址: pfn page结构体 虚拟地址page_address(page)如果是线性映射

2014-03-31 17:58:11 2877

原创 linux模块引用一个外部符号

当驱动被编译成一个模块时,引用外部符号(函数或者变量)时,这个外部符号得先通过EXPORT_SYMBOL给导出来才行,否则编译时会找不到该符号得定义。

2014-03-31 17:07:15 980

原创 访问硬件寄存器的位域值

一般在驱动程序中,经常需要读硬件寄存器的值,然后在检查其中某些字段的值,通常的做法是设置一些位掩码,然后与一下就可以了,今天看驱动代码,发现还有如下的方法,觉得还不错。union A {   struct {         u64   part1:2;         u64   part2:2;         u64   part3:60;  } part;

2014-02-14 11:45:46 768

转载 快速排序

http://blog.sina.com.cn/s/blog_70441c8e0100pxuh.htmlvoid quicksort(int a[], int low, int high){int i = low;int j = high;int temp = a[i];  //比较基准值,  如果基准值是a[j]. 那下面的两个循环应该调换位置。      

2013-12-19 22:35:47 565

原创 迭代总线上的所有device/driver

drives/base/bus.cbus_for_each_dev;bus_for_each_drv;bus_find_device;获取设备名字:include/linux/device.hdev_name(struct device *dev);

2013-12-12 17:27:57 617

转载 Debug Android and Linux suspend and resume

[转]http://blog.chinaunix.net/uid-12461657-id-3153698.html积攒了一些关于调试Android和Linux下面的suspend 和 resume的经验, 在这里和大家分享一下。希望可以有些帮助, (下面没有写Android专用的, 就是Linux通用的)。1. no_console_suspend  在kernel启动参数里面

2013-12-12 17:23:51 891

原创 logcat -b kernel 没输出

1 看/dev/log/kernel文件节点是否存在2 查看/proc/consoles看logk0有没有enabled起来, 没有的话在cmdline加上console=logk0.

2013-12-09 17:43:49 4823

原创 android socket通信不成功

尼玛原来socket通信都好好的, 后面在应用加了一个横屏的代码,死活是通信不了,折腾了三天才搞清楚原因,其实一开始就应该怀疑是新加入的代码引起的,可是。。。onCreate() {....if(getRequestedOrientation()!=ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE){     setRequestedOri

2013-09-24 22:40:31 4642

原创 linux socket

socket是用于网络中不同计算机进程通信的机制,也可以用于同一台机器的进程间通信,此时叫做本地socket,  不同计算机的进程间通信叫做网络socket.   socket通信的双方是位于两个进程中的socket对象。linux server端socket通信模型int server_sockfd, client_sockfd;int server_len, client_len;

2013-09-24 14:20:15 796

原创 linux container_of(ptr, type, member)

container_of宏的作用是根据指向一个结构体某个成员的指针得到这个结构体的基址。@include/linux/kernel.h#define container_of(ptr, type, member) ({ \const typeof( (type *)0->member) * __mptr = (ptr); \(type *)( (char *)__mptr

2013-09-06 10:21:34 1216

原创 android ashmem 匿名共享内存

1. ashmem是基于linux里的shmem实现的,而shmem又是基于tmpfs伪文件系统。2. ashmem驱动实现了/dev/ashmem设备文件的open/read/llseek/mmap/ioctl等文件操作,但没有实现write文件操作,由于本质还是文件内存映射(内存指得是进程的虚拟内存,文件则是属于tmpfs,这里和基于磁盘的文件系统的内存映射还是有所不同的,这难道是匿名一词

2013-09-02 16:43:02 1250

原创 linux 监控驱动suspend/resume的执行

当pm核心去调用驱动的suspend/resume的回调函数时,它会设置一个定时器来监视回调函数的执行,如果回调长时间没有执行完毕的话, 定时器函数会调用BUG()让系统挂掉重启,所以在写pm相关的回调函数时,要确保不能长时间阻塞,否则后果你是知道的, 可以看下dpm_wd_handler这个函数/* kernel/drivers/base/power/main.c **/static vo

2013-08-28 16:15:37 7021

原创 android 睡眠和唤醒过程

睡眠过程:入口:用户空间的代码通过向/sys/power/state文件节点写入特定的字符串(on/mem)来请求系统进入特定的状态, 过程:1) 向/sys/power/state文件写入时会调用到state_store函数:state() { #ifdef CONFIG_EARLYSUSPEND request_suspend_state(s

2013-08-19 17:02:55 4401

原创 linux 软中断和tasklet

1. 软中断是什么 ? 软中断是一种延时机制,代码执行的优先级比进程要高,比硬中断要低。相比于硬件中断,软中段是在开中断的环境中执行的(长时间关中断对系统的), 代码也是执行在中断/线程上下文的,也是不能睡眠的,虽然每个cpu都有一个对应的ksoftirqd/n线程来执行软中断,但是do_softirq这个函数也还会在中断退出时调用到,因此不能睡眠(中断上下文不能睡眠的原因是由于调度系统是以进

2013-08-19 13:51:26 2207

原创 LFS<0603-2>

gcc pass-1for file in \$(find gcc/config -name linux64.h -o -name linux.h -o -name sysv4.h)  /*  在gcc/config目录下寻找linux64.h/linux.h/sysv4.h头文件, -o 是或的意思 */docp -uv $file{,.orig}    /* 复制找到的文件

2013-06-03 10:00:23 976

原创 LFS<0531-1>

chmod a+wt $LFS/sources    /* 使sources目录的权限设置为可写和sticky, sticky属性确保只有文件的owner的才有权限删除该文件,如果文件可写的话,其他用户可以写入数据,但不能删除, 对root用户来说是无效的,因为root是超人 */wget -i wget-list -P $LFS/sources  /* -i 选项指定下载列表,  -

2013-05-31 14:05:54 698

原创 linux disable CPU c4/c6 state

echo 1 > /sys/devices/system/cpu/cpuX/cpuidle/state[3/4]/disable

2013-05-31 11:05:27 2164

原创 login shell 和 non-login shell

login shell会读取/etc/profile和 ~/.bash_profile[~/.bash_login] [ ~/.profile] /* 三选一, 优先级依次降低*/  和~/.bashrcnon-login shell只会读取~/.bashrc配置文件cat  > ~/.bash_profile exec env -i HOME=$HOME  TERM=$TER

2013-05-30 10:32:53 915

原创 linux device suspend/resume test

See Documentation/power/basic-pm-debuggingecho 0 > /proc/sys/kernel/printkecho devices > /sys/power/pm_test

2013-05-25 20:40:12 1194

原创 linux del_timer_sync

Note: You must not hold locks that are held in interrupt context *   while calling this function. Even if the lock has nothing to do *   with the timer in question.  Here's why: * *    CPU0

2013-05-25 20:33:28 3049

原创 linux usleep_range(min, max)

这个延迟函数最少的延迟时间为50us, 就算min=max=1, 实际的效果应该不是延迟1us, 而是50us, 大牛们说的。。。

2013-05-25 20:23:49 10224

转载 Android init

转载:http://www.cnblogs.com/linucos/archive/2012/05/22/2513046.html1. init程序逻辑文章引用地址:一篇pdf文档,来自百度文库Android 源码分析 -- (一) Android 启动过程 royalxw@gmail.com 1. 源码文件路径: platform/system/cor

2013-05-14 15:18:05 760

原创 linux pm runtime

pm runtime核心只提供机制(功能), 什么的时候上电/掉电等策略应由driver去实现。 driver里实现的pm runtime的call back函数被runtime 核心封装了起来,会暴露一些API接口来间接的调用这么Call back函数。pm runtime利用了一个工作队列pm_wq来负责具体的电源事务,上电和下电有同步和异步之分:设备状态在PM runtime中的表示

2013-04-11 16:56:59 3447

转载 ssh 免密码登录

转自http://www.cnblogs.com/dlutxm/archive/2011/10/14/2212019.html配置ssh之前要在本机上装上ssh,可以通过sudo apt-get install ssh或者通过新立德来安装。如果没有进行配置的话,登录到本机或者远程主机需要该主机的密码才行。下面进行无密码登录的配置: 很简单,执行ssh-keygen -t

2013-03-18 16:49:08 778

原创 linux 编译模块时发生找不到符号的错误

在内核新添加了一个文件,EXPORT_SYMBOL出来一些函数接口,然后创建一个头文件来申明这些API。 然后在一个模块里调用这些API, 编译出错:ERROR:· func_name [module_name.ko] undefined!但是在其它编译进内核的文件里调用确没有问题。原来是忘记在新添加的代码文件里包含了一个头文件: #include .   EXPORT_SYMBO

2013-03-18 16:30:24 2632

原创 构建一个编译时错误

#define BUILD_BUG_ON_ZERO(e) (sizeof(struct { int:-!!(e); })) , 如果e为非0的话,将会产生一个编译时错误, 因为一个位域不能为负数, 为0 的话OK。 原来一个结构体的定义也可以这样,木有结构名,其成员也木有名, 尼玛都是无名氏啊, 其实不管怎么奇怪,只要你丫编译器能认识就行了。 算是一种约定吧, 这个宏的名字取得反义。。。

2013-03-16 20:58:40 914

原创 proc文件的读写函数

每一个文件都有相应的文件操作表,最主要的就是读操作和写操作了, proc文件的读写函数得注意其对应的返回值,如果在读函数内一直返回一个正数,则上层会认为该文件还有数据需要读取,会一直无限的读下去。。。在实现proc文件读操作时,应该更新传递进来的offset参数来表示文件指针,在调用copy_to_user之前,应该将*offset的值与文件对应的数据buffer的长度进行比较,如果大于buffe

2013-03-08 10:16:53 1967

原创 从用户空间传递到内核中字符串的长度

当通过proc文件系统向内核传递一个字符串时,例如"abcde", 其字符串的长度为6而不是5, 其中多了一个换行符:root@android:/ # echo "abcde" >/proc/slab_trace root@android:/ # dmesg>>[ 131.487923] slab_trace_write: slab_trace_name:abcde>[ 131.

2013-03-08 09:55:56 987

原创 linux perf

perf是一个性能分析的tool. 类似ftrace都是/proc/等接口来获取内核的信息。常用命令:perf list   #列出所有能够触发perf采样点的事件$ perf list List of pre-defined events (to be used in -e):  cpu-cycles OR cycles [Hardware event] instructio

2013-02-27 16:11:12 3915

原创 伙伴系统算法中的伙伴

一个块的伙伴究竟是位于该块的前面还是后面,取决于oder的值:buddy_idx = page_idx ^ (1 如果page_idx的值大于1page_idx = 32, order = 2时, buddy_idx = 36                            order = 3时, buddy_idx = 40

2013-02-27 11:31:23 900

原创 /proc/iomem

/proc/iomem这个文件记录的是物理地址的分配情况,内存只占用4G(32位CPU)物理地址的一部分,一般从地址0开始,每一行都代表一个资源(地址范围和资源名), 可用物理内存的资源名为“System RAM”,如01000000-35aeffff : System RAM这个是由e820表中的 E820_RAM类型的表项通过insert_resource这个API注册到iomem

2013-02-04 16:40:30 15093

原创 __initcall不能用于模块代码中

如题, 本来想在debugfs中生成一个文件的,发现用__initcall用在模块中不起作用,可考虑用模块参数代替,/sys/module/xxxx/parameters.

2013-02-01 09:01:06 746

原创 C语言的逗号表达式

一个表达式最后肯定有一个值,如算术表达式,关系表达式等,因此逗号表达式也有一个值,这个值为逗号表达式的最后一个表达式的值。一个简单的测试程序可以说明这一点:#include int main(void){int a = 1, b = 0;if (a, b, 0) {printf("True\n");}elseprintf("False\n");

2013-01-27 17:15:53 571

原创 linux 工作队列

书上写的工作队列的实现是创建一个单独的线程来执行相应的work. 但是最新的内核实现却不是这样的,原先的工作队列的接口都快要废弃了, New API:alloc_workqueue(name, flags, max_active)alloc_ordered_workqueue(const char *name, unsigned int flags){

2013-01-22 10:36:36 3941

原创 linux cmdline参数解析

我们可以通过 cat /proc/cmdline来获取内核的命令行参数,但是每个参数是怎么在代码解析的, 以slub为例,在源码中有如下代码:__setup("slub_min_order=", setup_slub_min_order);__setup("slub_max_order=", setup_slub_max_order);__setup("slub_min_obj

2013-01-16 17:59:56 10948

原创 android中获取电池当前电量

Android是通过sys伪文件系统中文件来获取手机电池的电量及状态。路径: /sys/class/power_supply/xxxx/伪装capacity文件来手动控件电池电量状态, 基本思路是将/sys/class/power_supply/xxxx/作为一个分区的挂载点, 然后在分区创建必要的文件,然后就可以模拟系统低电量状态#!/system/bin/sh#

2013-01-09 18:01:48 3573

S3C2440英文版数据手册

S3C2440英文版数据手册 详细的指令介绍和相关模块的寄存器详解

2010-07-27

空空如也

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

TA关注的人

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