Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 9 Sep 2008 13:41:37 +0100
From:      "kr Lekha" <kr.lekha@gmail.com>
To:        "John Baldwin" <jhb@freebsd.org>
Cc:        freebsd-current@freebsd.org
Subject:   Re: Kthread kill
Message-ID:  <96b2ec350809090541x1035aae6qb59d47c9052ebf29@mail.gmail.com>
In-Reply-To: <200809081726.13043.jhb@freebsd.org>
References:  <96b2ec350809030232v5586ea44nf6ead7d856f72634@mail.gmail.com> <200809081726.13043.jhb@freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
Hi all,
thanks very much for your valuable inputs.

I found out the way to exit the thread.
Problem was psignal(p, SIGKILL); , the p->p_siglist was being reset after
propagating this signal to threads associated with this proc.
Hence i could poll once in a way if any unhandled signals
were in curthread->td_siglist.

I am not sure if this is the optimal solution.
Please do sugest if you have a better solution


Why cant we have signal handlers for kernel threads? when i tried to
register one, sigaction returned value 14 and signal handler didnt get
registered.
Thanks,
lekha







On Mon, Sep 8, 2008 at 10:26 PM, John Baldwin <jhb@freebsd.org> wrote:

> On Wednesday 03 September 2008 05:32:00 am 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.
>
> Your kthread has to explicitly check for a kill request in its main loop
> and
> call kthread_exit() or some such.  There is no force-kill for kthreads.
>
> --
> John Baldwin
>



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?96b2ec350809090541x1035aae6qb59d47c9052ebf29>