lkml.org 
[lkml]   [1998]   [Jul]   [14]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
Subject[Q] Creating multiple threads from a module? zombies?
From

Hi

I'm stuck with a problem I don't know how to solve ... if any
kernel guru is so kind? :)

The USB module, when loaded, spawns a thread. This thread sits
there idle doing nothing until it's told to poll a hub or listen to
changes from it. I have no problem creating this thread with
kernel_thread(,,CLONE_FS|CLONE_FILES|CLONE_SIGHAND). Easy. When the
module unloads it exits ok, etc ...
BUT when that thread detects a change in a hub, it spawns yet
another thread which will handle those changes. No problem calling
kernel_thread(,,0), but when the function exits the thread goes
zombie.

Attending to what the docs on kernel_thread() say at
asm/unistd.h:

/*
* This is the mechanism for creating a new kernel thread.
*
* NOTE! Only a kernel-only process(ie the swapper or direct descendants
* who haven't done an "execve()") should use this: it will work within
* a system call from a "real" process, but the process memory space will
* not be free'd until both the parent and the child have exited.
*/
static inline pid_t kernel_thread(int (*fn)(void *), void * arg, unsigned long flags)
{
long retval;
__asm__ __volatile__(
"movl %%esp,%%esi\n\t"
"int $0x80\n\t" /* Linux/i386 system call */
.
.
.
It clearly seems I'm doing the second thing (call form a
"real" process within a syscall), so it even sounds logical what's
happening.

My question is: is there anyway to get rid of the zombies?
(when polling, the thread is created each three seconds to do the
polling, and that's a lot of zombie processes to care about).

Or better, what am I doing wrong? I used kernel_thread()
because I need to share the memory spaces ...

TIA! :)

--

Linux-USB! http://peloncho.fis.ucm.es/~inaky/USB.html -
-
Inaky Perez Gonzalez -- PGP pubkey fingerprint -
inaky@peloncho.fis.ucm.es -- 8E 34 3A 62 64 99 E2 44 -
http://peloncho.fis.ucm.es/~inaky -- AD 7B 30 D9 DD FF 3E 4C -
--------------------------------- -- ----------------------- -
The loneliness of the long distance runner .....
-
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.altern.org/andrebalsa/doc/lkml-faq.html

\
 
 \ /
  Last update: 2005-03-22 13:43    [from the cache]
©2003-2011 Jasper Spaans