最新文章

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

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

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

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

【C/C++】为什么不都用memmove代替memcpy
memmove相比memcpy增加了内存重叠的判断,更加安全,效率只是差了那么一丢丢, 为什么经常看见memcpy, 很少看见memmove 呢 ?是不是因为memcpy语义上说明了两段内存是不重叠的所以有些场景使用memcpy 更合适 ?

单片机main()函数退出之后,程序会跑去哪里?
对于嵌入式系统而言,如果没有运行即时操作系统(RTOS),在程序开发中,主函数main()需要通过某种机制使其一直持续运行下去,没有终点。要退出main函数,具体需要执行什么操作取决于所使用的C语言编译器。