- 博客(251)
- 收藏
- 关注
原创 Android ANR
1, Android ANR的概念ANR,是“Application Not Responding”的缩写,即“应用程序无响应”。在Android中,ActivityManagerService(简称AMS)和WindowManagerService(简称WMS)会监测应用程序的响应时间,如果应用程序主线程(即UI线程)在超时时间内对输入事件没有处理完毕,或者对特定操作没有执行完毕,就会出现A
2015-08-09 14:54:36
784
原创 linux下打patch
How to apply patch: diff -uN test_old test_new > test.patch -r参数是连目录diff patch -p0 test.patch
2015-08-09 14:51:27
746
原创 trustzone技术
1,trustzone概念每个物理的处理器核提供两个虚拟核,一个是非安全核(Non-secure, NS),另一个是安全核(Secure, S),arm体系保证了很多硬件资源都是双份的,每个虚拟核独享自己的那份资源,大大简化了软件设计。在这二者之间切换的机制叫做monitor模式。NS核只能访问NS的系统资源,而安全核能访问所有资源。普通世界的软件可以使用SMC指令或者通过硬件异常机制的一个子
2015-08-09 14:47:30
1364
原创 linux SMP系统学习笔记
一,一个cpu在另外一个cpu上运行指定的函数int smp_call_function_single(int cpu, smp_call_func_t func, void *info, int wait)smp_call_function_single()函数,在一个指导的cpu上运行一个函数。 } else {
2015-08-09 14:42:50
8632
1
原创 Linux Per-cpu变量
1,Linux per-cpu变量的作用当创建一个per-CPU变量时,系统中的每个处理器都会获得它自己对这个变量的拷贝(副本).存取per-CPU变量时几乎不需要加锁,因为每个处理器使用的都是它自己的拷贝2,Linux per-cpu变量的使用在编译的时候声明一个per-cpu变量编译期间创建一个per-CPU变量: DEFINE_PER_CPU(in
2015-08-09 14:14:37
1861
原创 [Linux内存]页缓存和块缓存
1, 内核为设备提供了两种通用的缓存方案:a, 页缓存(page cache)b, 块缓存2,内核管理页缓存所用的数据结构内核通过基数树(radix tree)来管理页缓存的,3,内核如何回写内存中修改的数据到物理设备a, 内核的守护进程在后台运行,为pdflush,这些守护进程周期性激活,b, pdflush的第二种运作模式是:如果缓存中修改的数据项目
2015-08-01 17:42:25
3556
原创 linux页表pgd的含义
pgdPGD: Page Global DirectoryLinux系统中每个进程对应用户空间的pgd是不一样的,但是linux内核 的pgd是一样的。当创建一个新的进程时,都要为新进程创建一个新的页面目录PGD,并从内核的页面目录swapper_pg_dir中复制内核区间页面目录项至新建进程页面目录PGD的相应位置,具体过程如下:do_fork() --> cop
2015-07-18 15:23:40
9064
转载 linux proc文件系统节点
8,/proc/pid>/ 目录下各个文件的含义,以com.android.chrome为例cmdline: com.android.chromeenviron: 这是个比较有用的文件,里面记录了当前进程的一些环境变量exe: 这个就是气这个进程的执行文件,bin文件fd目录: 该目录下记录的是该进程打开的所有文件的文件描述符limit
2015-07-18 15:21:49
1204
转载 匿名内存
1,匿名内存的概念匿名内存是指那些在文件系统里没有相对应的”储备文件“的那些内存,堆和栈空间的内存都属于匿名内存。匿名内存的用途:当一个程序很久没有运行的时候,需要要将程序占用的堆 栈交换到swap分区,而程序打开的文件则不需要放到swap分区,因为打开的文件直接可以放到其文件系统,swap分区还包括堆栈中的一些状态和变量数据等2,A
2015-07-18 15:19:46
2954
原创 [Linux中断]中断数据结构以及ARM处理中断流程
1,中断相关的数据结构 在linux kernel中,对于每一个外设的IRQ都用struct irq_desc来描述,我们称之中断描述符(struct irq_desc)在linux kernel中,使用struct irq_desc来描述一个外设的中断,我们称之中断描述符,具体代码如下:http://www.wowotech.net/irq_subsystem/irq_han
2015-07-18 15:13:25
677
转载 Linux Zram的概念
linux zram技术 zram就是在发生swap事件的时候,不要把置换的页面置换到外部存储中,直接置换到一块内存中压缩起来,这样发生swap事件的时候所花费的时间就是压缩和解压的时间,这样可以大大提高性能。ZRAM是以块设备的形式注册进内核的,在高通平台其文件路径是:LINUX/android/kernel/drivers/staging/zram/zram_drv.c
2015-07-18 15:08:19
2265
转载 Linux Cgroups概念
以下转自:linux cgroupCgroups是control groups的缩写,是Linux内核提供的一种可以限制、记录、隔离进程组(process groups)所使用的物理资源(如:cpu,memory,IO等等)的机制。Cgroup的相关概念1.任务(task)。在cgroups中,任务就是系统的一个进程。2.控制族群(control g
2015-07-18 15:06:21
674
转载 cpu hotplug的流程
以下内容参考: http://loda.hala01.com/2011/08/android-筆記-linux-kernel-smp-symmetric-multi-processors-開機流程解析-part3-linux-多核心啟動流/1,cpu hotplug机制Linux Kernel支援CPU hotplug机制,并可透过全域变数cpu_hotplug_disabled决定处理器
2015-07-18 14:51:06
9281
转载 [Linux同步]读写信号量
以下内容转自: 信号量一,信号量和自旋锁的区别信号量与自旋锁有一定的区别,信号量在无法得到资源时,内核线程处于睡眠阻塞状态,而自旋锁处于忙等待状态。因此,如果资源被占用时间很短时,使用自旋锁较好,因为它可节约调度时间。如果资源被占用的时间较长,使用信号量较好。二,信号量相关的API信号量的相关API函数定义功能说明sema_ini
2015-07-05 08:27:27
662
原创 debug相关--其它
1,spin lock相关的debug方法spin lock原理linux 内核中Spin lock工作原理,当某一个线程持有lock的时候next值加1,释放锁的时候owner值加1,
2015-05-10 10:35:12
508
转载 [Linux内存]slub分配器学习笔记(一)--基本概念
slub分频器学习笔记slub分配器(一)---概述1,基本原理以及重要的数据结构struct kmem_cacheslub把内存分组管理,每个组分别包含2^3、2^4、...2^11个字节,在4K页大小的默认情况下,另外还有两个特殊的组,分别是96B和192B,共11组。每一个组都是用一个kmalloc_cache[]数组表示的。每个数组元素对应一种大小的内存,可以把一个km
2015-05-10 10:22:16
696
转载 [linux]进程(五)——进程调度(实时进程调度)
点击打开链接1,实时进程和普通进程调度的差别实时进程需要严格按照优先级的顺序执行,比如在八核平台上,必须是优先级最高的八个进程得到调度,如果此时八个优先级最高的进程都在某一个cpu的rt队列上,那么此时的调度就会涉及到了进程在不同cpu的迁移。2,实时调度算法概述该实时调度器主要为了解决以下四种情况:(1). 在唤醒任务时,待唤醒的任务放置到哪个运行队列
2015-05-10 10:11:00
2602
转载 linux设备树
linux设备树1,DTS (device tree source).dts文件是一种ASCII 文本格式的Device Tree描述,此文本格式非常人性化,适合人类的阅读习惯。基本上,在ARM Linux在,一个.dts文件对应一个ARM的machine,一般放置在内核的arch/arm/boot/dts/目录。由于一个SoC可能对应多个machine(一个SoC可以对应多个产品和电路板
2015-05-10 09:27:04
574
原创 git常用命令学习
1,使用git blame命令可以很容易找出罪魁祸首。这个命令可以将文件中的每一行的作者、最新的变更提交和提交时间展示出来。git blame [file_name]2,
2015-05-10 09:14:52
460
转载 [Linux内存]slab分配器学习笔记(三)--实现
1,分配对象cache_grow用于缓存的增长,它会从伙伴系统获取内存。其流程如图所示:2,释放对象:
2015-04-19 16:09:43
694
转载 CPU CACHE学习
点击打开链接wiki1,CPU CACHE的概念缓存块(Cache Block\Cache Line): 每个缓存块存储具有连续内存地址的若干个存储单元。在32位计算机上这通常是一个字(word),即四个字节对应每个cache line,都有这样一个结构data bolck存放的是缓存行中所保存的就是从主存取过来的数据,tag表示的是数据
2015-04-19 12:54:03
1322
原创 [Debug]Kernel panic学习笔记(三)——常见分析
1,Poison overwritten点击打开链接2,具体backtrace的分析1. 11, pgd = c39d8000 2. [00000000] *pgd=339cf031, *pte=00000000, *ppte=00000000 3. Internal error: Oops: 817 [#1] 4. last sysf
2015-04-03 22:37:18
1881
原创 ARM-64学习(一)
1,ARM-64学习New 64-bit general purpose registers(X0-X30), 32-bit(w0-w30)AArch64 introduce the “zero” register, XZR and WZR(reads as 0,writes ignored)Separate link registers(X30 and ELR_EL
2015-04-03 22:23:42
1570
原创 ARM-32学习(一)
1, ARM modeARM cores are divided in lastest versions to three main lines:§ Cortex-M cores, used for really small devices, usually with on-chip memory and simpler operations§ Cortex-R
2015-04-03 22:20:37
625
原创 Trace32相关
1, Trace32的配置步骤当拿到trace32的安装包后找到bin目录下的t32start.exe可执行文件,打开该文件然后配置(是要进行GDB调试还是在线调试ARM板子等等)2,Trace32的相关命令Trace32是不区分大小写的,所以以下命令字母大小写都可以。查看当前的栈帧: f 命令查看某一个内存地址对应的值: d.dump %address
2015-04-03 22:10:29
10416
原创 一些脚本
shell@ss:/ $ while truewhile true> dodo> lsls> sleep 10sleep 10> donedone
2015-03-20 21:55:16
534
原创 [Debug]Kernel panic学习笔记(二)
1,发生kernel panic后相关的调试方法点击打开链接点击打开链接example:[] el1_irq+0x68 其中:ffffffc0002035a8 表示函数地址,+0x68表示的是偏移。2, 如何分析linux的dump文件3,ARM各个寄存器的相关含义pc 程序计数器, 指向当前指令的下条指令的地址lr 链接
2015-03-20 21:52:28
1273
原创 watchdog相关
1,watchdog原理Watchdog bark: processor在规定的时间内没有踢狗导致watchdog timer硬件reset processorWatchdog bite: 即使watchdog踢狗但是在某个时间内(比如3s)processor不能处理reset的中断,最后导致watchdog bite发生watchdog bark(watch
2015-03-20 21:45:35
3184
原创 linux android memory相关问题的一些debug方法
1,android的procrank命令 点击打开链接 procrank -h 命令2, linux的proc文件系统, 查看某个进程占用的内存时候用到的一些节点,· /proc//statm· /proc//maps· /proc//smaps查看系统的一些内存/proc/meminfo点击
2015-03-20 21:42:40
1472
转载 在linux下安装软件
以下转自 点击打开链接apt-get update——在修改/etc/apt/sources.list或者/etc/apt/preferences之後运行该命令。此外您需要定期运行这一命令以确保您的软件包列表是最新的。 apt-get install packagename——安装一个新软件包(参见下文的aptitude) apt-get remove pa
2015-03-20 21:35:15
436
原创 奋斗是一辈子的事情
越来越觉得奋斗是一辈子的事情,每个人出身不一样,小时候的教育和家庭有很大关系,城里的小孩小时候就是各种兴趣班辅导班,而农村的孩子大部分出于散养的状态,这个时候城市里的孩子确实比农村里的孩子受到的教育更好,综合素质也会更高,但人生几十年,小时候也只是占了不到人生的五分之一,所以在长大后还是完全可以追回来,有些人初中高中成绩很好然后考上很好的大学,有些人可能初中高中的时候比较贪玩,上的大学不怎么好,但
2015-03-05 21:08:39
699
原创 perl学习笔记八——文件读写
一,perl对文件读写的处理点击打开链接检查当前目录下是否有test.pl的文件,如果有则提示:@test=`dir 2>&1`;if (open(MYFILE, ">>cycle5_log.txt")) {print MYFILE (@test); }else{ print "creat new file error!\n
2015-03-05 20:49:03
438
原创 程序员自我修养第三章__链接.
程序员自我修养第四章读书笔记一,静态链接:链接就是将几个输入的目标文件加工合并成一个输出文件,加工合并的方法是将几个输入文件中相似的段合并,比如将所有输入文件的“.text”合并到一个输出文件的“.text”段。现在连接器一般将整个链接过程分为两步:1,空间与地址的分配,扫描所有输入的目标文件,获得它们各个段的长度和属性,位置,并且将输入目标文件中所有的符号(Symbol)
2015-02-13 16:04:57
487
原创 Driver Structure
1,Driver Loading and InitializationNT drivers are dynamically loaded,in NT 4,drivers are almost loaded during system bootup, When a driver is loaded,the IO Mangaer calls its DriverEntry entry point.
2015-02-12 14:45:38
446
原创 程序员自我修养第三章__ELF文件
一,四种ELF文件格式可重定位文件 linux下的.o文件可执行文件 比如/bin/bash共享目标文件 linux的.so文件核心存储文件 linux下的core dump文件linux下可以通过file命令查看文件的类型,比如 file test.o二,目标文件的格式点击打开链接点击打开链接可以通过objdump和
2015-02-11 19:19:08
591
转载 windows驱动编程学习笔记——(三)IRP
一,IRP的概念(I/O Request Package)当一个应用程序调用函数去操作某个设备时,比如调用createFile,deviceIOControl,等等时,I/O管理器为此函数创建一个IRP数据结构对象和一个IRP_STACK_LOCATION数据结构对象数组,(数组个数等于驱动程序堆栈上驱动的个数),IRP中的CurrentStackLocation指向IRP_STACK_LOC
2015-02-10 16:21:30
1881
原创 好记性不如烂笔头
自己大概是从一年前开始养成了写博客记录的习惯,下面将我自己的一些心得体会写下,一是方便我自己以后再次查看总结,二也是希望帮助更多的人养成一些好的习惯。
2015-02-02 20:31:42
540
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人