why is p->state = TASK_UNINTERRUPTIBLE in do_fork()?

From: Tigran Aivazian (tigran@veritas.com)
Date: Tue Jun 20 2000 - 03:57:19 EST


Hi guys,

In kernel/fork.c:do_fork() I see:

        p->did_exec = 0;
        p->swappable = 0;
        p->state = TASK_UNINTERRUPTIBLE;
        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        copy_flags(clone_flags, p);
        p->pid = get_pid(clone_flags);

        /*
         * This is a "shadow run" state. The process
         * is marked runnable, but isn't actually on
         * any run queue yet.. (that happens at the
         * very end).
         */
        p->state = TASK_RUNNING;
        ~~~~~~~~~~~~~~~~~~~~~~~
        p->run_list.next = NULL;
        p->run_list.prev = NULL;

why is the process set to uninterruptible sleep for the short
(atomic) duration until it is set to TASK_RUNNING? I see no reason for
that.

Regards,
Tigran

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



This archive was generated by hypermail 2b29 : Fri Jun 23 2000 - 21:00:19 EST