Hi all, I am trying to send a SIGKILL to a kernel module which is sleeping. I added a printk after the sleep command. Sending a SIGLKILL (by kill -9 SIGLKILL pidOfKernelThread) does **not** yield the message from printk("calling do_exit\n"); which is immediately after the msleep() command, as I expected.
Moreover, ps before and after the kill show 'D' in the STAT column (STATUS), which means that the process is sleeping (If I am not wrong). Any ideas why ? below is the code: #include<linux/init.h> #include<linux/module.h> #include<linux/kernel.h> #include<linux/kthread.h> #include<linux/sched.h> #include <linux/delay.h> struct task_struct *task; int thread_function(void *data) { int exit_sig = SIGKILL; allow_signal(SIGKILL); printk("in %s\n",__func__); // sleep for a second msleep(60000); printk("calling do_exit\n"); do_exit(exit_sig); return 0; } static int kernel_init(void) { task = kthread_create(thread_function,NULL,"MY_KERNEL_THREAD"); return 0; } static void kernel_exit(void) { printk("in kernel_exit\n"); kthread_stop(task); } module_init(kernel_init); module_exit(kernel_exit); MODULE_AUTHOR("Tester"); MODULE_DESCRIPTION("test"); MODULE_LICENSE("GPL"); rgs, Kevin _______________________________________________ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies