问题标签 [linux-kernel]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
10 回答
175419 浏览

linux - Linux 内核中可能/不太可能的宏是如何工作的,它们有什么好处?

我一直在研究 Linux 内核的某些部分,发现了这样的调用:

或者

我找到了它们的定义:

我知道它们是为了优化,但它们是如何工作的?使用它们可以减少多少性能/尺寸?至少在瓶颈代码中(当然是在用户空间中)是否值得麻烦(并且可能失去可移植性)。

0 投票
8 回答
115006 浏览

c - vmalloc 和 kmalloc 有什么区别?

我四处搜索,发现大多数人都提倡使用kmalloc,因为您可以保证获得连续的物理内存块。但是,如果找不到您想要kmalloc的连续物理块,似乎也会失败。
拥有连续的内存块有什么好处?具体来说,为什么我需要在系统调用中有一个连续的物理内存块?有什么理由我不能使用吗? 最后,如果我要在处理系统调用期间分配内存,我应该指定吗?系统调用是否在原子上下文中执行?vmalloc
GFP_ATOMIC

GFP_ATOMIC
分配是高优先级的,不休眠。这是在中断处理程序、下半部分和其他无法睡眠的情况下使用的标志。

GFP_KERNEL 这是正常分配,可能会阻塞。这是在可以安全睡眠时在进程上下文代码中使用的标志。

0 投票
6 回答
48415 浏览

file-io - Linux 内核模块中的文件 I/O

我正在编写一个需要打开和读取文件的 Linux 内核模块。实现这一目标的最佳方法是什么?

0 投票
2 回答
471 浏览

c - 虚拟区域到页面

在 Linux 内核中,给定task_structsmm我可以访问进程的vm_area_structs 列表。给定这些vm_area_structs,我如何获得struct page实际对应于这个 vma 的 s?

我尝试在 mm/memory.c 等中寻找函数,但不知所措。

编辑:想法是找出 vma 中的哪些页面当前在内存中,哪些不在内存中。但我希望有人告诉我该怎么做,因为这是我需要自己弄清楚的家庭作业的一小部分。但我似乎无法弄清楚如何找到与这个 vma 对应的页面。如果我能找到这些页面,我想我可以检查它们是否有有效的 pfn。

0 投票
13 回答
66653 浏览

c - 如何从 Linux 内核中的函数指针获取函数名?

如何从C中的函数指针获取函数名?

编辑:真实情况是:我正在编写一个 linux 内核模块并且我正在调用内核函数。其中一些函数是指针,我想在内核源代码中检查该函数的代码。但我不知道它指向哪个函数。我认为可以这样做,因为当系统失败(内核恐慌)时,它会在屏幕上打印出当前调用堆栈以及函数名称。但是,我想我错了……是吗?

0 投票
4 回答
505754 浏览

linux - 在 Linux 中增加最大 TCP/IP 连接数

我正在对服务器进行编程,我的连接数似乎受到了限制,因为即使我将连接数设置为“无限”,我的带宽也没有饱和。

如何增加或消除我的 Ubuntu Linux 机器一次可以打开的最大连接数?操作系统是否限制了这一点,还是路由器或 ISP?或者是别的什么?

0 投票
9 回答
2548 浏览

c - Linux内核(或其他低级的东西)是如何编写C的“好”例子

在“C 的最佳用途是什么”问题之后。

Linux内核似乎是一个著名且思想很好的C程序。但它是主流“最佳实践”C 的一个很好的例子吗?

0 投票
4 回答
32302 浏览

linux - 为什么我们在 linux 中需要一个 swapper 任务?

当在任务调度点运行队列中没有更多可运行任务时,选择运行空闲任务(又名交换任务)。但是这个如此特殊的任务有什么用呢?另一个问题是为什么我在用户态的“ps aux”输出(PID=0)中找不到这个线程/进程?

0 投票
2 回答
786 浏览

c++ - 在 Ubuntu Eee 上编译内核需要什么?

我正在尝试按照教程在 Linux 中创建自定义 USB 驱动程序,我希望使用 g++ 在我的 Eee PC 上使用 Ubuntu Eee 开发这个东西。不幸的是,要遵循本教程,我需要 linux/module.h 头文件。据我了解,我需要编译内核才能使其正常工作。我以前从未编译过内核,我找到的所有说明都是针对桌面 Ubuntu 的。

我在我的 Eee 上这样做,因为如果我能做到这一点并在课堂项目中使用它,我将在课堂上获得额外的学分。

我正在关注的教程在这里:http ://www.linuxjournal.com/article/7353 和这里:http ://www.linuxjournal.com/article/4786

0 投票
2 回答
11476 浏览

linux - 在没有 unistd.h 的情况下获取当前进程的进程 ID

我正在研究死锁检测算法,我只得到内核级库,即#include <linux/somelibrary>没有别的。是否有内核级工具可以让我获得类似于 of 的当前进程的getpid()pid unistd.h