SCPs can sleep on events (XCC)
authorBarret Rhoden <brho@cs.berkeley.edu>
Fri, 16 Mar 2012 19:39:23 +0000 (12:39 -0700)
committerBarret Rhoden <brho@cs.berkeley.edu>
Fri, 16 Mar 2012 19:39:23 +0000 (12:39 -0700)
commit43c4b076827d161612c8a352c149df50063790df
tree0a02a05df626cc0c8198bb21a462908c51a6146e
parentdc57679abc8ea816cb06e8d6723ac15703941e72
SCPs can sleep on events (XCC)

If single-core processes yield that aren't 'being nice', they will block
waiting for an event.  Otherwise, the process is simply giving up the
processor for someone else, even though it has work to do.

The meaning of being_nice differs between SCPs and MCPs.  MCPs will
never give up if they have work to do, unless they think a preemption is
coming in.  Might consider getting rid of the whole SCP 'sched_yield'
approach (arguably, it's the kernel's job) for _Ss, but whatever.

Rebuild your cross compiler, making sure to replace sched_yield.c in
your glibc directory.  Otherwise, sched_yielders (like busybox) will
accidentally block.
kern/src/event.c
kern/src/kthread.c
kern/src/process.c
tools/compilers/gcc-glibc/glibc-2.14.1-ros/sysdeps/ros/sched_yield.c