
copy_{to,from}_user()的思考
对于copy_{to,from}_user()接口的使用,我们应该都非常熟悉了。大多数Linux书籍都会介绍它的作用,毕竟它在内核空间和用户空间之间起着桥梁的作用。所有的数据交互都应该使用类似这种接口。因此,我们应该对它的作用非常清楚。然而,我也曾经有一些疑问:

Linux内核中container_of宏的详细解释
在之前的文章中,我们讨论了在移植和使用Linux内核的通用链表时,如何避免重复造轮子,并提供了完整的代码实现。今天,我们将深入分析内核是如何求解结构体成员变量的地址的,尤其是在计算结构体偏移时巧妙地使用了container_of宏定义。

valgrind基本功能介绍、基础使用方法说明
Valgrind由内核(Core)和基于内核的其他调试工具组成。内核是Valgrind的核心部分,类似于一个框架,它模拟了一个CPU环境,并为其他工具提供服务。其他工具可以看作是插件,利用内核提供的服务来完成各种特定的内存调试任务。

使用动态输出打印内核的DEBUG信息
printk()是许多嵌入式开发人员喜欢使用的一种调试方法。然而,使用printk()进行调试时,每次都需要重新编译内核,这非常不方便。为了解决这个问题,我们可以使用动态输出来方便地打印内核的调试信息,而无需重新编译内核。

【调试】sysRq键使用方法
SysRq键是一个非常特殊的键,只要内核没有完全崩溃,它就可以触发内核对其输入的响应。使用SysRq键的组合键,可以收集系统的各种运行信息,包括内存使用情况、CPU任务处理状况、进程的运行状态等。