Linux内核深入浅出
文章平均质量分 94
记录关于Linux内核的学习,不是系统化的,而是分散积累形式
晨少爱学习
不定时分享个人所学,以及自学过程中的总结笔记,欢迎志同道合的朋友们一起讨论学习(csdbili)
展开
-
mmap底层驱动实现(remap_pfn_range函数)
PS:注意到读写进程的pfn_start相同,这个值是映射的物理内存地址,vm->vm_pgoff 是偏移(单位页,一页=4K(4096))在驱动代码中,打印出 buff 的地址,可以看到内核中(驱动代码中)申请的 buff 空间存在于进程虚拟地址空间中的内核空间部分。表示的是 vm->vm_flags,"rw"表示可读可写,"s"表示 share共享,"p"表示 private 私有。以上图中的写进程为例,画出进程虚拟地址空间中内存映射部分,和物理内存被映射的部分。当读和写的进程内存映射地址的。原创 2023-10-07 10:04:36 · 1254 阅读 · 0 评论 -
添加驱动模块到内核的两种方法
如果要编译进内核中, CONFIG_MYKEY 选项选择为 Y ,然后执行 make zImage,会发现生成的zImage镜像大小增加了一些,但是不会在 drivers/char/mykey/ 下生成 key.ko ,不过会生成 key.o。如果只有一两个源文件,则可以选择不新建文件夹,直接将 mykey.c 放入到 drivers/char/ 目录下,在 drivers/char/ 目录下的 Makefile 中添加如下指令即可。在 drivers/char/ 下的 Makefile 中添加一行。原创 2023-10-05 10:08:30 · 1488 阅读 · 0 评论 -
module_init 底层实现原理
【内核中__init 和module_init宏的作用】例如,如果initcall_levels被设置为2,则在系统启动的第三个阶段(即设备驱动初始化阶段)中原创 2023-09-13 11:36:45 · 1093 阅读 · 0 评论 -
一文说清mmap内存映射底层原理(以LCD中的Framebuffer为例)
前几天的一场面试中,面试官问:为什么可以通过mmap直接操作LCD?当时回答的不大好,刚学习的时候没有在意底层的逻辑,所以这几天对于mmap内存映射机制进行了较为深入的学习,这里分享出来一些个人的学习记录,如果有不恰当的地方还请各位帮忙指出。原创 2023-09-11 02:41:41 · 2084 阅读 · 1 评论