问题标签 [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.
linux - Linux 内核中可能/不太可能的宏是如何工作的,它们有什么好处?
我一直在研究 Linux 内核的某些部分,发现了这样的调用:
或者
我找到了它们的定义:
我知道它们是为了优化,但它们是如何工作的?使用它们可以减少多少性能/尺寸?至少在瓶颈代码中(当然是在用户空间中)是否值得麻烦(并且可能失去可移植性)。
c - vmalloc 和 kmalloc 有什么区别?
我四处搜索,发现大多数人都提倡使用kmalloc
,因为您可以保证获得连续的物理内存块。但是,如果找不到您想要kmalloc
的连续物理块,似乎也会失败。
拥有连续的内存块有什么好处?具体来说,为什么我需要在系统调用中有一个连续的物理内存块?有什么理由我不能使用吗?
最后,如果我要在处理系统调用期间分配内存,我应该指定吗?系统调用是否在原子上下文中执行?vmalloc
GFP_ATOMIC
GFP_ATOMIC
分配是高优先级的,不休眠。这是在中断处理程序、下半部分和其他无法睡眠的情况下使用的标志。
GFP_KERNEL
这是正常分配,可能会阻塞。这是在可以安全睡眠时在进程上下文代码中使用的标志。
file-io - Linux 内核模块中的文件 I/O
我正在编写一个需要打开和读取文件的 Linux 内核模块。实现这一目标的最佳方法是什么?
c - 虚拟区域到页面
在 Linux 内核中,给定task_struct
smm
我可以访问进程的vm_area_struct
s 列表。给定这些vm_area_struct
s,我如何获得struct page
实际对应于这个 vma 的 s?
我尝试在 mm/memory.c 等中寻找函数,但不知所措。
编辑:想法是找出 vma 中的哪些页面当前在内存中,哪些不在内存中。但我不希望有人告诉我该怎么做,因为这是我需要自己弄清楚的家庭作业的一小部分。但我似乎无法弄清楚如何找到与这个 vma 对应的页面。如果我能找到这些页面,我想我可以检查它们是否有有效的 pfn。
c - 如何从 Linux 内核中的函数指针获取函数名?
如何从C中的函数指针获取函数名?
编辑:真实情况是:我正在编写一个 linux 内核模块并且我正在调用内核函数。其中一些函数是指针,我想在内核源代码中检查该函数的代码。但我不知道它指向哪个函数。我认为可以这样做,因为当系统失败(内核恐慌)时,它会在屏幕上打印出当前调用堆栈以及函数名称。但是,我想我错了……是吗?
linux - 在 Linux 中增加最大 TCP/IP 连接数
我正在对服务器进行编程,我的连接数似乎受到了限制,因为即使我将连接数设置为“无限”,我的带宽也没有饱和。
如何增加或消除我的 Ubuntu Linux 机器一次可以打开的最大连接数?操作系统是否限制了这一点,还是路由器或 ISP?或者是别的什么?
c - Linux内核(或其他低级的东西)是如何编写C的“好”例子
在“C 的最佳用途是什么”问题之后。
Linux内核似乎是一个著名且思想很好的C程序。但它是主流“最佳实践”C 的一个很好的例子吗?
linux - 为什么我们在 linux 中需要一个 swapper 任务?
当在任务调度点运行队列中没有更多可运行任务时,选择运行空闲任务(又名交换任务)。但是这个如此特殊的任务有什么用呢?另一个问题是为什么我在用户态的“ps aux”输出(PID=0)中找不到这个线程/进程?
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