jehanne/sys/src/kern
Giacomo Tesio 1bc08b7631 kernel: rendezvous(~0, ...) unconditionally blocks
This commit introduce a special rendezvous point at (void*)~0 that
cannot be reached by any process, since it's not added to the
rendezvous group.

This turns the rendezvous syscall to a cheap way to block until
either a note or a wakeup from awake(2) occurs.

This new feature is used in libc's sleep: the test qa/kern/fork_chain
has shown that using a stack address as rendezvous point is not safe enougth
for sleep, since two different process forked from the same function can
call sleep with the same base pointer. This lead the wakeup variable in
jehanne_sleep to have the same address on both process.

TODO add a test that show this behaviour in the old code.
2017-07-21 01:49:00 +02:00
..
386 libc: introduce "jehanne_" namespace 2017-04-19 23:48:21 +02:00
amd64 kernel: fix ancient bug in GDT initialization 2017-06-08 04:03:32 +02:00
boot libc: introduce "jehanne_" namespace 2017-04-19 23:48:21 +02:00
ip kern/ip/gre: fix CID 156224: Uninitialized scalar variable 2017-04-25 15:53:20 +02:00
port kernel: rendezvous(~0, ...) unconditionally blocks 2017-07-21 01:49:00 +02:00
.gitignore first usable version of kernel and commands 2016-11-26 03:49:29 +01:00