Track startup kthreads as ktasks
authorBarret Rhoden <brho@cs.berkeley.edu>
Mon, 28 Sep 2015 22:11:27 +0000 (18:11 -0400)
committerBarret Rhoden <brho@cs.berkeley.edu>
Thu, 8 Oct 2015 14:29:57 +0000 (10:29 -0400)
commit197ad48943876b8ffe7803a2c1e0f13806dd128d
tree4a66fd7cc7cd8cf5fd29caade49290665f5125e0
parent41aafa9527d18b366104e9b6dfa3c5479d2253df
Track startup kthreads as ktasks

The ktask flag marks whether or not we are a kernel task or a
user-backing kthread (meaning we're executing a syscall or the user is
running).  Parts of the codebase assume you are one or the other, as in
rendez_sleep().  That's probably a correct assumption.

If you call kthread_usleep() before smp_idle(), we'd get in a situation
where we had a kthread (the startup kthread) that was not a ktask (prior
to this commit) and the code that handles aborting syscalls would think
there should be a user syscall associated with the kthread.

Signed-off-by: Barret Rhoden <brho@cs.berkeley.edu>
kern/src/smp.c