kernel相关内容

如何取消优化 Linux 内核并使用 -O0 对其进行编译?

我想阅读和理解 Linux 内核的内存管理(特别是碎片整理\压缩\迁移). 所以,我在 .config 中关闭了大小优化(当然使用 make menuconfig)并编译...这仍然给我一个优化的内核. 注意: 当我说优化的内核时,我的意思是当我使用 gdb 并告诉它 next 它会跳来跳去.我不想那样,我希望能够像处理简单的 hello world 一样逐行跟踪代码. 接下来, ..
发布时间:2022-01-04 22:17:10 服务器开发

从 vmlinuz 或 bzImage 中提取 vmlinux

我想从vmlinuz生成System.map,因为大多数机器没有System.map文件.实际上vmlinuz被压缩成vmlinuz或bzImage. 有什么工具或脚本可以做到这一点吗? 我试过了: dd if=/boot/vmlinuz skip=`grep -a -b -o -m 1 -e $'\x1f\x8b\x08\x00'/boot/vmlinuz |cut -d: -f ..
发布时间:2022-01-04 22:14:58 其他开发

linux内核中usb鼠标使用了哪些驱动?

我从 LDD3 第 14 章中阅读了有关热插拔驱动程序的内容.我需要编写一个 USB 鼠标驱动程序,该驱动程序在我插入硬件时加载.现在,做一些实验,我知道有一个名为“hid-generic"的驱动程序,它在拔出插头时调用. [ 6654.232046] usb 3-1:使用 uhci_hcd 的新低速 USB 设备编号 3[6654.462061]usb 3-1:发现新的 USB 设备,idVe ..
发布时间:2022-01-04 22:14:49 服务器开发

在 C 中通过 Netlink 从内核到用户空间的多播

我试图编写一个使用 Netlink 在内核和用户空间之间进行通信的简单程序.基本上这就是我想要实现的目标: 用户空间程序开始绑定到用户定义的多播组. 插入内核模块 内核模块向该组播组发送消息 用户空间程序收到消息 这是我的代码: ======用户空间程序====== #include#include#include#include#include#include#incl ..
发布时间:2022-01-04 22:08:37 其他开发

如何使用linux内核中的lockdep特性进行死锁检测

我有一个 linux 内核驱动程序和一个与之交互的用户应用程序.内核驱动程序中存在死锁.我在 linux 内核中遇到了这个名为“lockdep"的功能.我能够配置它并重新编译我的内核(我确实在/proc 中看到了 lockdep 文件夹).但我不知道如何推断此工具的输出或如何使用此工具调试驱动程序.任何帮助将不胜感激.谢谢! 解决方案 要启用 lockdep 功能,请通过 menuconf ..
发布时间:2022-01-04 22:07:54 服务器开发

从 Linux 内核发送 UDP 数据包

即使已经有类似的话题,我注意到它可以追溯到两年前,所以我想重新开一个更合适...... 我想弄清楚如何从 Linux 内核 (3.3.4) 发送 UDP 数据包,以监控随机数生成器 (/drivers/char/random.c) 的行为.到目前为止,由于 sock_create 和 sock_sendmsg 函数,我已经设法监控了一些事情.您可以在此消息的末尾找到我使用的典型代码段.(您可 ..
发布时间:2022-01-04 22:04:54 服务器开发

linux __user 宏的含义是什么?

我希望有人能解释 linux 内核源代码中使用的 __user 宏的细微差别. 首先是宏: #define __user __attribute__((noderef, address_space(1))) 现在,经过一番谷歌搜索后,我读到这个宏允许将指针指定为属于用户地址空间,并且不应取消引用. 我可能遗漏了一些明显的事实,但有人可以解释一下这样一个宏的含义吗?例如,这个宏在哪里 ..
发布时间:2022-01-04 22:02:49 其他开发

Linux 进程状态

在 Linux 中,当需要从磁盘读取块时,进程的状态会发生什么变化?被屏蔽了吗?如果是,如何选择另一个进程执行? 解决方案 在等待 read() 或 write() 到/从文件描述符返回时,进程将进入一种特殊的睡眠状态,称为“D"或“磁盘睡眠".这是特殊的,因为在这种状态下无法杀死或中断进程.等待 ioctl() 返回的进程也会以这种方式进入睡眠状态. 一个例外是当一个文件(如终端或 ..
发布时间:2022-01-02 19:19:55 服务器开发

linux 是调度进程还是线程?

在阅读这个 SO 问题后,我有一些疑问.请帮助理解. 调度涉及决定何时运行进程以及运行多长时间. linux 内核是调度线程还是进程?由于进程和线程在内核内部没有区别,调度程序如何处理它们? 每个线程的量是如何决定的?一个.如果为一个进程确定了一个时间量(比如 100us),是否在进程的所有线程之间共享?或者湾每个线程的量程是由调度程序决定的吗? 注意:问题 1 和问题 2 ..
发布时间:2022-01-02 19:05:58 服务器开发

什么是路径//,它和/有什么不同

我们知道根目录是/,根据posix,还有一个不同于/的目录//.当你 ls/和 ls//时,输出是一样的,stat 也是一样,但是如果你 cd/和 cd//,它们是不同的,虽然目录内容是一样的.这真的让我很困惑.有人有答案吗? 解决方案 来自 Bash 常见问题: E10) 为什么 `cd//' 将 $PWD 保留为 `//'?POSIX.2,在它对 `cd' 的描述中,说 *3* 或更 ..
发布时间:2022-01-02 12:51:41 服务器开发

Linux 内核链表

我正在尝试使用 Linux 内核链表实现,但我无法编译.我完全按照这些来源没有结果(http://www.roman10.net/linux-kernel-programminglinked-list/ 和 http://kernelnewbies.org/FAQ/LinkedLists) LIST_HEAD_INIT 的 list.h 内核宏如下: #define LIST_HEAD_I ..
发布时间:2022-01-01 18:51:05 服务器开发

内核在 jupyter 笔记本中不断死亡

每当我启动 jupyter notebook 并创建一个新的 python 3 notebook 时,我都会收到一条错误消息,说内核已经死了.我已经尝试删除和安装 ipython、python3.6.5 和 jupyter notebook,但我仍然收到错误消息. 我的cmd屏幕如下:- [I 06:46:36.432 NotebookApp] KernelRestarter:重启内核(4 ..
发布时间:2022-01-01 00:03:30 Python

如何包含 math.h #include 在内核源文件上?

我正在尝试将 math.h 包含在我的 Linux 内核模块中.如果我使用, #include '/usr/include/math.h' 它给了我这些错误: error: features.h: 没有那个文件或目录错误:bits/huge_val.h:没有那个文件或目录错误:bits/mathdef.h:没有那个文件或目录错误:bits/mathcalls.h:没有那个文件或目录 这是为 ..
发布时间:2021-12-29 14:18:31 其他开发

pt_regs 结构中的 eax 在哪里?只有斧头存在

我正在尝试使用 pt_regs 结构来获取和设置诸如 eax 之类的寄存器,但是编译错误告诉我 pt_regs 没有这样的成员eax. 但是,我能够获得 ax 寄存器.谁能告诉我发生了什么? 我使用带有 3.0.0 内核的 32 位 Ubuntu linux.再次感谢. 解决方案 看看arch/x86/include/asm/ptrace.h. 注意#ifndef __K ..
发布时间:2021-12-29 14:16:45 服务器开发