kernel相关内容
我想阅读和理解 Linux 内核的内存管理(特别是碎片整理\压缩\迁移). 所以,我在 .config 中关闭了大小优化(当然使用 make menuconfig)并编译...这仍然给我一个优化的内核. 注意: 当我说优化的内核时,我的意思是当我使用 gdb 并告诉它 next 它会跳来跳去.我不想那样,我希望能够像处理简单的 hello world 一样逐行跟踪代码. 接下来,
..
我正在尝试在 Xen 中为我的机器 Intel(R) Xeon(R) CPU E5-1650 v2 @ 3.50GHz 禁用所有级别的缓存.我编写了一个工具来调用以下汇编代码来禁用/启用缓存并显示 CR0 寄存器的值. case XENMEM_disable_cache:__asm__ __volatile__("pushq %%rax\n\t""movq %%cr0,%%rax\n\t""or
..
我想从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
..
我从 LDD3 第 14 章中阅读了有关热插拔驱动程序的内容.我需要编写一个 USB 鼠标驱动程序,该驱动程序在我插入硬件时加载.现在,做一些实验,我知道有一个名为“hid-generic"的驱动程序,它在拔出插头时调用. [ 6654.232046] usb 3-1:使用 uhci_hcd 的新低速 USB 设备编号 3[6654.462061]usb 3-1:发现新的 USB 设备,idVe
..
linux内核如何将char[]转为int 验证输入的文本实际上是一个整数? int procfile_write(struct file *file, const char *buffer, unsigned long count,无效 *数据){字符 procfs_buffer[PROCFS_MAX_SIZE];/* 获取缓冲区大小 */无符号长 procfs_buffer_size
..
所以我正在尝试编写一个使用 linux/timer.h 文件的内核模块.我让它只在模块内部工作,现在我试图让它从用户程序中工作. 这是我的内核模块: //设备驱动程序的必要包含.#include #include #include #include #include #include #include #include #include #define DEVICE_NAME "mytim
..
我试图编写一个使用 Netlink 在内核和用户空间之间进行通信的简单程序.基本上这就是我想要实现的目标: 用户空间程序开始绑定到用户定义的多播组. 插入内核模块 内核模块向该组播组发送消息 用户空间程序收到消息 这是我的代码: ======用户空间程序====== #include#include#include#include#include#include#incl
..
我有一个 linux 内核驱动程序和一个与之交互的用户应用程序.内核驱动程序中存在死锁.我在 linux 内核中遇到了这个名为“lockdep"的功能.我能够配置它并重新编译我的内核(我确实在/proc 中看到了 lockdep 文件夹).但我不知道如何推断此工具的输出或如何使用此工具调试驱动程序.任何帮助将不胜感激.谢谢! 解决方案 要启用 lockdep 功能,请通过 menuconf
..
即使已经有类似的话题,我注意到它可以追溯到两年前,所以我想重新开一个更合适...... 我想弄清楚如何从 Linux 内核 (3.3.4) 发送 UDP 数据包,以监控随机数生成器 (/drivers/char/random.c) 的行为.到目前为止,由于 sock_create 和 sock_sendmsg 函数,我已经设法监控了一些事情.您可以在此消息的末尾找到我使用的典型代码段.(您可
..
我希望有人能解释 linux 内核源代码中使用的 __user 宏的细微差别. 首先是宏: #define __user __attribute__((noderef, address_space(1))) 现在,经过一番谷歌搜索后,我读到这个宏允许将指针指定为属于用户地址空间,并且不应取消引用. 我可能遗漏了一些明显的事实,但有人可以解释一下这样一个宏的含义吗?例如,这个宏在哪里
..
在 Linux 中,当需要从磁盘读取块时,进程的状态会发生什么变化?被屏蔽了吗?如果是,如何选择另一个进程执行? 解决方案 在等待 read() 或 write() 到/从文件描述符返回时,进程将进入一种特殊的睡眠状态,称为“D"或“磁盘睡眠".这是特殊的,因为在这种状态下无法杀死或中断进程.等待 ioctl() 返回的进程也会以这种方式进入睡眠状态. 一个例外是当一个文件(如终端或
..
在阅读这个 SO 问题后,我有一些疑问.请帮助理解. 调度涉及决定何时运行进程以及运行多长时间. linux 内核是调度线程还是进程?由于进程和线程在内核内部没有区别,调度程序如何处理它们? 每个线程的量是如何决定的?一个.如果为一个进程确定了一个时间量(比如 100us),是否在进程的所有线程之间共享?或者湾每个线程的量程是由调度程序决定的吗? 注意:问题 1 和问题 2
..
我们知道根目录是/,根据posix,还有一个不同于/的目录//.当你 ls/和 ls//时,输出是一样的,stat 也是一样,但是如果你 cd/和 cd//,它们是不同的,虽然目录内容是一样的.这真的让我很困惑.有人有答案吗? 解决方案 来自 Bash 常见问题: E10) 为什么 `cd//' 将 $PWD 保留为 `//'?POSIX.2,在它对 `cd' 的描述中,说 *3* 或更
..
我正在尝试使用 Linux 内核链表实现,但我无法编译.我完全按照这些来源没有结果(http://www.roman10.net/linux-kernel-programminglinked-list/ 和 http://kernelnewbies.org/FAQ/LinkedLists) LIST_HEAD_INIT 的 list.h 内核宏如下: #define LIST_HEAD_I
..
我正在学习如何使用来自 list.h. 我了解到在使用 list_del() 删除节点时需要使用 list_for_each_safe() 而不是使用 list_for_each(). list_for_each_safe() 的代码: #define list_for_each_safe(pos, n, head) \for (pos = (head)->next, n = pos
..
每当我启动 jupyter notebook 并创建一个新的 python 3 notebook 时,我都会收到一条错误消息,说内核已经死了.我已经尝试删除和安装 ipython、python3.6.5 和 jupyter notebook,但我仍然收到错误消息. 我的cmd屏幕如下:- [I 06:46:36.432 NotebookApp] KernelRestarter:重启内核(4
..
我尝试使用 conda 安装新的 Python 版本 (3.8). !wget -O mini.sh https://repo.anaconda.com/miniconda/Miniconda3-py38_4.8.2-Linux-x86_64.sh!chmod +x mini.sh!bash ./mini.sh -b -f -p/usr/local 这很好用.我可以调用 !python scr
..
我正在尝试将 math.h 包含在我的 Linux 内核模块中.如果我使用, #include '/usr/include/math.h' 它给了我这些错误: error: features.h: 没有那个文件或目录错误:bits/huge_val.h:没有那个文件或目录错误:bits/mathdef.h:没有那个文件或目录错误:bits/mathcalls.h:没有那个文件或目录 这是为
..
我正在尝试使用 pt_regs 结构来获取和设置诸如 eax 之类的寄存器,但是编译错误告诉我 pt_regs 没有这样的成员eax. 但是,我能够获得 ax 寄存器.谁能告诉我发生了什么? 我使用带有 3.0.0 内核的 32 位 Ubuntu linux.再次感谢. 解决方案 看看arch/x86/include/asm/ptrace.h. 注意#ifndef __K
..
当我加载这个模块时: #include #include #include MODULE_LICENSE("双BSD/GPL");静态 int hello_init(void) {printk(" Hello world!\n");返回0;}静态无效你好_退出(无效){printk("再见,残酷的世界\n");}模块初始化(hello_init);模块退出(你好退出); (来自 http://
..