59 lines
1.3 KiB
Text
59 lines
1.3 KiB
Text
|
.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 .
|