构建内核模块 do_softirq() undefined
build kernel module do_softirq() undefined
#include <linux/init.h>
#include <linux/module.h>
#include <linux/interrupt.h>
MODULE_LICENSE("Dual BSD/GPL");
static int example_init(void) {
printk("<1>EXAMPLE: init\n");
do_softirq();
return 0;
}
static void example_exit(void) {
printk("<1>EXAMPLE: exit\n");
}
module_init(example_init);
module_exit(example_exit);
在 ubuntu 20.04 上构建模块。我收到一个错误。
ERROR: "do_softirq" undefined!
有什么建议可以解决这个错误吗?
为什么需要运行这个程序?它是在特定情况下调用的 internal 内核函数 - 在某些线程中调用。你不应该从内核模块调用它。
要编译您的示例模块,您可以尝试在内核中导出此符号 - 如下所示:
EXPORT_SYMBOL(do_softirq);
在 softirq.c 文件中,但不推荐。尝试寻找 tasklet、工作队列接口或 kthreads。
#include <linux/init.h>
#include <linux/module.h>
#include <linux/interrupt.h>
MODULE_LICENSE("Dual BSD/GPL");
static int example_init(void) {
printk("<1>EXAMPLE: init\n");
do_softirq();
return 0;
}
static void example_exit(void) {
printk("<1>EXAMPLE: exit\n");
}
module_init(example_init);
module_exit(example_exit);
在 ubuntu 20.04 上构建模块。我收到一个错误。
ERROR: "do_softirq" undefined!
有什么建议可以解决这个错误吗?
为什么需要运行这个程序?它是在特定情况下调用的 internal 内核函数 - 在某些线程中调用。你不应该从内核模块调用它。
要编译您的示例模块,您可以尝试在内核中导出此符号 - 如下所示:
EXPORT_SYMBOL(do_softirq);
在 softirq.c 文件中,但不推荐。尝试寻找 tasklet、工作队列接口或 kthreads。