0
我想创建一个使用Kernel_thread()作为学校任务的一部分的内核线程。我根据我认为已经过时的教授例子编写代码。我收到错误,我不知道如何继续。使用kernel_thread创建内核线程
我在做什么:
mypid = kernel_thread(myFirstFunctionOne, NULL, CLONE_FS | CLONE_FILES | CLONE_SIGHAND);
其中myFirstFunctionOne被定义为:
static int myFirstFunctionOne(void *unused){
struct task_struct *tsk = current;
spin_lock_irq(¤t->sighand->siglock);
flush_signal_handlers(current, 1);
spin_unlock_irq(¤t->sighand->siglock);
strcpy(tsk->comm, "My name: m_k_t_do_something_1");
set_task_state(tsk, TASK_RUNNING);
printk(KERN_NOTICE "My name: m_k_t_do_something_1 is about to be scheduled.\n");
schedule();
printk(KERN_NOTICE "My name: m_k_t_do_something_1 is now scheduled.\n");
return 0;
}
我打电话,只是创建具有如下功能:1行代码向Kernel_init结束,create_my_first_processes ()。
static int __ref kernel_init(void *unused)
{
int ret;
kernel_init_freeable();
/* need to finish all async __init code before freeing the memory */
async_synchronize_full();
free_initmem();
mark_readonly();
system_state = SYSTEM_RUNNING;
numa_default_policy();
flush_delayed_fput();
rcu_end_inkernel_boot();
create_my_first_processes();
if (ramdisk_execute_command) {
ret = run_init_process(ramdisk_execute_command);
if (!ret)
return 0;
pr_err("Failed to execute %s (error %d)\n",
ramdisk_execute_command, ret);
}
...
这是启动时,我得到的错误:
附加信息:内核上运行Ubuntu 4.8.6