Właściwy sposób obsługi wątków w jądrze?

Widziałem wszędzie fragmenty rozproszonych informacji, ale nie mogę uzyskać jednej ostatecznej odpowiedzi. Jak wyczyścić wątek zombie w jądrze?

Aby się upewnić i stworzyć ostateczny poprawny sposób obsługi wątków w jądrze, chciałbym zadać to pytanie szerzej.Jak tworzyć, kończyć i czyścić wątek w jądrze Linux?

Do tej pory mam to:

<code>thread_func:
    exited = 0;
    while (!must_exit)
        do stuff
    exited = 1;
    do_exit(0)

init_module:
    must_exit = 0;
    exited = 1;
    kthread_run(thread_func, ...)    /* creates and runs the thread */

cleanup_module:
    must_exit = 1;
    while (!exited)
        set_current_state(TASK_INTERRUPTIBLE);
        msleep(1);
    /* How do I cleanup? */
</code>

Najbliższą rzeczą, jaką znalazłem w rozwiązaniu czyszczącym, jestrelease_task, ale nie znalazłem nigdzie o tym mówić. Wyobrażałem sobie, że funkcje wątku sąkthread_create, kthread_run itp., powinno byćkthread_join lubkthread_wait, ale nie było.do_wait również wydawało się prawdopodobne, ale nie wymagastruct task_struct *.

Ponadto nie jestem pewien, czydo_exit jest dobrym pomysłem, a jeśli to konieczne, koniecznym. Czy ktoś może wymyślić minimalny szkic tego, jak należy utworzyć, zakończyć i wyczyścić kthread?

questionAnswers(1)

yourAnswerToTheQuestion