自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(56)
  • 收藏
  • 关注

转载 Linux Highmem的使用

http://blog.csdn.net/kickxxx/article/details/8595189Linux kernel zone有如下类型:ZONE_DMA, ZONE_NORMAL和ZONE_HIGHMEM。每一种zone类型适合不同的使用类型:ZONE_DMA是低端物理内存范围适合于ISA设备的请求,ZONE_DMA的物理页框映射到kernel线性

2017-09-07 16:25:08 1207

原创 Linux中slab的使用方法实例

下面的代码片断展示了创建新 slab 缓存、从缓存中分配和释放对象然后销毁缓存的过程。首先,必须要定义一个 kmem_cache 对象,然后对其进行初始化static struct kmem_cache *idr_layer_cache;void __init idr_init_cache(void){ idr_layer_cache = kmem_cache_create("idr_l

2017-08-24 17:22:48 805

转载 gcc attribute weak & alias应用

1          gcc attribute weak & alias应用alias ("target")The alias attribute causesthe declaration to be emitted as an alias for another symbol, which must bespecified. For instance,    

2017-08-17 09:29:34 341

原创 linux 用宏区分函数的一个常用技巧

头文件中如此定义:#ifdef CONFIG_MMUextern void __init vmalloc_init(void);#elsestatic inline void vmalloc_init(void){}#endif另外一个文件中实现实体void __init vmalloc_init(void){struct vmap_area *va

2017-08-16 17:20:27 308

原创 linux CPU hotplug中断迁移

找到当前CPU上的中断,通过cpu_online_mask和affinity找到新的CPU,通过desc->chip->set_affinity进行迁移和route#ifdef CONFIG_HOTPLUG_CPUstatic void route_irq(struct irq_desc *desc, unsigned int irq, unsigned int cpu)

2017-08-16 10:33:31 1881 1

转载 __asm__ __volatile__内嵌汇编用法简述

__asm__ __volatile__内嵌汇编用法简述 在阅读C/C++原码时经常会遇到内联汇编的情况,下面简要介绍下__asm__ __volatile__内嵌汇编用法。带有C/C++表达式的内联汇编格式为:__asm__ __volatile__("Instruction List" : Output : Input : Clobber/Modify);其中每项的概念

2017-08-15 16:28:58 249

转载 ARM嵌入式开发中的GCC内联汇编简介

http://blog.csdn.net/ce123_zhouwei/article/details/8209702ARM嵌入式开发中的GCC内联汇编简介在针对ARM体系结构的编程中,一般很难直接使用C语言产生操作协处理器的相关代码,因此使用汇编语言来实现就成为了唯一的选择。但如果完全通过汇编代码实现,又会过于复杂、难以调试。因此,c语言内嵌汇编的方式倒是一个不错的

2017-08-15 16:14:51 373

原创 Linux CPU mask含义

CPU mask 信息 解释cpu_possible_mask系统内可以setup的CPU位图cpu_online_mask系统内已经setup的CPU中,正在使用的CPU位图cpu_present_mask系统内已经setup的CPU位图cpu_active_mask系统内处于可工作状态CPU位图,处于联机状态且可以迁移的CPU

2017-08-14 10:05:33 4111

转载 Linux内存管理--基本概念

版权声明:本文为博主原创文章,未经博主允许不得转载。目录(?)[+]1. Linux物理内存三级架构     对于内存管理,Linux采用了与具体体系架构不相关的设计模型,实现了良好的可伸缩性。它主要由内存节点node、内存区域zone和物理页框page三级架构组成。    • 内存节点node       内存节点node是计算机系统中对物理内存的

2017-08-10 14:47:39 261

转载 Understanding Caching(深入理解cache)

http://www.linuxjournal.com/article/7105Since the earliest days of microprocessors, system designers have been plagued by a problem in which the speed of the CPU's operation exceeded the bandwid

2017-08-10 09:22:24 528

转载 cache 浅析

http://blog.chinaunix.net/uid-26817832-id-3244916.html1.CacheCache一词来源于法语,其原意是“藏匿处,隐秘的地方”,而自从被应用于计算机科学之后,就已经成为了英语中的一个计算机体系结构专有名词。Sun Microsystems的前首席科学家Billy Joy,作为BSD unix,csh,vi,NFS,java,TCP

2017-08-09 17:15:40 294

转载 计算机科学基础知识(一):The Memory Hierarchy

http://www.wowotech.net/basic_subject/memory-hierarchy.html一、前言最近一个问题经常萦绕在我的脑海:一个学习电子工程的机械师如何称为优秀的程序员?(注:本文作者本科学习机械设计,研究生转到电子工程系学习,毕业后却选择了系统程序员这样的职业)。经过思考,我认为阻挡我称为一个优秀程序员的障碍是计算机科学的理论知识。自然辩证法

2017-08-09 15:52:07 3381

转载 ARM MMU页表框架

http://blog.csdn.net/xiaojsj111/article/details/11065717ARM MMU页表框架先上一张arm mmu的页表结构的通用框图(以下的论述都由该图来逐渐展开):以上是arm的页表框图的典型结构:即是二级页表结构:其中第一级页表(L1)是由虚拟地址的高12bit(bits[31:20])组成,所以第一级

2017-08-08 14:45:14 1428

转载 linux arm的存储分布那些事

http://blog.csdn.net/xiaojsj111/article/details/11724081linux arm 内存分布总览上图是linux的arm的虚拟地址分布总览,我们按从低地址到高地址的顺序逐个描述,每项的描述包括如下的内容的组和:地址范围大小,虚拟转物理的接口函数,各个区域对应的分配函数,该区域有什么作用,使用

2017-08-08 09:14:35 744

转载 内核地址空间的划分

整个内核地址空间的划分请参见下图:图中PAGE_OFFSET=0xc0000000,TEXT_OFFSET=0x00008000在arch/arm/makefile中指定,swapper_pg_dir=0x00004000在head.S中指定。    地址空间的第一段用于将系统的所有物理内存页映射到内核的虚拟地址空间中。由于内核地址空间从偏移量0xc000000

2017-08-07 10:31:01 1575

转载 什么是write-allocate policy?

在有cache的单机系统中,通常有两种写策略:write through和write back。这两种写策略都是针对写命中(write hit)情况而言的:write through是既写cache也写main memory;write back是只写cache,并使用dirty标志位记录cache的修改,直到被修改的cache 块被替换时,才把修改的内容写回main memory。那么在写失效(

2017-08-07 10:09:24 1292

转载 arm CP15 c1 Control Register

http://blog.csdn.net/panfengsoftware/article/details/7915605The Control Register provides control and configuration of:memory alignment, endianness, protection, and fault behavio

2017-08-07 09:38:46 597

转载 setup_arch()函数分析4--cpu_init

http://blog.csdn.net/boarmy/article/details/8652768arch/arm/kernel/setup.cstruct stack {    u32 irq[3];    u32 abt[3];    u32 und[3];} ____cacheline_aligned;/* * cpu_init - initi

2017-08-03 11:37:13 306

转载 BITS_TO_LONGS宏的作用

[Linux-3.0]BITS_TO_LONGS定义在:include/linux/bitops.h#define BITS_PER_BYTE        8#define BITS_TO_LONGS(nr)    DIV_ROUND_UP(nr, BITS_PER_BYTE * sizeof(long))DIV_ROUND_UP定义在:inclu

2017-08-03 11:05:37 388

转载 关于kmalloc、vmalloc及kmap

http://blog.csdn.net/gxfan/article/details/27234551、  kmalloc()是内核中最常见的内存分配方式,它最终调用伙伴系统的__get_free_pages()函数分配,根据传递给这个函数的flags参数,决定这个函数的分配适合什么场合,如果标志是GFP_KERNEL则仅仅可以用于进程上下文中,如果标志GFP_ATOMIC则可以用于中断上

2017-08-02 11:29:55 395

转载 什么是 "asmlinkage"?

http://blog.csdn.net/skywalkzf/article/details/5068966什么是 "asmlinkage"?相信大家在看Linux的source code的时候,都会注意到asmlinkage这个宏,它是用来做什么的呢?The asmlinkage tag is one other thing that we should obse

2017-08-01 15:44:22 153

转载 arm linux中一些重要的宏及地址定义

1)TEXT_OFFSET  内核在RAM中的起始位置相对于RAM起始地址偏移。值为0x00008000./arch/arm/Makefile111 textofs-y := 0x00008000112 textofs-$(CONFIG_ARCH_CLPS711X) := 0x00028000113 # We don't want the htc bootloader 

2017-08-01 11:32:32 289

转载 ARM汇编中ldr与adr的区别

ldr与adr的区别        ldr     r0, _start        adr     r0, _start        ldr     r0, =_start        nop        mov     pc, lr_start:        nop        编译的时候设置 RO 为 0x0

2017-07-28 11:20:10 193

转载 make clean、 make mrproper、make distclean的区别

http://blog.csdn.net/sidely/article/details/40296745内核编译时, 到底用make clean, make mrproper还是make distclean在编译内核时, 被make clean, make mrproer 和 make distclean搞的纠结, 稍微总结一下这三者之间的区别:解压内核源码包后, 到内核源

2017-07-27 20:39:53 223

转载 GCC 中的编译器堆栈保护技术

https://www.ibm.com/developerworks/cn/linux/l-cn-gccstack/以堆栈溢出为代表的缓冲区溢出攻击已经成为一种普遍的安全漏洞和攻击手段。本文首先对编译器层面的堆栈保护技术作简要介绍,然后通过实例来展示 GCC 中堆栈保护的实现方式和效果。最后介绍一些 GCC 堆栈保护的缺陷和局限。4 评论何

2017-07-27 15:17:19 331

转载 动态替换Linux核心函数的原理和实现

https://www.ibm.com/developerworks/cn/linux/l-knldebug/index.html

2017-07-27 15:16:35 442

转载 《深入理解Linux内核》软中断/tasklet/工作队列

http://www.cnblogs.com/li-hao/archive/2012/01/12/2321084.html软中断、tasklet和工作队列并不是Linux内核中一直存在的机制,而是由更早版本的内核中的“下半部”(bottom half)演变而来。下半部的机制实际上包括五种,但2.6版本的内核中,下半部和任务队列的函数都消失了,只剩下了前三者。本文重点在于介绍这三

2017-07-27 15:15:49 230

转载 DMA描述符及映射

转http://blog.csdn.net/phunxm/article/details/94525751.DMA通道DMA(Direct Memory Access)通道建立在设备和RAM之间,DMAC(DMA Controler)与设备I/O控制器相互作用共同实现数据传送。在PC中,DMA控制器位于主板上负责管理I/O总线的南桥上。典型的PC架构的数据通道示意图如下:

2017-07-21 16:19:00 519

转载 对流式DMA和一致性DMA的认识

http://blog.sina.com.cn/s/blog_4ce016230101hxgd.html一致性DMAdma_alloc_coherent(dev, size, &dma_handle, gfp);流式DMAdma_map_single(dev, addr, size, direction);dma_unmap_single(dev,

2017-07-21 13:54:29 1009

转载 ARM的cache和写缓冲器(write buffer)

转载:http://blog.csdn.net/gameit/article/details/13169445一、cache简介        通常CPU与外部主存之间的访问速度差距很大,因为外部主存的低速率读写而降低了CPU的执行效率,所以引入了高速缓冲存储器cache,cache存储器是一种容量小,速度快的存储器。其实cache说到底就是一块速度非常快的内存。   

2017-07-20 14:16:00 514

转载 Linux设备驱动remap_pfn_range() 和remap_page_range()

转载:http://blog.csdn.net/dijkstar/article/details/51347408LDD3的开发环境推荐的是2.6.10,安装了RHEL4-update4,其内核版本为2.6.9.42,编译mmap的程序时报错:Unknown symbol remap_pfn_range在网上查了下,应将上述报错的函数改为remap_page_range,并且rem

2017-07-20 10:40:57 540

原创 变长数组在Linux USB当中的应用

偶然浏览Linux-USB的代码,发现了变长数据的妙用,zo

2014-10-10 09:58:11 926

原创 一种处理同一个I2C总线上,器件地址冲突的方法

最近做项目,

2014-10-10 09:56:27 7148

原创 Linux脚本初学记录(2)sed

通过使用&进行替换&:表示用正则表达式匹配到的nei

2014-06-17 16:48:24 618

原创 Linux脚本初学记录(1)

yixie$n           $1 表示第一个参数,$2 表示第二个参数 ...$#           命令行参数的个数$0           当前程序的名称$?           前一个命令或函数的返回码,返回0代表成功$*           以"参数1 参数2 ... " 形式保存所有参数$@           以"参数1" "参数2" ... 形式保存所有

2014-06-13 09:58:19 991

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

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

2012-06-29 23:02:22 1508

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

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

2012-06-29 23:01:44 710

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

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

2012-06-29 23:01:10 853

转载 闲聊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-06-29 23:00:34 835

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

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

2012-06-29 22:59:55 989

空空如也

空空如也

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

TA关注的人

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