Hi On Tue, Feb 19, 2013 at 1:16 AM, Srivatsa S. Bhat <srivatsa.bhat@xxxxxxxxxxxxxxxxxx> wrote: > On 02/19/2013 02:07 PM, Kevin Wilson wrote: >> 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 ? > > There are 2 ways in which a task can sleep - interruptible sleep and > uninterruptible sleep. Interruptible sleep means, the task can get > interrupted by a signal. A task doing uninterruptible sleep doesn't > get woken up by any signal. The 'D' state indicates that the task is > doing uninterruptible sleep, that's why your signals aren't working. There is one more sleeping state: killable sleep. It is like uninterruptable sleep that can be interrupted only with SIGKILL. http://lwn.net/Articles/288056/ > > Regards, > Srivatsa S. Bhat > >> 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@xxxxxxxxxxxxxxxxx > http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies _______________________________________________ Kernelnewbies mailing list Kernelnewbies@xxxxxxxxxxxxxxxxx http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies