![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
linux内核
wfs1874
代码的世界应该是快乐的。
展开
-
Linux 内核中获取时间分析基于do_gettimeofday()
Linux 内核中获取时间分析基于do_gettimeofday()内核代码能一直获取一个当前时间的表示,通过查看jifies的值。通常这个值只代表从最后一次启动以来的时间,这个事实对驱动来说无关,因为它的生命周期受限于系统的uptime。驱动可以使用jifies的当前值来计算事件之间的时间间隔(例如,在输入驱动中从单击中区分双击或者计算超时)。驱动不需要墙上时钟以月、天和小时来表达;这...原创 2018-11-08 15:43:31 · 2822 阅读 · 0 评论 -
【页高速缓存】address_space 操作函数分析
在 radix Tree 源码分析这篇文档中对radix tree 进行了基础性的分析。那么基于radix tree 的内核中的页高速缓存会有什么样的操作函数呢?页高速缓存的处理函数对页高速缓存操作的基本高级函数有查找,增加,和删除页。在以上函数的基础上还有另一个函数确保高速缓存包含指定页的最新版本。1. 查找页函数find_get_page()接收的参数为指向address_...原创 2019-06-10 10:56:32 · 507 阅读 · 0 评论 -
【页高速缓存】radix tree 源码解析
项目要在内核做和页高速缓存相类似缓存机制,在写内核代码之前必须先搞清楚页高速缓存源码是什么情况。 之前有一篇博客分析过了页高速缓存的基础,但是远远没有达到动手写代码的基础。这几天端午节假期集中精力,搞懂整个框架 与 在内核中的应用。其他类别的博客也不会停止更新。谨以此祭奠逝去的时间。前言基于内核版本 4.4.4Linux 基数树(radix tree)是将指针与l...原创 2019-06-06 20:25:19 · 619 阅读 · 2 评论 -
深入理解Linux内核 RCU 机制
内核源码中有很多rcu的标志,到底什么是RCU,一直都不清楚。RCU(Read-Copy Update),是 Linux 中比较重要的一种同步机制。顾名思义就是 “读 , 拷贝更新”,再直白点是“随意读,但更新数据的时候,需要先复制一份副本,在副本上完成修改,再一次性地替换旧数据”。这是linux内核实现的一种针对“读多写少”的共享数据的同步机制。不同于其他的同步机制,它允许多个读...转载 2019-06-06 11:35:59 · 1096 阅读 · 1 评论 -
【进程ID】Linux内核进程管理深入分析之进程ID
参考: https://www.cnblogs.com/hazir/p/linux_kernel_pid.htmltime : 2019.5.7Linux 内核使用task_struct数据结构来关联所有与进程相关的数据和结构,Linux内核所有涉及到进程和程序的所有算法都是围绕该数据结构建立的,是内核中最重要的数据结构之一。该数据结构在内核文件include/linux/sched.h中...转载 2019-05-08 19:52:50 · 979 阅读 · 4 评论 -
linux 内核编译
编译内核源码:uname -r 查看本机的内核版本:下载:下载相应级别的Linux内核源代码压缩包:https://www.kernel.org/pub/linux/kernel这里我下载的是 4.4.4版本解压:Linux内核源代码压缩包先拷贝至 /user/src 目录再解压他人cp linux-4.4.4.tar.gz /usr/src // 拷贝tar -zx...原创 2019-03-11 15:06:31 · 268 阅读 · 0 评论 -
细说jbd(journal-block-device)& 源码分析
ext4 用的日志文件系统变成了 jbd2,本次分析以ext3为主,分析jbd文件系统。jbd 要解决什么问题或者说ext2的缺点在哪里,因为ext3与ext2的主要差别就在于ext3在ext2的基础上增加了日志功能。假设你正在运行一个Linux系统,运行一个程序,在一个ext2分区上不断地读写磁盘文件。突然断电了,或者系统崩溃了,你的心里肯定会咯噔一下:“磁盘分区没坏吧?文件还完整么?”...原创 2019-01-21 11:40:52 · 8814 阅读 · 0 评论 -
(内核模块)内核中文件的读写 (linux c语言)
一般有两种方式:系统调用用flip->open()等函数。利用系统调用:sys_open,sys_write,sys_read等。其实分析过sys_open可以知道,最后调用的也是filp->open。sys_open ==> do_sys_open ==> filp->open在linuxsir上的一个帖子,上面一个版主说:s...原创 2018-12-17 21:43:28 · 2387 阅读 · 0 评论 -
linux内核中的IS_ERR()、PTR_ERR()、ERR_PTR()
linux内核中的IS_ERR()、PTR_ERR()、ERR_PTR()IS_ERR宏定义在include/linux/err.h,如下所示: #define MAX_ERRNO 4095 //判断x是不是在(0xfffff000,0xffffffff)之间,注意这里用unlikely()的用意 #define IS_ERR_VALUE(x) unlikely(...转载 2018-12-15 20:47:46 · 503 阅读 · 0 评论 -
Kernel编译出现error, forbidden warning
这是在编译的过程中,由于代码不符合规范所致,比如类型转换时未强制转化,或者定义了某些变量或者函数却没有使用,这些都会出现警告,而警告将会被看做错误来处理。修改自己的代码,将出现的警告全部解决掉,该强制转换的强制转换,该删除定义了未使用的变量函数删除或者注释掉。修改scripts/gcc-wrapper.py 将interpret_warning(line)注释掉,这样它就不会将警告...原创 2018-11-12 15:11:00 · 903 阅读 · 0 评论 -
【Linux RCU机制详解】(2)
之前的一篇文章https://blog.csdn.net/qq_22613757/article/details/91041518 之后对RCU机制还是略有生疏。RCU(Read-Copy Update)是数据同步的一种方式,在当前的linux内核中发挥着重要的作用。RCU主要针对的数据对象是链表,目的是提高遍历读取数据的效率,为了达到目的使用RCU机制读取数据的时候不对链表进行耗时的加...转载 2019-06-17 22:12:29 · 198 阅读 · 0 评论