linux-kernel相关内容

从硬件本身查找原始 MAC 地址

Os:REDHAT LINUX Linux 管理:2.6.18.8-1 # 可以直接从网卡读取MAC地址吗?我有下面的代码,但它只是从上面的层读取而不是卡本身!!! 我想弄清楚如何在我的 linux 机器上找到以太网 NIC 的原始 MAC 地址.我了解如何使用 ifconfig 查找当前 MAC 地址,但是如果地址已更改,请说使用'ifconfig eth0 hw ether uu: ..

nanosleep CPU使用率高?

我注意到一个调用 nanosleep 的小测试程序在内核高于 2.6.22 的 Linux 机器上运行时显示出 CPU 使用率的巨大差异. #include int main (void){struct timespec sleepTime;struct timespec returnTime;sleepTime.tv_sec = 0;sleepTime.tv_nsec = 1000;而 (1) ..
发布时间:2022-01-04 22:46:57 服务器开发

如何使用 netfilter 钩子在内核空间中回显数据包?

我想在内核空间回显一个数据包.我在这台机器上用端口 6000 运行一个回显服务器.现在客户端运行在另一台机器上,向回显服务器发送数据.现在,我想要做的是从内核空间回显数据包.我不想用数据包打扰服务器,它会从内核空间静默回响.我在下面展示我的代码: #include #include #include #include #include #include #include #include #in ..
发布时间:2022-01-04 22:46:50 服务器开发

____cacheline_aligned_in_smp 用于 Linux 内核中的结构

在Linux内核中,为什么很多结构使用____cacheline_aligned_in_smp宏?访问结构时它是否有助于提高性能?如果是,那么如何? 解决方案 任何缓存(dcache 或 icache)中的每个缓存线都是 64 字节(在 x86 中)架构.需要缓存对齐以避免缓存行的错误共享.如果缓存行在全局变量之间共享(在内核中发生得更多)如果全局变量之一被其缓存中的处理器之一更改,则它将 ..
发布时间:2022-01-04 22:46:44 其他开发

什么是 linux 中的链式 irq,它们什么时候需要使用?

什么是链式 IRQ?chained_irq_enter 和 chained_irq_exit 是做什么的,因为在中断发生后,IRQ 线被禁用,但是 chained_irq_enter 正在调用与屏蔽中断相关的函数.如果线路已经禁用为什么要屏蔽中断? 解决方案 什么是链式 irq ? 如何在父(中断控制器)设备的 IRQ 处理程序中调用子设备的中断处理程序有两种方法. 链式中 ..

NUMA 机器上的共享库瓶颈

我正在使用 NUMA 机器(SGI UV 1000)同时运行大量数值模拟,每个模拟都是使用 4 个内核的 OpenMP 作业.但是,运行大约 100 个以上的这些作业会导致显着的性能下降.我们关于为什么会发生这种情况的理论是,软件所需的共享库只加载一次到机器的全局内存中,然后系统会遇到通信瓶颈,因为所有进程都在单个节点上访问内存. 这是一个旧软件,没有任何修改范围,并且静态 make 选项不 ..
发布时间:2022-01-04 22:46:18 服务器开发

Linux内核调试打印输出?

是否有更好的方法在 Linux 内核中调试打印输出? 现在乱丢代码: printk(KERN_DBG "%s:%d - %s() ", __FILE__, __LINE__, __FUNCTION__ ); 这不是很干净. 应该有一种方法可以使整行 #ifdef: 以某种不错的方式进行编辑. 解决方案 使用 /* 在文件的顶部,在任何包含之前 */#define pr_f ..
发布时间:2022-01-04 22:46:12 其他开发

copy_to_user 与 memcpy

我一直被告知(在书籍和教程中)在将数据从内核空间复制到用户空间时,我们应该使用 copy_to_user() 而使用 memcpy() 会导致系统出现问题.最近我错误地使用了 memcpy() 并且它工作得很好,没有任何问题.为什么我们应该使用 copy_to_user 而不是 memcpy() 我的测试代码(内核模块)是这样的: static ssize_t test_read(stru ..
发布时间:2022-01-04 22:46:04 其他开发

在内核中处理线程的正确方法?

我已经看到了一些零散的信息,但我似乎无法得出一个最终答案.如何清理内核中的僵尸线程? 为了确保并产生处理内核中线程的最终正确方法,我想更广泛地提出这个问题.如何在 Linux 内核中创建、终止和清理线程? 到目前为止我所拥有的是: thread_func:退出 = 0;而 (!must_exit)做东西退出 = 1;do_exit(0)init_module:must_exit = ..
发布时间:2022-01-04 22:45:43 其他开发

module_layout 版本不兼容

我尝试安装一个由我移植的 Linux 内核遗留模块.出现以下错误: >须藤 insmod camac-mx.koinsmod:插入“camac-mx.ko"时出错:-1 模块格式无效dmesg |tail -n 1[1312783.938299] camac_mx:不同意符号 module_layout 的版本 我该如何解决这个问题? 解决方案 这表明您已针对与正在运行的内核版本不同的 ..
发布时间:2022-01-04 22:45:33 其他开发

如何在 Linux 内核中休眠?

我可以使用 msleep() 函数在内核空间中休眠指定的时间吗?如果是这样,我需要包含哪些头文件?#include 似乎不是正确的.是否有更好的功能用于此目的? 解决方案 我需要包含 才能在内核空间中使用 msleep. ..
发布时间:2022-01-04 22:45:22 服务器开发

如何从内核树中构建 BPF 程序

内核在samples/bpf 中提供了许多示例.我有兴趣在树之外构建一个示例,就像我们构建一个内核模块一样,其中 Makefile 可以很简单.可以对 bpf 做同样的事情吗?我通过从 samples/bpf/Makefile 中删除不必要的部分并保持对 libbpf 和其他人的依赖来尝试它,但结果证明并不是那么容易. 例如,尝试在内核树之外构建samples/bpf/bpf_tcp_ker ..
发布时间:2022-01-04 22:45:06 其他开发

在 Linux 中处理 sk_buff 数据包的所有负载的正确方法是什么

我目前正在尝试调试运行在以太网之上的 ATM 封装层.ATM 信元基本上是在以太网报头之后按顺序存储的.但是,我怀疑驱动程序对 sk_buffs 的幼稚方法已被破坏. 驱动程序盲目地假设 skb->data 可以迭代,但查看 virtio_net.c:page_to_skb 的内核代码我看到以下行为: memcpy(hdr, p, hdr_len);len -= hdr_len;p += ..
发布时间:2022-01-04 22:45:00 其他开发

使用 Linux sysfs_notify 调用

我正在尝试在内核驱动程序和用户空间程序之间进行异步通信(我知道这里有很多问题需要类似的信息,但我找不到与 sysfs_notify 相关的问题). 我将 Vilhelm 的编辑留在这里,但是将源添加到一个使用 sysfs 的简单驱动程序和一个用户空间程序来轮询它.驱动程序工作正常(我从网上获得了大部分内容;它缺少信用,但当我回去添加它们时找不到它们).不幸的是,轮询程序不起作用.它总是立即返 ..
发布时间:2022-01-04 22:44:33 服务器开发

Eudyptula 挑战和内核路径

我决定参加Eudyptula 挑战.在我提交了第一个任务之后,即构建一个简单的“Hello World!"模块,我收到了以下答案. 请阅读 Makefile 的要求并允许模块针对文件系统上的任何内核源代码树构建,而不仅仅是那些在某个时间点碰巧安装在 /lib/ 中的内核. 要求是: Makefile 应该能够针对当前正在运行的内核的来源以及能够接受来自环境变量的任意内核源目录. ..
发布时间:2022-01-04 22:44:25 其他开发

中断处理程序使用哪个堆栈 - Linux

在多任务系统中,当任何硬件对特定 CPU 产生中断时,CPU 可以执行以下任一情况,除非它已经在为 ISR 提供​​服务: 用户态进程正在 CPU 上执行 内核模式进程正在 CPU 上执行 想知道在上述两种情况下中断处理程序使用哪个堆栈以及为什么? 解决方案 所有中断都由内核处理.这是由为该特定中断编写的中断处理程序完成的.对于中断处理程序,有 IRQ 堆栈.中断处理程序堆栈 ..