¿Manera adecuada de manejar los hilos en el núcleo?

He visto fragmentos de información dispersa por todas partes, pero parece que no puedo llegar a una respuesta final. ¿Cómo se limpia un hilo de zombie en el núcleo?

Solo para asegurarnos, y para producir una forma correcta final de manejar los hilos en el kernel, me gustaría hacer esta pregunta de manera más amplia.¿Cómo crear, terminar y limpiar un hilo en el kernel de Linux?

Lo que tengo hasta ahora es esto:

<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>

Lo más cercano que he encontrado a la solución de limpieza esrelease_task, pero no encontré ningún lado hablando de eso. Me lo imaginaba ya que las funciones del hilo sonkthread_create, kthread_run etc, debe haber unkthread_join okthread_wait, pero no hubodo_wait También parecía probable, pero no toma unstruct task_struct *.

Además, no estoy seguro sido_exit Es una buena idea, o si es necesario. ¿Alguien puede, por favor, hacer un bosquejo mínimo de cómo se debe crear, terminar y limpiar un kthread?

Respuestas a la pregunta(1)

Su respuesta a la pregunta