#include <linux/namei.h>
#include <linux/mount.h>
#include <linux/fd.h>
#include <linux/sched.h>
#include <linux/kthread.h>
#include <linux/time.h>
static void my_add_work_func(struct work_struct *work)
{
// do something
}
struct workqueue_struct *my_wq;
static DECLARE_WORK(my_wq_work, my_add_work_func);
void call(void)
{
if (my_wq != NULL)
queue_work(my_wq, &my_wq_work);
}
void init()
{
my_wq = create_singlethread_workqueue("my_wq");
}
void exit()
{
flush_workqueue(my_wq);
}
static int my_thread(void *dir)
{
// do something
return 0;
}
int call_thread(void)
{
struct task_struct *thread;
thread = kthread_run(my_thread, (void*)NULL, "my_thread");
if (IS_ERR(thread)) {
pr_err("failed to create thread for keyon_thread init\n");
return -EBUSY;
}
return 0;
}
<Linux> 创建workqueue和thread
最新推荐文章于 2025-04-17 10:04:57 发布