c - 错误:从不兼容的指针类型传递“kthread_create_on_node”的参数 1
问题描述
我正在尝试开发一个必须执行线程的内核模块。
编译模块时遇到错误。
这是模块:
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/delay.h>
#include <linux/kthread.h> // for threads
static struct task_struct *thread1;
int thread_fn(void) {
while(1) {
printk("Thread_fuction is running ...\n");
msleep(2000);
}
return 0;
}
int thread_init(void) {
char our_thread[8]="thread1";
printk(KERN_INFO "in init");
thread1 = kthread_create(thread_fn,NULL,our_thread);
if((thread1)) {
printk(KERN_INFO "in if");
wake_up_process(thread1);
}
return 0;
}
void thread_cleanup(void) {
int ret;
ret = kthread_stop(thread1);
if(!ret)
printk(KERN_INFO "Thread stopped");
}
MODULE_LICENSE("GPL");
module_init(thread_init);
module_exit(thread_cleanup);
这是错误:
thread.c:25:26: 错误:从不兼容的指针类型 [-Werror=incompatible-pointer-types] thread1 = kthread_create(thread_fn,NULL,our_thread) 传递“kthread_create_on_node”的参数 1;
谁能帮我解决这个问题?
解决方案
在内核源代码中,您可以看到该kthread_create_on_node()
函数具有第一个参数类型:int (*threadfn)(void *data)
. 但是你的“threadfn”int thread_fn (void)
粗略地说是类型int (*threadfn)(void)
。
所以(void)
改为(void *data)
.
推荐阅读
- sql - 在 SQL 中查找重叠事件并保留更长的时间
- python - python selenium 按类获取按钮并单击
- ios - --ion-safe-area-top 在 iOS 上无法正常工作
- node.js - 什么是 har-validator,我该如何解决这个问题
- go - 没有收到来自远程调用的错误,一直到超时 Go gRPC + micro + protobuf
- x509certificate - 使用 Vault 设置 Spinnaker 证书配置 (x.509)
- json - 如何从 JSON 响应中提取对象属性
- windows - Windows 添加到文本文件上下文菜单“以尾部模式打开”
- angular - 在循环方法中没有从 console.log 获取任何数据
- php - wordpress 迁移后,我的端口被阻止并且站点拒绝连接