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