aboutsummaryrefslogtreecommitdiff
path: root/man/man3/rendezvous.3
diff options
context:
space:
mode:
Diffstat (limited to 'man/man3/rendezvous.3')
-rw-r--r--man/man3/rendezvous.357
1 files changed, 57 insertions, 0 deletions
diff --git a/man/man3/rendezvous.3 b/man/man3/rendezvous.3
new file mode 100644
index 00000000..54cb6b6d
--- /dev/null
+++ b/man/man3/rendezvous.3
@@ -0,0 +1,57 @@
+.TH RENDEZVOUS 3
+.SH NAME
+rendezvous \- user level process synchronization
+.SH SYNOPSIS
+.B #include <u.h>
+.br
+.B #include <libc.h>
+.PP
+.B
+ulong rendezvous(ulong tag, ulong 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 segattach (2),
+.IR fork (2)
+.SH DIAGNOSTICS
+Sets
+.IR errstr .