killing a kthread

kr Lekha kr.lekha at gmail.com
Wed Sep 3 12:16:27 UTC 2008


I understand when thread finishes it should call kthread_exit().
but if this thread was suspended before it finished, it might not be able to
call kthread_exit().

Due to which we still see the thread suspended. I am unable to kill it
even with killproc / psignal with in the kernel module.
Thanks,
Lekha





On 9/3/08, Rui Paulo <rpaulo at freebsd.org> wrote:
>
> On Wed, Sep 03, 2008 at 09:34:47AM +0100, kr Lekha wrote:
> > Hi,
> > i wanted to kill a kthread created by my module, There is no actual
> > kthread_kill to kill it
> >
> > hence I tried to send kill signal to thread
> >  psignal(p, SIGTERM);
> > psignal(p, SIGKILL);
> > killproc(p,"messeage");
> > and kthread_suspend()
> >
> > Nothing seems to be killing the kthread, I still see it
> > [root@ /usr/src]# ps awx -l | grep kernel
> >  UID   PID    PPID CPU PRI NI   VSZ   RSS MWCHAN STAT  TT       TIME
> COMMAND
> >   0     1048     1      0     20   0     0       8      ktsusp      DL
> > ??     0:00.01 [new_kernel_thread]
> >
> >
> > I have noticed that generally if kernel module wanted to kill a thread
> then
> > it calls
> > {
> >    wakeup(p);
> >    msleep(p,0); /*or tsleep*/
> > }
> >
> > This puts the thread to sleep forever. However kthread_suspend also
> performs
> > same actions.
> > Does scheduler take care to killing it?
> >
> > I read that after 2 min scheduler wakes up the thread and
> > eventually kills it,
> > i see the same kthread suspended even after a day
> >
> > I would appreciate any thoughts in this reagard.
> > Thanks,
>
> When the thread finishes what it's doing, it should call kthread_exit().
>
> Regards,
> --
> Rui Paulo
>


More information about the freebsd-hackers mailing list