linux-kernel相关内容

GRUB会切换到保护模式吗?

我想问的是,是GRUB在引导过程中将CPU切换到保护模式还是Linux内核做到了这一点.我还要问-内核本身(vmlinuz)是ELF还是纯二进制格式?谢谢. 解决方案 GRUB 确实将您置于保护模式. GRUB Multiboot规范(0.6.96版) 3.2节告诉您这一点 "CR0" 位31(PG)必须清除.必须设置位0(PE).其他位均未定义. CR0寄存器映射 ..
发布时间:2020-04-23 11:09:49 服务器开发

Linux进程内存方案

AFAIK有一个进程存储器的分区,用于存储与内核相关的数据,并将其标记为只读. 我找不到事实解释,为什么会发生这种情况,该区域的目的是什么,为什么要在每个进程存储空间中都包含它? 解决方案 就像用户模式的存储空间一样,内核需要自己的代码段(RX),数据段(R/RW)和堆栈帧.线程(RW). 我不会说它需要包含在进程内存空间中,而是说它是内核始终驻留的地方.与进程之间每次进行上下 ..
发布时间:2020-04-23 11:08:05 服务器开发

人力资源计时器精度研究案例

关于这个主题,我将更好地讨论HR计时器和实际精度问题. 我研究了很多有关它们的文档,并且我确信它们是解决Linux内核模块内部延迟执行问题的最佳,最可靠的解决方案,其CPU成本更低,计时精度更高(例如,某些时间紧迫的驱动程序也使用它们,例如 https://dev.openwrt.org/browser/trunk/target/linux/generic/files/drivers/pwm ..
发布时间:2020-04-23 11:07:45 服务器开发

在设备驱动程序中使用stdlib.h

我正在尝试编写设备驱动程序,并且需要在驱动程序中使用system()函数.要使用system(),我们需要包含,该文件似乎在驱动程序中起作用. 它说找不到这样的文件或目录. 设备驱动程序是否有stdlib.h的替代品?还是system()的替代品? 解决方案 stdlib.h是用户空间标头. 用户空间是在其中运行用户进程(即,除内核之外的所有事物)的那 ..

从性能获取PEBS数据线性地址

我现在正尝试使用perf来测量PEBS的L3_Miss(LLC错过). 这是命令:perf record -d -e cpu/event=0xd1,umask=0x20/ppu -c 1 test,当性能完成时,我使用perf script -F ip,sym,addr来检查结果. 根据的Nofollow noreferrer“> SDM. 3B表18-55. PEBS记录包含一个名为 ..
发布时间:2020-04-23 11:07:02 服务器开发

64位linux内核如何启动ELF的32位进程

通过查看 binfmt_elf.c 作为内核源代码,我无法弄清生成32位进程与64位进程时内核(64位)的不同之处. 有人可以向我解释我所缺少的吗? (此问题与我的另一个问题有关,即关于32位指令与64位指令在同一过程中使用(解决方案 如果使用 execveat 系统调用来启动新进程,则我们首先输入 fs/exec.c 插入到SYSCALL_DEFINEx(execveat ..)函 ..
发布时间:2020-04-23 11:06:25 服务器开发

Arm64 Linux页面表遍历

当前,我正在开发一些与研究相关的程序,我需要找到某些特定地址的pte.我的开发环境是Juno r1板(CPU分别是A53和A57),并且正在运行arm64 Linux内核. 我使用一些典型的页表遍历代码,如下所示: int find_physical_pte(void *addr) { pgd_t *pgd; pud_t *pud; pmd_t *pmd; ..
发布时间:2020-04-23 11:05:17 服务器开发

从内核模块中的串行端口读取

对于我的作业,我需要读取一些来自串行端口的字符串. 这必须在内核模块中完成,所以我不能使用stdio库. 我正在尝试这种方式: #include #include #include #include #define SERIAL_PORT "/dev/ttyACM0" vo ..
发布时间:2020-04-23 11:04:36 服务器开发

获取内核中当前正在运行的程序的绝对路径

为了检索正在运行的程序的文件权限,我需要在当前正在运行的程序上执行kstat.然后我需要加载ELF图像的绝对路径. 有可能吗? current->comm仅记录不带路径的程序名称. 或者还有其他方法可以做到吗? 解决方案 您可以readlink(2)带有/proc/self/exe的路径,在您的情况下,这将是指向ELF的链接.使用readlink(1)的元示例: $ re ..
发布时间:2020-04-23 11:03:37 服务器开发

我添加了MAX7320 i2c输出芯片.如何获得内核来为其加载驱动程序?

我已在ARM Linux板上的i2c总线0上添加了MAX7320 i2c扩展器芯片. 该芯片可以使用诸如/usr/sbin/i2cset -y 0 0x5d 0x02和/usr/sbin/i2cget -y 0 0x5d之类的命令从用户空间正常工作. 内核源文件中有一个drivers/gpio/gpio-max732x.c文件,该文件已编译到我正在运行的内核中. (我从源头上构建了它. ..
发布时间:2020-04-23 11:03:18 服务器开发

Linux-在内核代码中映射用户空间内存

我正在编写一段代码,该代码需要在SOC关闭之前存储位于特定物理地址中的10k内存. 我的问题是此物理地址不是内核空间的一部分,因此我必须创建一个临时内存映射,以便我可以访问此内存空间. 我尝试使用io-remap,但它(显然)不适用于非内核空间. 是否有用于执行此操作的API? 我应该使用kmap吗? 预先感谢 解决方案 找到了答案 关键是使用vmap函数为给 ..

链接到内核模块的预编译目标文件

我需要将一个预编译的目标文件链接到我的linux内核模块.如果我在makefile中有这样一行: obj-m := test.o test-objs := obj1.o obj2.o 正确构建了obj1.o所在的obj1.c源文件,而obj2.o是预编译的目标文件的obj1,但是尝试通过搜索obj2.c源文件来构建obj2.o.如何指定obj2.o是预编译的对象? 谢谢大家! ..
发布时间:2020-04-23 11:01:46 服务器开发

/usr/include/linux和linux内核源代码中的include文件夹有什么区别?

在刚安装的Ubuntu上,我在/usr/include/linux和/usr/src/kernel-version-headers/include/linux 中都找到了内核头文件 它们彼此相同吗? 解决方案 它们非常不同; /usr/include/linux标头是在编译系统的标准C库时使用的标头.它们归C库包装所有,并与标准C库同步更新.它们的存在是为了向内核提供 userland ..
发布时间:2020-04-23 10:59:38 服务器开发

ISR计划了tasklet之后,它究竟何时运行?

我写了我的ISR,我的tasklet立即运行了. 但是,我见过很多人说tasklet仅在引起CPU注意时才运行.这是一个非常通用的术语,称为 CPU注意事项,因此我对那些响应者表示敬意.我的意思是确切地说,cpu在哪一刻将注意力转移到tasklet的执行上,以及CPU的状态如何? 其次,如果假设我一直在遭受硬中断,那么tasklet何时有机会运行? Tasklet是否可能没有机会运行?内核如 ..

TCP ECN源代码

我在理解TCP的Linux源代码时遇到了问题(net/ipv4/tcp_input.c) 在include/net/tcp.h中,它已经定义了TCP_ECN_OK = 1,但实际上是什么意思 tp->ecn_flags & TCP_ECN_OK 此外,请在套接字,袜子,tcp_sock和sk_buff之间进行说明. 是否有任何参考资料可以解释得更详细或更清楚. 谢谢. ..
发布时间:2020-04-23 10:58:57 服务器开发