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    [W:0.022 / U:31.940 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site