linux-驱动基础
山羊哥-老宋
写bug
展开
-
编译内核是需要签名
模块签名在编译5.4内核是需要签名文件,查了好久,解决了,记录下:环境是:Redhat8.2kvm 虚拟机make menuconfig配置签名文件是这俩个CONFIG_MODULE_SIG_KEY="certs/signing_key.pem"CONFIG_SYSTEM_TRUSTED_KEYRING=yCONFIG_SYSTEM_TRUSTED_KEYS="certs/rhel.pem"make -j出现了make[2]: *** No rule to make target原创 2020-12-17 08:50:43 · 3275 阅读 · 0 评论 -
container_of()宏
container_of前言表达式中的语句typeof()零指针取消引用offsetof(st, m)放在一起前言看内核源码时经常遇到这个宏,现在解释一下这个,记录备查。第一张图说明了container_of(ptr, type, member)宏的原理#define container_of(ptr, type, member) ({ \ const typeof( ((type *)0)->member ) *__mptr = (原创 2020-12-09 14:13:31 · 232 阅读 · 0 评论 -
find-debuginfo说明
find-debuginfo最近在编译linux kernel 但是内核版本yijing/usr/lib/rpm/find-debuginfo.sh原创 2020-12-02 10:34:58 · 1714 阅读 · 0 评论 -
C程序的编译步骤和内存布局
如果您对嵌入式系统不熟悉,显然已经有人问过这个问题。程序的编译过程和内存布局分别是什么阶段。因此,在本教程中,我们将讨论C程序的编译步骤和内存布局。内存分布C程序的编译步骤和内存布局C的编译步骤预处理或预编译汇编组合链接C程序的内存布局文字或代码段数据段初始化数据段未初始化的数据段栈段堆段未映射或保留的细分ExampleC程序的编译步骤和内存布局C的编译步骤通常,编译C程序是一个多阶段的过程,并使用不同的“工具”。Preprocessing 预处理Compilation 汇编Assembly翻译 2020-11-19 21:28:31 · 545 阅读 · 0 评论 -
Kernel thread in linux
kthread进程线程线程管理线程类型用户态线程内核态线程内核线程管理函数Create Kernel Thread 创建内核线程kthread_create进程程序的执行实例称为进程。有些操作系统使用术语“任务”来指正在执行的程序。过程是一个重量级的过程。流程之间的上下文切换非常耗时。线程线程是一个独立的控制流,它与进程中的其他独立控制流在同一地址空间内运行。一个进程可以有多个线程,每个线程并发执行不同的代码,同时共享数据和同步比协作进程要容易得多。线程比进程需要更少的系统资源,并且可以更快地启翻译 2020-11-19 20:38:14 · 899 阅读 · 0 评论 -
Completion in linux
Completion先决条件CompletionCompletion in Linux Device Driver初始化completion静态方法动态方法重新初始化完成等待完成wait_for_completionwait_for_completion_timeoutwait_for_completion_interruptiblewait_for_completion_killablewait_for_completion_killable_timeouttry_wait_for_completion唤翻译 2020-11-18 18:53:42 · 262 阅读 · 0 评论 -
Waitqueue in Linux
本文是Linux设备驱动程序系列的续篇,并对字符驱动程序及其实现进行了讨论。这是Linux设备驱动程序教程的第10部分。现在,我们将讨论Linux中的Waitqueue。Waitqueue in LinuxLinux中的等待队列介绍初始化等待队列静态方法动态方法排队wait_eventwait_event_timeoutwait_event_cmdwait_event_interruptiblewait_event_interruptible_timeoutwait_event_killable唤醒等待的翻译 2020-11-17 18:51:31 · 481 阅读 · 0 评论