We have far too much ifdef crap. We appear to have more build options than
users. I've stripped out some of them in my tree (NOFS, SUID, CORE DUMP)
and I'll clean up more as I go so we actually have one OS not one OS each.
I've rewritten the wait queue code. We now do it sort of V7 style. You can
wait on one thing only (except for select see later)
current->waitpt
is the object you are waiting on (a waitqueue is now a char but could be
removed as a concept eventually). The kernel loops through each task (hell
we only have 30 or so ;)) and wakes those with matching ptr
If the pointer is to the select wait then we instead check if the object
we are waiting hashed into 16 buckets lands in a marked bucket. If so we
wake the task (and if the hashing is wrong it will sleep again). 16 may be
too low but 32 or 64 should work nicely
The kernel got smaller in the process and you no longer need a good computing
head to understand kernel/sleepwake.c
Alan