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线性
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
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,
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
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)
__asm__ __volatile__内嵌汇编用法简述 __asm__ __volatile__内嵌汇编用法简述 在阅读C/C++原码时经常会遇到内联汇编的情况,下面简要介绍下__asm__ __volatile__内嵌汇编用法。带有C/C++表达式的内联汇编格式为:__asm__ __volatile__("Instruction List" : Output : Input : Clobber/Modify);其中每项的概念
ARM嵌入式开发中的GCC内联汇编简介 http://blog.csdn.net/ce123_zhouwei/article/details/8209702ARM嵌入式开发中的GCC内联汇编简介在针对ARM体系结构的编程中,一般很难直接使用C语言产生操作协处理器的相关代码,因此使用汇编语言来实现就成为了唯一的选择。但如果完全通过汇编代码实现,又会过于复杂、难以调试。因此,c语言内嵌汇编的方式倒是一个不错的
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
Linux内存管理--基本概念 版权声明:本文为博主原创文章,未经博主允许不得转载。目录(?)[+]1. Linux物理内存三级架构 对于内存管理,Linux采用了与具体体系架构不相关的设计模型,实现了良好的可伸缩性。它主要由内存节点node、内存区域zone和物理页框page三级架构组成。 • 内存节点node 内存节点node是计算机系统中对物理内存的
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
cache 浅析 http://blog.chinaunix.net/uid-26817832-id-3244916.html1.CacheCache一词来源于法语,其原意是“藏匿处,隐秘的地方”,而自从被应用于计算机科学之后,就已经成为了英语中的一个计算机体系结构专有名词。Sun Microsystems的前首席科学家Billy Joy,作为BSD unix,csh,vi,NFS,java,TCP
计算机科学基础知识(一):The Memory Hierarchy http://www.wowotech.net/basic_subject/memory-hierarchy.html一、前言最近一个问题经常萦绕在我的脑海:一个学习电子工程的机械师如何称为优秀的程序员?(注:本文作者本科学习机械设计,研究生转到电子工程系学习,毕业后却选择了系统程序员这样的职业)。经过思考,我认为阻挡我称为一个优秀程序员的障碍是计算机科学的理论知识。自然辩证法
ARM MMU页表框架 http://blog.csdn.net/xiaojsj111/article/details/11065717ARM MMU页表框架先上一张arm mmu的页表结构的通用框图(以下的论述都由该图来逐渐展开):以上是arm的页表框图的典型结构:即是二级页表结构:其中第一级页表(L1)是由虚拟地址的高12bit(bits[31:20])组成,所以第一级
linux arm的存储分布那些事 http://blog.csdn.net/xiaojsj111/article/details/11724081linux arm 内存分布总览上图是linux的arm的虚拟地址分布总览,我们按从低地址到高地址的顺序逐个描述,每项的描述包括如下的内容的组和:地址范围大小,虚拟转物理的接口函数,各个区域对应的分配函数,该区域有什么作用,使用
内核地址空间的划分 整个内核地址空间的划分请参见下图:图中PAGE_OFFSET=0xc0000000,TEXT_OFFSET=0x00008000在arch/arm/makefile中指定,swapper_pg_dir=0x00004000在head.S中指定。 地址空间的第一段用于将系统的所有物理内存页映射到内核的虚拟地址空间中。由于内核地址空间从偏移量0xc000000
什么是write-allocate policy? 在有cache的单机系统中,通常有两种写策略:write through和write back。这两种写策略都是针对写命中(write hit)情况而言的:write through是既写cache也写main memory;write back是只写cache,并使用dirty标志位记录cache的修改,直到被修改的cache 块被替换时,才把修改的内容写回main memory。那么在写失效(
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
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
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
关于kmalloc、vmalloc及kmap http://blog.csdn.net/gxfan/article/details/27234551、 kmalloc()是内核中最常见的内存分配方式,它最终调用伙伴系统的__get_free_pages()函数分配,根据传递给这个函数的flags参数,决定这个函数的分配适合什么场合,如果标志是GFP_KERNEL则仅仅可以用于进程上下文中,如果标志GFP_ATOMIC则可以用于中断上