随笔分类 - linux kernel
linux 内核软件
摘要:上一篇:命令行参数获取 https://www.cnblogs.com/zhangzhiwei122/p/16060542.html start_kernel 中解析参数的几个入口 870 行 early 阶段参数解析 - setup_arch -> parse_early_params 871 行
阅读全文
摘要:调用顺序 setup_arch(&command_line)->setup_machine_fdt(__fdt_pointer); 需要注意的是*command_line 是指向到 boot_command_line;而boot_command_line是一个静态数组,在 init/main.c 里
阅读全文
摘要:调用顺序 arch/arm64/kernel/setup.c setup_arch -> setup_machine_fdt setup_machine_fdt 171static void __init setup_machine_fdt(phys_addr_t dt_phys) 172{ 173
阅读全文
摘要:1、初始化 arch/arm64/kernel/setup.c( setup_arch )-> arch/arm64/mm/ioremap.c( early_ioremap_init ) -> mm/early_ioremap.c ( early_ioremap_setup ) early_iore
阅读全文
摘要:arch/arm64/include/asm/fixmap.h 中的定义 enum fixed_addresses 地址类型枚举,在 101 行的函数 __set_fixmap(idx, phys) 第一个参数用到。 将一个物理地址,映射到 idx 代表的 VA 地址上面。 25/* 26 * He
阅读全文
摘要:1、线性空间下移 4.X 内核中 线性映射区域 位于 内核地址空间的高位处。介绍文章举例: https://blog.csdn.net/u012142460/article/details/105867221/ 线性映射区域下移 2019年8月的一个commit,将线性映射区域 下移了。 commi
阅读全文
摘要:1、cpu_number 是一个 percpu 类型的 int 变量, arch/arm64/include/asm/smp.h。 34 行,声明 percpu 变量 cpu_number . 在 arch/arm64/kernel/smp.c 中定义。 2、raw_smp_processor_id
阅读全文
摘要:include/linux/percpu-defs.h 1、 SHIFT_PERCPU_PTR 230 ~ 231 定义了 SHIFT_PERCPU_PTR ,输入 __p 和 __offset ,直接使用 RELOC_HIDE 对两者进行相加。 RELOC_HIDE 见 https://www.c
阅读全文
摘要:38 行定义 unsigned long 类型的 __ptr 39 行,将 输入 ptr 的值 放到 __ptr 里面。 40 行,__ptr 里面的值和 offset 的值相加。 但是返回的类型还是 ptr 的类型。 背景: 假设有对象类型 struct people { int age; int
阅读全文
摘要:linux/arch/arm64/kernel/setup.c 85void __init smp_setup_processor_id(void) 86{ 87 u64 mpidr = read_cpuid_mpidr() & MPIDR_HWID_BITMASK; 88 set_cpu_logi
阅读全文
摘要:thread_info * task_thread_info(tsk) 由task 结构体得到 thread_info 结构体的指针。 linux/include/linux/sched.h 由 这儿可以知道,两种情况, 1729 ~ 1732 、thread_info 对象在 task 结构体内部
阅读全文
摘要:图片来自:https://blog.csdn.net/longwang155069/article/details/104346778 threadinfo不在task中-没有配置 CONFIG_THREAD_INFO_IN_TASK current 的实现 那如何获取一个进程的task_struc
阅读全文
摘要:1、__entry_task为内核静态定义的percpu变量,在进程切换时,会将next进程的进程描述符保存到该变量中。 arch/arm64/kernel/process.c 497 498/* 499 * We store our current task in sp_el0, which is
阅读全文
摘要:版权声明:本文为CSDN博主「liuhangtiant」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.net/liuhangtiant/article/details/90456136 前言 本文介绍kernel_en
阅读全文
摘要:enable_mmu 输入 X0 SCTRL_EL1 的值,见 setup_cpu 的返回值。 X1 TTBT1_EL1 的值, 见 primary_switch 964 行设置 x1 以下内容来自 https://blog.csdn.net/lgjjeff/article/details/9337
阅读全文
摘要:cpu setup 正如其名,初始化 CPU 寄存器。 413 无效 TLB transition lookaside buffer 。这相当于是一块 页表的缓存。页表我们刚在 head.S 设置好,使能分页后,应该使用我们 内存中设置的,而不是 TLB 中的,所以 无效 TLB 。 416 ~ 4
阅读全文
摘要:注释写的很详细了。 映射一段 VA 地址。 输入参数: tbl table location - 使用调用前 设置的值 rtbl - 会覆盖为 rtbl = tbl + PAGE_SIZE, 所以调用前的值不关心。 vstart 虚拟地址的起始值 使用调用前 设置的值 vend 虚拟地址的结束值 使
阅读全文
摘要:上一篇: https://www.cnblogs.com/zhangzhiwei122/p/16030252.html 1 ~ 8 介绍了 顶层的makefile 中的内容。 里面大量用到了 $(build)=xx 的方式。 虽然 $(build)=xx 用法网络已经有很多介绍了。但是,如果不 加入
阅读全文
摘要:上一篇: https://www.cnblogs.com/zhangzhiwei122/p/16029589.html 背景说明 版本: 5.10.0 - 下面分析中 使用的行号,都是 参考 这个 版本的 Makefile 。 在线浏览: https://lxr.missinglinkelectro
阅读全文
摘要:上一篇:https://www.cnblogs.com/zhangzhiwei122/p/16029312.html 背景说明 版本: 5.10.0 - 下面分析中 使用的行号,都是 参考 这个 版本的 Makefile 。 在线浏览: https://lxr.missinglinkelectron
阅读全文