linux-kernel 相关问题

此标记用于解决Linux内核本身的内部问题 - 特别是关于编写在内核上下文中运行的代码(如内核模块或驱动程序)。关于在Linux中编写用户空间代码的问题通常应该标记为[linux]。由于Linux内核的内部不断变化,因此包含您感兴趣的精确内核版本会很有帮助。

__init 函数中的局部静态标识符会发生什么?

在应用程序编程中,静态变量存储在.BSS段中。与局部变量不同,它们不会在函数返回或类似于全局变量的情况下被取消分配。 在 Linux 中...

回答 1 投票 0

发送数据包后,Linux wifi 驱动程序会发生什么(数据包的寿命)?

我正在开发一个低延迟应用程序,将 udp 数据包从主设备发送到从设备。主站充当接入点,将数据直接发送到从站。大多数情况下它运行良好,但有时......

回答 2 投票 0

如果我在内核中使用 vzalloc 分配内存但使用 kfree 释放内存会发生什么?

如果我使用 vzalloc 接口(kernel4.9)分配一块内存,但使用 kfree 释放它,内核中会发生什么?我可以释放这段记忆吗 我查看我的代码,看到这个麻烦,但我不知道会发生什么......

回答 1 投票 0

如果我在内核中使用 vzalloc 分配内存但使用 kfree 分配内存会发生什么情况

如果我使用 vzalloc 接口(kernel4.9)分配一块内存,但使用 kfree 释放它,内核中会发生什么?我可以释放这段记忆吗 我查看我的代码,看到这个麻烦,但我不知道会发生什么......

回答 1 投票 0

如何永久编辑coredump_filter文件并立即应用而无需重新启动?

有什么方法可以永久编辑 coredump_filter 文件并立即应用而无需重新启动。 暂时我可以这样做 回声 0x0 > /prod/self/coredump_filter 但这仅适用于当前会话。 ...

回答 1 投票 0

类和类设备的目的是什么?

我遵循了一些解释如何编写 Linux 内核模块的教程,但我有点困惑。即使阅读了官方“文档”后,我对这个概念的理解也很差......

回答 1 投票 0

RISC-V 中的地址指定

我正在 QEMU 中运行模拟的 RV64GC 内核,并试图更好地理解 RISC-V 中的虚拟内存子系统和地址转换过程。我的模拟系统使用 OpenSBI 运行,L...

回答 1 投票 0

Linux 系统中的线程分离

我所知道的是 detach() 使 main 函数不会等到所有线程完成。 #包括 #包括 #包括 使用命名空间...

回答 1 投票 0

收到信号后如何跳转到内核?

如果我使用Linux系统调用“signal”覆盖用户代码段中的信号处理程序,那么当进程接收到信号时,信号处理程序在用户模式下运行。之后...

回答 1 投票 0

Linux GPIO 驱动程序探测失败

我正在尝试编写一个小型内核模块,可以控制连接到 RaspberryPi 4 Model B 上的 GPIO 引脚的一些 LED。我的 Pi 运行的是 Raspbian GNU/Linux 11(牛眼)和 Linux 内核 v6.1...

回答 1 投票 0

Broadcom 的 PCI/PCIe 软件开发套件安装在 Linux 内核 5.3 上

这是关于 https://www.broadcom.com/products/pcie-switches-bridges/software-dev-kits 的 PLXsdk 我有一些 NVMe SSD 连接到 PCI,我正在尝试读取和写入 BAR 寄存器...

回答 2 投票 0

如何仅维护一小组非默认内核配置?

我希望能够仅维护一小部分内核配置,并使用其余配置的默认值。 举一个简单的例子:我想只维护配置值。像这样:

回答 2 投票 0

使用LD_PRELOAD拦截静态链接库的系统调用?

我有一个与第三方库静态链接的应用程序。第三方库进行系统调用(大概通过 glibc)。 我想通过编写“

回答 1 投票 0

有没有办法避免内核中clear_page_emrs()造成的开销?

我遵循了这个方法,发现clear_page_erms在火焰图中产生了大量的开销。 上网查了一下才知道这个功能的目的是

回答 1 投票 0

在 PHP 中处理 Linux 输入事件 (/dev/input/event*)

我正在尝试使用 php 在 GNU/Linux 上获取键盘事件,代码如下: 我正在尝试使用 php 在 GNU/Linux 上获取键盘事件,代码如下: <?php $fd = fopen("/dev/input/event0", "rb"); while (true) { $ev = fread($fd, 24); $event = unpack("Lsec/Lusec/Stype/Scode/Ivalue", $ev); var_dump($event); } fclose($fd); ?> 但结果与我在以下 C 程序中得到的事件不同: #include <stdio.h> #include <fcntl.h> #include <unistd.h> #include <linux/input.h> int main() { struct input_event ev; int fd = open("/dev/input/event0", O_RDONLY); while(1) { read(fd, &ev, sizeof(ev)); printf ("Event sec: %lu\n", ev.time.tv_sec); printf ("Event usec: %lu\n", ev.time.tv_usec); printf("Event type: %d\n", ev.type); printf("Event code: %d\n", ev.code); printf("Event value: %d\n", ev.value); printf("Event value: %s\n", "***************"); } close(fd); } 部分结果对比: C: Event sec: 1700377522 Event usec: 896483 Event type: 4 Event code: 4 Event value: 31 Event value: *************** Event sec: 1700377522 Event usec: 896483 Event type: 1 Event code: 31 Event value: 1 Event value: *************** Event sec: 1700377522 Event usec: 896483 Event type: 0 Event code: 0 Event value: 0 Event value: *************** PHP: array(5) { ["sec"]=> int(1700377522) ["usec"]=> int(0) ["type"]=> int(44515) ["code"]=> int(13) ["value"]=> int(0) } array(5) { ["sec"]=> int(1700377522) ["usec"]=> int(0) ["type"]=> int(44515) ["code"]=> int(13) ["value"]=> int(0) } array(5) { ["sec"]=> int(1700377522) ["usec"]=> int(0) ["type"]=> int(44515) ["code"]=> int(13) ["value"]=> int(0) } sec参数似乎解码正常,另一方面,其他参数,我猜测问题是由解包格式引起的:unpack("Lsec/Lusec/Stype/Scode/Ivalue", $ev);,但我根据/usr/include/linux/input.h:设置了所有内容 struct input_event { struct timeval time; = {long seconds, long microseconds} unsigned short type; unsigned short code; unsigned int value; }; 这有什么问题吗? 注: 我在“input.h”中看到一些填充字节: #if defined(__sparc__) && defined(__arch64__) unsigned int __usec; unsigned int __pad; #else 这可能是问题所在吗?我该如何解决它? 在 64 位 Linux 上,C 整数类型具有以下宽度: short:16 位 int:32 位 long:64 位 input_event结构体大小为 8 + 8 + 2 + 2 + 4 = 24 字节。 PHP pack()函数的文档说: L unsigned long(始终为 32 位,机器字节顺序) 这里存在不匹配:对于 long 字段,您读取的是 32 位而不是 64 位。你应该使用这个: q 有符号 long long(始终为 64 位,机器字节顺序) 所以正确的拆包是: $event = unpack("qsec/qusec/Stype/Scode/Lvalue", $ev);

回答 1 投票 0

在内核5.4中无法使用io_uring写入文件(总是返回EINVAL)

我正在尝试制作一个简单的程序,在 x86_64 平台上使用内核 5.4.0-150 和 Ubuntu Bionic (18.04) 写入文件。无论我做什么,cqe->res 总是失败并显示 EINVAL。我有...

回答 1 投票 0

Kubernetes动态配置CPU资源限制

Kubernetes CPU 管理器提供了一种静态配置 CPU 资源限制的方法。然而,在某些情况下,这可能会导致集群资源的浪费,例如应用程序可能需要

回答 3 投票 0

重新启动期间 ftrace 进入串行控制台

我正在调试内核重新启动的最后阶段(就在ACPI:PM:准备进入系统睡眠状态S5之后),我想在那里看到痕迹。 我想为一个很少被调用的 fu 启用 ftrace...

回答 1 投票 0

linux 字符设备创建失败

我编写了一个演示设备驱动程序,如下所示: #包括 #包括 #包括 #包括 #包括 #包括...

回答 1 投票 0

卸载 python3 后 Ubuntu UI 丢失

我从 Ubuntu 18.04 机器中删除了 python3。一段时间后,我意识到我无法再登录访问我的桌面。我决定重新启动它,这就是它所显示的 重新启动后显示此...

回答 2 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.