lkml.org 
[lkml]   [1999]   [Jun]   [20]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: waitpid advice ? (killing off a kernel thread)
Hi!

> (not on list, please CC me)
>
> I am working on the USB drivers trying to get the hub and the host
> controller (uhci/ohci/ohci-hcd) drivers to unload correctly. The problem
> is that the drivers have threads running that are not dying before I start
> deallocating resources.
>
> currently I am trying the following code (from hub.c):
> =========begin code snip============
> void cleanup_module(void)
> {
> if (khubd_pid >= 0)
> {
> int pid;
> kill_proc(khubd_pid, SIGTERM, 1);
> pid=waitpid(khubd_pid, NULL, __WCHILD);
> if (pid!=khubd_pid)
> printk("waitpid filed,"
> "khubd_pid=%i,retpid=%i\n",khubd_pid,pid);
> }
> usb_deregister(&hub_driver);
> }
> =========end code snip============
>
> Sometimes it works. Othertimes I get the waitpid filed (ok, so I typed
> 'failed' wrong...) message, promptly followed by a kernel oops.

Hmm, you might do something like
while (sys_kill(pid, SIGTERM) != -1)
schedule();

It is ugly because it depends on PID not being reused, but it might
work after all.

Wait. In what context process does cleanup_module() code run? It is
probably not safe to do blocking call in idle task or something
similary bad.

Pavel
PS: Is someone working on audio-for-USB?
--
I'm really pavel@ucw.cz. Look at http://195.113.31.123/~pavel. Pavel
Hi! I'm a .signature virus! Copy me into your ~/.signature, please!

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2005-03-22 13:52    [W:0.095 / U:0.592 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site