12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- .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 .
|