随笔分类 - linux kernel
摘要:答: 新的device_property_match_string()可以用来替代此接口。
阅读全文
摘要:答: 安装必要的库即可,示例如下: $ sudo apt install -y libfile-find-rule-perl-perl
阅读全文
摘要: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
阅读全文
摘要:1. 查看/sys/kernel/debug/clk下的各个文件,从中可以得到各个时钟源的频率
阅读全文
摘要:1. pm_runtime_enable/pm_runtime_disable 使能/禁止runtime PM,分别对dev->power.disable_depth执行++和--操作,这个变量的初始化值是1,默认是disable的状态。 2. pm_runtime_get_sync/pm_runt
阅读全文
摘要:1. 原因 ramdisk大小不够 2. 解决方法 在启动变量bootargs中添加参数"ramdisk_size=10000000"即可
阅读全文
摘要: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
阅读全文
摘要:1. 0号进程即为idle进程或swapper进程,也就是空闲进程 2. 0号进程特点 idle是一个进程,其pid为0。 主处理器上的idle由原始进程(pid=0)演变而来。从处理器上的idle由init进程fork得到,但是它们的pid都为0。 Idle进程为最低优先级,且不参与调度,只是在运
阅读全文
摘要:1. 请看rest_init的完整代码(不看也没关系,内核版本为5.2, init/main.c) 2. 从以上代码中可以看到调用了两次kernel_thread, 那么哪个是1号进程? 第一处pid = kernel_thread(kernel_init, NULL, CLONE_FS);即会创建
阅读全文
摘要:答: linux内核源码drivers/mfd/syscon.c中的of_syscon_register()接口对regmap_config进行初始化 注: linux内核源码版本为5.1.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的
阅读全文
摘要:答: LGTM就是Looks Good To Me(已经review了,可以合并)的意思
阅读全文
摘要:答:会使用request_irq中指定的触发方式
阅读全文
摘要:答: rootwait是无限期等待,而rootdelay可以指定等待的时间,更加灵活。
阅读全文
摘要:1. 内核版本 5.2.0 2. 请看devm_regmap_init_i2c (include/linux/regmap.h) 3. 看看__regmap_lockdep_wrapper 4. KBUILD_BASENAME的定义在哪里? 在编译时由编译选项-D提供,如此处为: -DKBUILD_
阅读全文
摘要:1. 定义如下: (include/linux/kernel.h) #define IS_ALIGNED(x, a) (((x) & ((typeof(x))(a) - 1)) == 0) 2. 实例拆解 IS_ALIGNED(reg, map->reg_stride) -> (((reg) & (
阅读全文
摘要: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
阅读全文
摘要:1. 内核版本 4.19 2. 在arch/arm/kernel/sleep.S中实现如下:
阅读全文
摘要:答: 执行以下命令: # dmesg|grep -i acpi |grep -i supports (S3表示支持深度睡眠) ACPI: (supports S0 S1 S3 S4 S5)
阅读全文
摘要: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
阅读全文