TH RENDEZVOUS 2
SH NAME
rendezvous \- user level process synchronization
SH SYNOPSIS
B #include <u.h>
br
B #include <libc.h>
PP
B
void* rendezvous(void* tag, void* value)
SH DESCRIPTION
The rendezvous system call allows two processes to synchronize and
exchange a value.
In conjunction with the shared memory system calls
(see
IR segattach (2)
and
IR fork (2)),
it enables parallel programs to control their scheduling.
PP
Two processes wishing to synchronize call
I rendezvous
with a common
IR tag ,
typically an address in
memory they share.
One process will arrive at the rendezvous first;
it suspends execution until a second arrives.
When a second process meets the rendezvous
the
I value
arguments are exchanged between the processes and returned
as the result of the respective
I rendezvous
system calls.
Both processes are awakened when
the rendezvous succeeds.
PP
The set of tag values which two processes may use to rendezvous\(emtheir tag space\(emis
inherited when a process forks, unless
B RFREND
is set in the argument to
BR rfork ;
see
IR fork (2).
PP
If a rendezvous is interrupted the return value is
BR ~0 ,
so that value should not be used in normal communication.
SH SOURCE
B /sys/src/libc/9syscall
SH SEE ALSO
IR fork (2),
IR lock (2),
IR segattach (2)
SH DIAGNOSTICS
Sets
IR errstr .