12得票2回答
如何使用O_DIRECT将内核空间内存(物理地址)写入文件?

我想将物理内存写入文件。 由于内存本身将不再被访问,因此我希望使用O_DIRECT来获得最佳的写入性能。 我的第一想法是打开/dev/mem并映射内存,然后将所有内容写入以O_DIRECT打开的文件中。但是调用mmap返回的内存地址会导致写操作失败(EFAULT)。如果不使用O_DIRECT,...

12得票1回答
为什么我的模块无法处理内核分页请求?

这是我的模块,使用dequeue_huge_page_vma()和alloc_buddy_huge_page()来分配一个巨大的页面。为了使它们独立于VMA(虚拟内存区域),我从__get_vm_area_node()获取可用的VM区域,然后获取其虚拟地址。我想要分配一个2MB的页面,但是内核...

12得票1回答
如何在内核模块中查找物理和逻辑核心数量?

在Linux中是否有内核函数可以返回内核模块所运行的物理核心和逻辑核心(在超线程情况下)的编号?

12得票4回答
无法卸载可加载内核模块

我正在编写一个可加载内核模块并尝试测试它。插入后,我尝试使用rmmod xxx命令将其删除,但我收到一个错误,显示module xxx is in use,模块被卡住了,我无法将其删除。有什么办法可以在不重新启动整个机器的情况下删除模块吗?(Linux Kernel版本为3.5.0) 注意:r...

12得票2回答
Linux内核模块的性能剖析

我有兴趣对Linux内核的一个模块进行性能分析。我尝试了以下步骤: 使用 CONFIG_PROFILING=y 编译内核 使用 profile=2 启动内核 通过 echo 123 > /proc/profile 重置性能分析器 专门的守护程序成功加载了模块 运行一个用户空间应用程序...

12得票2回答
如何找到已编译的内核模块的版本?

我面临的情况是,查询已加载模块或.ko文件以找到加载的内核模块的版本将会非常方便。 有没有一种标准方法可以在不深入源代码的情况下实现这一点?

12得票2回答
使用Linux netfilter将源IP地址从struct iphdr*转换为字符串等效形式

我希望将使用netfilter捕获的数据包中的源IP和目标IP地址转换为char *。 在我的netfilter钩子函数中,我有:sock_buff = skb; // argument 2 of hook function // ip_header is struct iphdr* ip...

11得票3回答
使用汇编语言编写x86_64 Linux内核模块

我尝试用nasm编写一个简单的内核模块(版本为v3.6),但是insmod告诉我:$ sudo insmod ./hello.ko insmod: ERROR: could not insert module ./hello.ko: Invalid module format $ echo ...

11得票2回答
使用hciattach实现UART上的蓝牙?

我正在使用支持BLE蓝牙核心规范版本4.0的QN9021 SoC,以控制器模式工作。它支持一些标准的HCI命令和一些特定供应商的命令。我正试图将其连接到我的Ubuntu笔记本电脑上。 我所使用的命令是hciattach。hciattach -s 9600 /dev/ttyUSBx any 96...

11得票3回答
通过LKM添加系统调用是否可行?

我想通过一个LKM添加一个新的系统调用,但我不确定该如何操作。也就是说,如果我想要添加一个完全新的系统调用,我可以查看sys_call_table并找到一个 sys_ni_syscall 并将其替换掉,但我想知道是否有可能实际上向 sys_call_table 中添加内容。我认为这可能是不可能...