随笔分类 -  linux kernel

摘要:答: 新的device_property_match_string()可以用来替代此接口。 阅读全文
posted @ 2020-12-02 10:12 Jello 阅读(288) 评论(0) 推荐(0) 编辑
摘要:答: 安装必要的库即可,示例如下: $ sudo apt install -y libfile-find-rule-perl-perl 阅读全文
posted @ 2020-12-01 16:35 Jello 阅读(2596) 评论(0) 推荐(1) 编辑
摘要:1. printk + /proc/sys/kernel/printk printk(KERN_DEBUG "I have a dream\n"); + 2. cat /proc/ksyms (内核符号表) 3. gdb gdb vmlinux /proc/kcore (适用于检查符号表) 4. k 阅读全文
posted @ 2020-01-16 12:04 Jello 阅读(593) 评论(0) 推荐(0) 编辑
摘要:1. 查看/sys/kernel/debug/clk下的各个文件,从中可以得到各个时钟源的频率 阅读全文
posted @ 2020-01-16 11:49 Jello 阅读(606) 评论(0) 推荐(0) 编辑
摘要:1. pm_runtime_enable/pm_runtime_disable 使能/禁止runtime PM,分别对dev->power.disable_depth执行++和--操作,这个变量的初始化值是1,默认是disable的状态。 2. pm_runtime_get_sync/pm_runt 阅读全文
posted @ 2019-10-25 18:14 Jello 阅读(708) 评论(0) 推荐(0) 编辑
摘要:1. 原因 ramdisk大小不够 2. 解决方法 在启动变量bootargs中添加参数"ramdisk_size=10000000"即可 阅读全文
posted @ 2019-09-27 16:38 Jello 阅读(2851) 评论(0) 推荐(0) 编辑
摘要:1. 通过error -6得到: #define ENXIO 6 /* No such device or address */ 2. 解决办法 使能CONFIG_BLK_DEV_RAM选项: CONFIG_BLK_DEV_RAM=y 同时请注意以下选项: CONFIG_BLK_DEV_RAM_CO 阅读全文
posted @ 2019-09-27 16:14 Jello 阅读(3551) 评论(0) 推荐(0) 编辑
摘要:1. 0号进程即为idle进程或swapper进程,也就是空闲进程 2. 0号进程特点 idle是一个进程,其pid为0。 主处理器上的idle由原始进程(pid=0)演变而来。从处理器上的idle由init进程fork得到,但是它们的pid都为0。 Idle进程为最低优先级,且不参与调度,只是在运 阅读全文
posted @ 2019-09-20 16:32 Jello 阅读(1052) 评论(0) 推荐(0) 编辑
摘要:1. 请看rest_init的完整代码(不看也没关系,内核版本为5.2, init/main.c) 2. 从以上代码中可以看到调用了两次kernel_thread, 那么哪个是1号进程? 第一处pid = kernel_thread(kernel_init, NULL, CLONE_FS);即会创建 阅读全文
posted @ 2019-09-20 15:53 Jello 阅读(648) 评论(0) 推荐(0) 编辑
摘要:答: linux内核源码drivers/mfd/syscon.c中的of_syscon_register()接口对regmap_config进行初始化 注: linux内核源码版本为5.1.0 阅读全文
posted @ 2019-09-12 17:05 Jello 阅读(1256) 评论(0) 推荐(0) 编辑
摘要:1. 有两种方式 1.1 直接从uefi shell启动linux内核 1.2 从uefi shell启动grub,然后再从grub启动linux内核 2. 需要哪些东西? 2.1 linux内核 2.2 initrd镜像 2.3 .nsh后缀名的启动脚本(可选,可通过手动键入命令) 某个.nsh的 阅读全文
posted @ 2019-09-06 15:22 Jello 阅读(8881) 评论(0) 推荐(1) 编辑
摘要:答: LGTM就是Looks Good To Me(已经review了,可以合并)的意思 阅读全文
posted @ 2019-08-29 15:02 Jello 阅读(9008) 评论(0) 推荐(1) 编辑
摘要:答: rootwait是无限期等待,而rootdelay可以指定等待的时间,更加灵活。 阅读全文
posted @ 2019-08-16 21:24 Jello 阅读(1726) 评论(0) 推荐(0) 编辑
摘要:1. 内核版本 5.2.0 2. 请看devm_regmap_init_i2c (include/linux/regmap.h) 3. 看看__regmap_lockdep_wrapper 4. KBUILD_BASENAME的定义在哪里? 在编译时由编译选项-D提供,如此处为: -DKBUILD_ 阅读全文
posted @ 2019-08-14 15:16 Jello 阅读(2419) 评论(0) 推荐(0) 编辑
摘要:1. 定义如下: (include/linux/kernel.h) #define IS_ALIGNED(x, a) (((x) & ((typeof(x))(a) - 1)) == 0) 2. 实例拆解 IS_ALIGNED(reg, map->reg_stride) -> (((reg) & ( 阅读全文
posted @ 2019-08-14 10:17 Jello 阅读(802) 评论(0) 推荐(0) 编辑
摘要:1. 硬件架构 arm64 2. 内核版本 4.19 3. 分析相关函数 setup_arch() -> psci_dt_init() -> psci_0_2_init() -> get_set_conduit_method() -> of_property_read_string(np, "met 阅读全文
posted @ 2019-08-12 15:30 Jello 阅读(2582) 评论(0) 推荐(0) 编辑
摘要:1. 内核版本 4.19 2. 在arch/arm/kernel/sleep.S中实现如下: 阅读全文
posted @ 2019-08-09 18:19 Jello 阅读(645) 评论(0) 推荐(0) 编辑
摘要:答: 执行以下命令: # dmesg|grep -i acpi |grep -i supports (S3表示支持深度睡眠) ACPI: (supports S0 S1 S3 S4 S5) 阅读全文
posted @ 2019-08-09 17:32 Jello 阅读(479) 评论(0) 推荐(0) 编辑
摘要:1. #if IS_ENABLED(CONFIG_XXX) 1.1 IS_ENABLED的定义如下: /* * IS_ENABLED(CONFIG_FOO) evaluates to 1 if CONFIG_FOO is set to 'y' or 'm', * 0 otherwise. */ #d 阅读全文
posted @ 2019-08-09 12:12 Jello 阅读(3113) 评论(0) 推荐(0) 编辑