Tag: 模块

从CGI C模块返回http错误代码

我有一个用C语言编写的CGI模块,对于某些条件我想从这个模块返回HTTP错误400。 问题是 – 我不知道如何从模块返回HTTP错误。 看起来像我的模块中的’return(-1)’,返回500内部服务器错误。 我已经尝试过返回400等但是静脉。 我甚至试过“printf(”状态:400“);” 在返回-1之前(如此处所示: 如何从C ++ CGI程序返回500 HTTP状态 )但这不起作用。 对此有任何建议将不胜感激。 编辑:[已解决]我能够从python模块返回HTTP错误代码(稍后由此C CGI模块调用)。 所以没有尝试下面评论中提到的建议。 谢谢你提供帮助。

将V = s Flage传播到所有子makefile

当我使用make构建内核模块时,我会得到这种日志 CC[M] module1 CC[M] module2 CC[M] module3 CC[M] module4 即只是编译或链接有关当前正在处理的任何模块的信息。 我需要知道哪些命令实际编译模块源代码的完整信息,这些命令中使用的flags是什么等等 gcc -Wall abcd.c 我甚至通过设置V=s , V=1 , -n和-d来检查它,但是无法得到我想要的东西。 请告诉我如何使V=s传播通过每个后续的makefile。 它可以通过如何通过exporting来完成? 谢谢

linux / init.h:没有这样的文件或目录

我正在尝试为我的一类构建一个内核模块,并且我遇到了一堵错误,但是在所述墙的顶部是臭名昭着的“没有这样的文件或目录”错误。 这似乎是问题的根源。 这不仅影响init.h,还影响module.h和kernel.h。 该计划的前三行如下: #include #include #include 在浏览类似的问题时,我环顾四周并尝试了其他路径,这些文件应该是什么,但到目前为止还没有任何工作。 最奇怪的是我已经使用过这个模块; 我提供了顶级的初学者代码(我没有改变任何东西),它没有给我那个错误。 虽然,显然后面的代码是不同的,但这似乎是目前最大的问题。 完整代码如下: #include #include #include /* This function is called when the module is loaded. */ int simple_init(void) { printk(KERN_INFO “Loading Module\n”); static LIST_HEAD(birthday_list) struct birthday{ int day; int month; int year; struct list_head list; }; struct birthday *ptr, *next; struct birthday *bob; struct birthday […]

idt_table undefined! 编译内核模块时发出警告

我正在尝试在内核模块中使用gate_desc *idt_table 。 set_trap_gate()定义的set_trap_gate()函数使用此指针。 在desc.h中也有一个定义: extern gate_desc idt_table[] 。 我尝试了不同的东西: 在我的模块中使用idt_table而没有定义或做法 用我的(有效) idt_table地址影响idt_table我在编译期间得到一个id_table未定义的警告,或者为idt_table得到不完整的类型。 创建一个名为gate_desc *it = (gate_desc *)@;的新var gate_desc *it = (gate_desc *)@; 并将set_trap_gate , set_gate , write_idt_entry , pack_gate函数从sched.h复制到我的模块文件(重命名它们,并使用它而不是idt_table )。 这编译很好,但插入我的模块时,我在模块(ret -1)错误中得到一个未知符号。 (我的模块中没有对idt_table的引用,我在sched中使用的函数使用我的变量)。 我试着看看sched.h中包含的文件在哪里被定义为idt_table ,但找不到它! 有人知道我怎么用,来自sched.h的idt_table指针(用corrct地址影响它)还是创建一个新指针?

在可加载的Linux内核模块上设置cpu affinity

我需要创建一个内核模块,在计算机的每个核心上启用ARM PMU计数器。 我在设置cpu亲和性时遇到问题。 我试过sched_get_affinity ,但显然,它只适用于用户空间进程。 我的代码如下。 有任何想法吗? #define _GNU_SOURCE #include /* Needed by all modules */ #include /* Needed for KERN_INFO */ int init_module(void){ unsigned reg; /* enable user-mode access to the performance counters*/ asm volatile(“MRC p15, 0, %0, C9, C14, 0\n\t” : “=r”(reg)); reg |= 1; asm volatile(“MCR p15, 0, %0, C9, C14, 0\n\t” […]

有什么方法来模块化C代码?

您知道在项目规模扩大时模块化C代码有哪些方法,实践和约定?

linux-kernel模块中的系统调用拦截(内核3.5)

我需要用自己的实现替换标准系统调用(例如SYS_mkdir)。 正如我在一些来源中读到的,包括Stackoverflow上的这个问题 , sys_call_table不是自内核版本2.6以来的导出符号。 我尝试了以下代码: #include #include #include #include int (*orig_mkdir)(const char *path); …. int init_module(void) { orig_mkdir=sys_call_table[__NR_mkdir]; sys_call_table[__NR_mkdir]=own_mkdir; printk(“sys_mkdir replaced\n”); return(0); } …. 不幸的是我收到编译错误: error: assignment of read-only location ‘sys_call_table[83]’ 如何更换系统调用? 编辑:有没有内核修补的解决方案?

如何在rmmod上停止Linux内核线程?

我编写了以下代码来创建内核线程: #include #include #include #include #include struct task_struct *task; int data; int ret; int thread_function(void *data) { int var; var = 10; return var; } static int kernel_init(void) { data = 20; printk(KERN_INFO”——————————————–“); task = kthread_create(&thread_function,(void *)data,”pradeep”); task = kthread_run(&thread_function,(void *)data,”pradeep”); printk(KERN_INFO”Kernel Thread : %s\n”,task->comm); return 0; } static void kernel_exit(void) { ret = kthread_stop(task); […]

如何理解这个dmesg错误信息?

我编写了这个简单的模块来处理设备并调用它的一些电源管理方法,如.suspend和.resume 。 在初始化时,模块简单地查找特定设备并尝试调用其方法。 #include #include #include #include static int __init mfps_driver_init(void){ struct pci_dev *dev = NULL; struct pci_driver *driver = NULL; struct device *device = NULL; dev = pci_get_device(0x8086, 0x15a2, NULL); if((dev == NULL) || (dev == 0)){ printk(KERN_INFO “LEONZO: NOTHING FOUND SIZE %ld\n”, sizeof(dev)); } else { driver = dev->driver; printk(KERN_INFO “LEONZO: I FOUND […]

如何在内核源文件中包含math.h #include ?

我想在我的Linux内核模块中包含math.h。 如果我用, #include ‘/usr/include/math.h’ 它给我以下错误: error: features.h: No such file or directory error: bits/huge_val.h: No such file or directory error: bits/mathdef.h: No such file or directory error: bits/mathcalls.h: No such file or directory 为什么是这样?