摘要:
该宏定义在include/linux/moduleparam.h中 下面以驱动模块中的用例展开宏, 1.第一步展开 展开结果为 2.第二步展开,展开为三项 2.1 param_check_##type(name, &(value)); 展开结果为,又是一个宏定义 上面的宏再展开为一个内联函数,返回某 阅读全文
摘要:
参考:Linux内核同步机制之(二):Per-CPU变量 CPU私有变量(per-CPU变量) 动态PCPU变量 setup_per_cpu_areas()初始化per-cpu数据。 下面的三个变量在vmlinux.lds中定义 在init/main.c中定义如下变量 PERCPU_ENOUGH_R 阅读全文
摘要:
参考:arm-linux内存页表创建 arm的第一级页表条目数为4096个,对于4K页第二级目录条目个数为256个,一级二级条目都是每个条目4字节。 在linux下二级分页如下:虚拟地址——> PGD转换——> PTE转换——>物理地址。 arm-linux假装第一级目录只有2048个条目,但其实每 阅读全文
摘要:
重要的结构体 阅读全文
摘要:
使用脚本计算每个进程的内存消耗 Pss:物理内存 – 实际使用的内存 Rss:驻留内存 使用方法: #./getmem.sh 列举当前所有我们自己的app/service每个进程占据的内存容量 #./getmem.sh pid 列举某进程pid的进程占据内存容量 阅读全文
摘要:
1.函数调用关系 2.全局变量 在arch/arm/mm/mmu.c中定义以下全局变量 2.1 int cachepolicy 指定缓冲策略,可选值如下宏定义 2.2 struct cachepolicy cache_policies[] 2.3 struct mem_type mem_types[ 阅读全文
摘要:
内核中每种处理器架构抽象为一个proc_info_list结构体,在arch/arm/include/asm/procinfo.h中定义, proc_info_list结构体的实现与处理器架构相关,这里以arch/arm/mm/proc-v6.S为例, 1. cpu_val,cpu_mask 用于匹 阅读全文
摘要:
基于Linux2.6.30.4分析IRQ中断的处理流程。 1.中断入口 2.vector_irq vector_stub 宏展开即为vector_irq, 参考Linux异常体系之vector_stub宏解析。 3.__irq_user 3.1__user_entry 这里面用到pt_regs结构保 阅读全文
摘要:
SMP处理器中要用到cpu位图,用来维护系统内CPU的状态信息,具有代表性的有: cpu_possible_map、cpu_online_map、cpu_present_map。 DECLARE_BITMAP宏定义如下 所以上面定义了三个unsigned long数组,数组大小有BITS_TO_LO 阅读全文
摘要:
内核中定义了以下全局变量保存启动参数相关的字符串, in init/main.c in arch/arm/kernel/setup.c 通过下面的调用关系,default_command_line保存启动参数,由parse_cmdline函数处理后。 1.__early_param(name,fn) 阅读全文