linux-kernel相关内容

SPL(二级程序加载器)有什么用

我对这三个问题的概念感到困惑 为什么我们需要辅助程序加载器? 它在哪个内存中被加载和重定位? 系统内存和RAM有什么区别? 据我通过阅读链接了解是.. 当系统内部存储器无法完全容纳 uboot 时需要 SPL,因此我们需要使用称为 SPL 的最小代码片段来初始化内存.SPL 是真的重定位还是只有 uboot 自己重定位? 解决方案 让我解释一下 OMAP 平台为例( ..
发布时间:2022-01-11 23:45:27 其他开发

内存映射 IO - 它是如何完成的?

我已经了解了端口映射 IO 和内存映射 IO 之间的区别,但我无法弄清楚在现代操作系统(windows 或 linux)中如何实现内存映射 Io 我所知道的是,物理内存的一部分被保留用于与硬件通信,并且有一个 MMIO 单元参与处理总线通信和其他与内存相关的事情 驱动程序如何与底层硬件通信?驱动程序会使用哪些功能?与视频卡通信的地址是固定的,还是在使用它们之前有某种“协议"? 我 ..
发布时间:2022-01-11 23:45:17 其他开发

在 Linux 3.x 上挂钩 sys_execve()

我正在尝试通过修改系统调用表来挂钩 Linux 3.x 内核上的 sys_execve() 函数.问题是 sys_execve() 只有在执行不成功时才应该返回错误代码.使用我正在使用的包装函数(见下文),当 sys_execve() 在有效的可执行文件上被调用时,它执行得很好并且一切正常.但是,当在不存在的文件或其他导致错误情况的文件上调用它时,调用程序将崩溃: 3b ip 000000000 ..
发布时间:2022-01-11 23:36:29 其他开发

在linux上从一开始就设置进程的cpu亲和力

我想在linux上设置一个进程启动时的cpu亲和力. 有sched_setaffinity、taskset等方法,但需要进程的processid.它们可能会导致潜在的迁移,就像在一个核心上启动了一个进程,但在使用 sched_setaffinity/taskset 之后,它们被迁移到了另一个核心. 我想做的是从头开始在特定核心上启动一个新进程. 解决方案 taskset既可以用 ..
发布时间:2022-01-11 23:29:46 服务器开发

为什么在中断处理程序中使用自旋锁

我想知道为什么在中断处理程序中使用自旋锁而不是信号量. 解决方案 信号量会导致任务在争用时休眠,这对于中断处理程序来说是不可接受的.基本上,对于这样一个简短而快速的任务(中断处理),信号量执行的工作是多余的.此外,自旋锁不能由多个任务持有. ..
发布时间:2022-01-11 23:27:38 其他开发

Linux 系统上的 niceness 和优先进程

我正在寻找一种通过命令行修改进程优先级的方法.我发现内置 (bash) nice 和命令 renice 允许修改进程的好坏,但不是内核计算的实际优先级. 是否有允许设置优先级的命令?(或者我在友善和优先之间感到困惑?) 解决方案 linux中进程的优先级是动态的:运行时间越长,优先级越低.进程在实际使用 CPU 时运行 - 典型 Linux 机器上的大多数进程只是等待 I/O,因此不 ..
发布时间:2022-01-11 23:22:06 其他开发

Linux 是否将 x86 CPU 的 PCID 功能用于 TLB?如果不是,为什么?

我写了一个内核模块来检查 CR4.PCIDE,它没有设置.为什么 Linux 不使用这样的特性来减少由于 TLB 失效和缓存污染导致的性能下降? 解决方案 更新:由于 Meltdown 和 Spectre 攻击,这在 4.15 时间范围内发生了变化2017 年末和 2018 年初.有关详细信息,请参阅其他答案. 注意:我不是 Linux 开发人员 对于英特尔的“进程上下文标 ..
发布时间:2022-01-11 23:09:28 其他开发

Linux 中的分段:分段与分页是多余的吗?

我正在阅读“了解 Linux 内核".这是解释 Linux 如何使用我不理解的分段的片段. 细分已包含在 80 x86微处理器鼓励程序员将他们的应用到逻辑相关实体,例如子程序或全局和本地数据区域.然而,Linux 非常使用分段有限的方式.其实就是分割和分页有些多余,因为两者都可以用来分开的物理地址空间进程:分段可以分配一个每个不同的线性地址空间进程,而分页可以映射相同线性地址空间成不同的物理 ..
发布时间:2022-01-11 23:09:11 其他开发

编译到内核中的驱动程序的 init 函数调用

在 Linux 中,如果设备驱动程序被构建为可加载的内核模块,那么在插入设备驱动程序内核模块时,内核会调用 module_init() 宏所指出的设备驱动程序的 init 函数. 这对于静态编译到内核中的设备驱动程序如何工作?他们的init函数是怎么调用的? 解决方案 内置驱动的init例程仍然可以使用module_init()宏来声明那个入口点.或者,当驱动程序永远不会被编译为可加 ..

物理/逻辑/虚拟内存地址之间的区别

我对操作系统中的物理/逻辑/虚拟地址这些术语有些困惑(我使用 Linux-open SU​​SE) 这是我的理解: 物理地址-当处理器处于系统模式时,处理器使用的地址是物理地址. 逻辑地址-当处理器处于用户模式时,使用的地址是逻辑地址.这些无论如何都会通过添加带有偏移值的基址寄存器映射到某个物理地址.它在某种程度上提供了一种内存保护. 我曾经讨论过虚拟地址和逻辑地址/地址空 ..
发布时间:2022-01-11 22:49:02 其他开发

是否有用于检查 Linux 内核版本的宏定义?

我想知道是否有一个 gcc 宏可以告诉我 Linux 内核版本,以便我可以适当地设置变量类型.如果没有,我将如何定义自己的宏来执行此操作? 解决方案 linux/version.h 文件有一个名为 KERNEL_VERSION 的宏,可以让您检查版本您要针对当前安装的 linux 标头版本 (LINUX_VERSION_CODE).例如检查当前的 Linux 头文件是否适用于内核 v2.6 ..
发布时间:2022-01-11 19:22:20 服务器开发

定义宏时do while(0)有什么用?

可能的重复: C/C++ 宏中的 Do-While 和 if-else 语句 do { ... } while (0) — 它有什么用? 我正在阅读 linux 内核,发现很多这样的宏: #define INIT_LIST_HEAD(ptr) 做 { \(ptr)->下一个 = (ptr);(ptr)->prev = (ptr);\} 而 (0) 为什么他们使用它而不是简单地在 {} ..
发布时间:2022-01-11 19:15:13 其他开发

插入电源时如何使Android设备启动?

我需要将它用于三星平板电脑. 通常,如果设备已关闭并且正在连接 USB 数据线,则显示屏会唤醒几秒钟,显示动画电池.相反,我想让它启动. 我怀疑这与金属很接近.我必须在哪里进行修改?在内核中,在Android平台中,还是隐藏在厂商的一些专有代码中? 解决方案 XDA 上的一个成员发布了一个 解决方案 似乎适用于某些三星设备. 这个想法是用一个可以启动手机的自定义脚本替换电 ..
发布时间:2022-01-10 23:38:07 移动开发

Linux内核中浮点的使用

我正在阅读 Robert Love 的“Linux Kernel Development",我偶然发现了以下段落: 不(容易)使用浮点数 当用户空间进程使用浮点指令时,内核管理从整数模式到浮点模式的转换.内核在使用浮点指令时必须做什么因架构而异,但内核通常会捕获一个陷阱,然后启动从整数模式到浮点模式的转换. 与用户空间不同,内核没有对浮点的无缝支持,因为它不能轻易地陷入困境.在内 ..
发布时间:2022-01-09 10:11:33 服务器开发

MCP23017 I2C 设备驱动程序探测函数未被调用

我正在使用以下 I2C/GPIO 设备驱动程序 访问 MCP23017 GPIO.使用 insmod 命令,我可以加载驱动程序及其在/proc/modules 中列出的内容.我有两个 MCP23017 芯片连接到我的 Raspberry Pi.两者都在地址 0x20 和 0x21 处检测到.对驱动程序的 initcall 注册驱动程序.我通过打印一条消息来检查这一点.但是驱动程序探测函数没有被调用 ..

研究设备驱动源文件?

我想研究在 raspberry pi(raspian)、beaglebone(debian) 或我的笔记本电脑 (ubuntu) 上安装和加载的一些设备驱动程序的源文件. 我的目标是通过研究一些实际工作的驱动程序的源文件来学习如何正确实现我自己的模块. 我对与实际硬件(USB、I2C、SPI、UART 等)通信的驱动程序特别感兴趣. 谁能告诉我如何找到这些资源?它们是否在某个特定 ..

什么是“内核污染"?意思是?

我的操作系统是 Fedora 17.最近,出现内核污染警告“kernel bug at kernel/auditsc.c:1772!-abrt":不应报告此问题(这很可能是已知问题).发生内核问题,但您的内核已被污染 (flags:GD).内核维护人员无法诊断受污染的报告. 然后,我得到以下信息: # cat/proc/sys/kernel/tainted128# dmesg |grep ..
发布时间:2022-01-04 22:54:21 其他开发