首页 > TAG信息列表 > kernel-module
两个相互依赖的Linux内核模块的结构?
在一个我参与的项目中,我们具有以下硬件设置: Linux PC ------> "Router" +----> "Device A" | +----> "Device B" Linux PC是标准的X86 PC. “路由器”是我们开发的硬件,已连接到系统中的其他硬件.在此示例linux-将新的IOCTL添加到内核(数字范围)
我正在编写新的内核模块,并添加了实现新的IOCTL的模块. 我应遵守IOCTL编号的任何规定吗?也许有一些“用户范围”? 我在嵌入式平台上使用内核2.6.21.解决方法:IOCTL被定义为与设备相关的-如果存在供人们实施的“标准” ioctl,则它们将是诸如读取和写入之类的系统调用. 对于ioctl数字,无法理解Linux内核模块中read_proc的工作
我正在此page审查内核模块示例 程序中使用的read_proc如下: int fortune_read( char *page, char **start, off_t off, int count, int *eof, void *data ) { int len; if (off > 0) { *eof = 1; return 0; } /* Wrap-alinux-通过ASM代码处理syscall
我正在用此代码块替换/挂钩__NR_read sysall(该代码块已编译并作为操作码保存在内核模块的可执行内存中) push rbp; mov rbp, rsp; sub rsp, 64; //8 bytes for rax content + 48 bytes for 6 args + 8 bytes for syscall result mov [rsp], rax; mov [rsp - 8], rdi; mov [rsp -GCC退货优化
我想知道GCC是否可以优化代码,例如 int foo(args) { if(is_true) { do_smth; n = call_func(args); do_smth; return n; } else { return call_func(args); } } 这样,如果我在else分支中,将像没有foo调用一样执行call_fLinux内核:无法使用工作队列加载简单的Linux内核模块
我在Linux内核模块中使用工作队列时遇到问题. 我的模块编译时没有给出任何错误,但是在加载时失败了.我无法加载以下模块并在dmesg中得到以下错误. [root@nanderson test_mod]# insmod workqueue_test.ko insmod: ERROR: could not insert module workqueue_test.ko: Unknown sym在Linux中,考虑到32位体系结构,将为每个进程提供4GB的虚拟地址空间
嗨,我是Linux内核开发的新手.因此,需要对以下语句进行一些澄清. *>在内存中,每个进程都获得4GB的虚拟地址空间 considering a 32-bit architecture. The lower 3GB virtual addresses is accessible to the user space portion of the process and the upper 1GB is accessiblinux-Netfilter钩子注册与网络子系统
在探索netfilter功能时,我尝试编写一个简单的netfilter模块并注册了一个钩子,如下所示: dhcp_nfho.owner = THIS_MODULE; dhcp_nfho.hook = dhcp_hook_function; dhcp_nfho.hooknum = NF_INET_POST_ROUTING; dhcp_nfho.prioritlinux-在所有内核上设置控制寄存器
我需要在给定系统的所有内核上启用cr4 bit 8(PCE).我目前有一个工作模块,该模块在加载模块时将其设置在运行的核心上.我被困在这里,还没有找到太多有关如何并行化以在所有内核上运行的文档: 1)似乎卸载并不总是发生在加载发生的核心上,所以我无法正确清理 2)我无法找到任何方法来强检查Linux内核模块是否正在运行
我编写了一个内核模块,该模块在/ proc /中创建一个条目并执行其他一些任务. 我想修改一个现有的内核模块,以检查我的模块是否正在运行,并根据它执行一些语句(或者在不运行时执行其他语句) 有关如何执行此操作的任何建议?解决方法:kernel / module.c提供的功能可能会满足您的需求;您首使用Linux内核模块发送的UDP数据包不使用套接字
我正在编写一个创建IP数据包的内核模块.现在,我想发送此数据包,但尚未为其传输创建任何套接字. 有什么方法可以借助内核例程直接发送它. 由于我已经跟踪了Linux内核代码以进行数据包传输,因此在net / core / dev.c中定义了一个名为dev_hard_start_xmit()的函数.我们可以使用吗? 其实android-已编译的LKM的互换性
是否可以使用在3.0.31-gd5a18e0 SMP抢占mod_unload ARMv7版本(Android股票内核)版本的内核中为3.0.8 mod_unload ARMv5(由我自己制作的内核)编译的可加载内核模块? 模块本身几乎不包含任何内容 // Defining __KERNEL__ and MODULE allows us to access kernel-level code not usuallinux-我们如何生成MCE(机器检查错误)
据我所知,mcelog用于检查硬件中的内存错误.我想模拟相同的情况.我没有任何机器出现硬件问题,可以模拟这种情况.有人可以建议我一些模拟器或其他可以产生这些错误的方式吗?因为我的主要目的是显示无法纠正的内存错误.谢谢.解决方法:您可以使用工具mce-inject,但需要加载mce_inject内如何调试Linux内核模块`init()`中的问题?
我正在使用远程(k)gdb调试模块中的问题,该问题在加载时会引起恐慌,例如调用init()时. 堆栈跟踪仅显示do_one_initcall(mod-> init)导致崩溃.为了将符号文件加载到gdb中,我需要获取模块文本部分的地址,并且要获取,我需要加载模块. 因为busybox(1.16.1)中的insmod不支持-m,所以我坚持安装新内核时如何自动进行Linux内核模块编译?
我正在写一个Linux内核模块.它与所有源文件一起发布(尽管许可证是专有的),可以针对正在运行的内核进行编译.安装我的模块(以.deb软件包分发)时,它将自动编译并安装.这可行. 问题是,在整个Linux系统的常规升级过程中,将安装较新版本的Linux内核.当这样新版本的内核开始运行时,它没有linux-是否可以通过LKM添加系统调用?
我想通过LKM添加新的系统调用,但是我不确定如何执行此操作.也就是说,我知道如果我想添加一个全新的系统调用,我可以查看sys_call_table并找到一个sys_ni_syscall并直接替换它,但是我很好奇是否可以实际添加到sys_call_table中.我意识到这是不可能的,因为它是固定大小的数组,但是我错误:函数’create_proc_read_entry’的隐式声明[-Werror = implicit-function-declaration]
我正在尝试在内核3.13上编译内核模块,我收到此错误: error: implicit declaration of function 'create_proc_read_entry' [-Werror=implicit-function-declaration] 我谷歌它并没有找到任何回应.以下是引用此错误的代码部分: #if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,24))Linux内核代码中的EXPORT_SYMBOL_GPL是什么?
Linux内核代码中的EXPORT_SYMBOL_GPL是什么? 下面是一段代码,其中包含EXPORT_SYMBOL_GPL 62 struct resource *platform_get_resource(struct platform_device *dev, 63 unsigned int type, unsigned int num) 64 { 65 int i;linux – 为什么call_usermodehelper大多数时候都会失败?
从内核模块,我试图使用call_usermodehelper函数来执行一个可执行文件sha1,它接受一个文件作为参数,并将文件的SHA1哈希值写入另一个文件(命名输出).可执行文件完美无缺. int result=-1; name = "/home/file" char *hargv[] = {"/home/sha1", name,NULL }; char *henvp[] = {"HOME=linux – 类似netfilter的内核模块,用于获取源和目标地址
我读了this guide写一个内核模块做简单的网络过滤. 首先,我不知道这意味着什么,以及入站和出站数据包(通过传输层)之间的区别是什么? When a packet goes in from wire, it travels from physical layer, data link layer, network layer upwards, therefore it might not go tLinux:modpost没有构建任何东西
我在使用我的机器上构建任何内核模块时遇到问题.每当我构建一个模块时,modpost总是说零模块: MODPOST 0 modules 为了解决这个问题,我编写了一个测试模块(hello.c): #include <linux/module.h> /* Needed by all modules */ #include <linux/kernel.h> /* Needed for如何使用QEMU调试Linux内核模块?
我正在研究修改一些内核网络代码以及包含新内核模块的学术项目. 我正在使用QEMU来加载修改后的内核并进行测试. 但是,我发现某些.img需要一个完整的操作系统来进行调试. 没有它可能吗? 或者,哪个是可以与Kernel 2.6 for system一起使用的发行版.除了运行程序的能力,包括网络支持外,内核陆地套接字连接超时
再次,我需要你的内核模块的帮助.我已经实现了一个客户端模块,但每次连接函数都返回errno = 110(超时).我不明白为什么?为了测试这个模块,我在监听模式下启动了netcat(nc -vl -p4242).你对这个神秘的bug有什么建议吗? int init_module(void) { struct socket* s内核陆地套接字连接超时
再次,我需要你的内核模块的帮助.我已经实现了一个客户端模块,但每次连接函数都返回errno = 110(超时).我不明白为什么?为了测试这个模块,我在监听模式下启动了netcat(nc -vl -p4242).你对这个神秘的bug有什么建议吗? int init_module(void) { struct socket* s测量linux内核从启动到用户空间所需的时间
是否有基于内核检测的方法来测量内核在启动期间转移到用户空间的时间?我可以使用printk的定时信息,但我只是不确定,放置此printk的确切位置,以便观察内核何时转移到Userspace.解决方法:start_kernel()由体系结构特定代码(arch / architecture_type)调用.内核加载后,它调用第一个用户