![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Linux内核工具
weixin_38725917
这个作者很懒,什么都没留下…
展开
-
Linux内核工具——kthread_run
上节中,我们成功地编译运行了一个linux模块。可惜的是,它只有两个函数,hello_init在模块加载时调用,hello_exit 在模块卸载时调用。这样下去,模块纵使有天大的本事,也只能压缩在这两个函数中。为了避免这种悲剧发生,本节就来学习一种让模块在加载后能一直运行下去的方法——内核线程。 要创建一个内核线程有许多种方法,我们这里要学的是最简单的一种。打开include/lin...转载 2019-01-15 15:08:42 · 1263 阅读 · 0 评论 -
Linux内核工具——ERR_PTR、PTR_ERR、IS_ERR函数
判断返回指针是否错误的内联函数 linux内核中判断返回指针是否错误的内联函数主要有:ERR_PTR、PTR_ERR、IS_ERR和IS_ERR_OR_NULL等。 其源代码见include/linux/err.h#include <linux/compiler.h>#include <linux/types.h>#include <asm/err...转载 2019-01-15 15:15:02 · 509 阅读 · 0 评论 -
container of()函数简介
在linux 内核编程中,会经常见到一个宏函数container_of(ptr,type,member), 但是当你通过追踪源码时,像我们这样的一般人就会绝望了(这一堆都是什么呀? 函数还可以这样定义??? 怎么还有0呢??? 哎,算了,还是放弃吧。。。)。 这就是内核大佬们厉害的地方,随便两行代码就让我们怀疑人生,凡是都需要一个过程,慢慢来吧。 其实,原理很简单: 已知...转载 2019-01-16 11:51:50 · 119 阅读 · 0 评论 -
Linux内核定时器与延迟工作
内核定时器软件上的定时器最终要依靠硬件时钟来实现,简单的说,内核会在时钟中断发生后检测各个注册到内核的定时器是否到期,如果到期,就回调相应的注册函数,将其作为中断底半部来执行。实际上,时钟中断处理程序会触发TIMER_SOFTIRQ软中断,运行当前处理器上到期的所有定时器。设备驱动程序如要获得时间信息以及需要定时服务,都可以使用内核定时器。jiffies要说内核定时器,首先就得说说内...转载 2019-01-16 15:27:15 · 450 阅读 · 0 评论