Blame


1 cfa37a7b 2004-04-10 devnull .TH RENDEZVOUS 3
2 cfa37a7b 2004-04-10 devnull .SH NAME
3 cfa37a7b 2004-04-10 devnull rendezvous \- user level process synchronization
4 cfa37a7b 2004-04-10 devnull .SH SYNOPSIS
5 cfa37a7b 2004-04-10 devnull .B #include <u.h>
6 cfa37a7b 2004-04-10 devnull .br
7 cfa37a7b 2004-04-10 devnull .B #include <libc.h>
8 cfa37a7b 2004-04-10 devnull .PP
9 cfa37a7b 2004-04-10 devnull .B
10 cfa37a7b 2004-04-10 devnull ulong rendezvous(ulong tag, ulong value)
11 cfa37a7b 2004-04-10 devnull .SH DESCRIPTION
12 cfa37a7b 2004-04-10 devnull The rendezvous system call allows two processes to synchronize and
13 cfa37a7b 2004-04-10 devnull exchange a value.
14 cfa37a7b 2004-04-10 devnull In conjunction with the shared memory system calls
15 cfa37a7b 2004-04-10 devnull (see
16 bf8a59fa 2004-04-11 devnull .IR segattach (3)
17 cfa37a7b 2004-04-10 devnull and
18 bf8a59fa 2004-04-11 devnull .IR fork (3)),
19 cfa37a7b 2004-04-10 devnull it enables parallel programs to control their scheduling.
20 cfa37a7b 2004-04-10 devnull .PP
21 cfa37a7b 2004-04-10 devnull Two processes wishing to synchronize call
22 cfa37a7b 2004-04-10 devnull .I rendezvous
23 cfa37a7b 2004-04-10 devnull with a common
24 cfa37a7b 2004-04-10 devnull .IR tag ,
25 cfa37a7b 2004-04-10 devnull typically an address in
26 cfa37a7b 2004-04-10 devnull memory they share.
27 cfa37a7b 2004-04-10 devnull One process will arrive at the rendezvous first;
28 cfa37a7b 2004-04-10 devnull it suspends execution until a second arrives.
29 cfa37a7b 2004-04-10 devnull When a second process meets the rendezvous
30 cfa37a7b 2004-04-10 devnull the
31 cfa37a7b 2004-04-10 devnull .I value
32 cfa37a7b 2004-04-10 devnull arguments are exchanged between the processes and returned
33 cfa37a7b 2004-04-10 devnull as the result of the respective
34 cfa37a7b 2004-04-10 devnull .I rendezvous
35 cfa37a7b 2004-04-10 devnull system calls.
36 cfa37a7b 2004-04-10 devnull Both processes are awakened when
37 cfa37a7b 2004-04-10 devnull the rendezvous succeeds.
38 cfa37a7b 2004-04-10 devnull .PP
39 cfa37a7b 2004-04-10 devnull The set of tag values which two processes may use to rendezvous\(emtheir tag space\(emis
40 cfa37a7b 2004-04-10 devnull inherited when a process forks, unless
41 cfa37a7b 2004-04-10 devnull .B RFREND
42 cfa37a7b 2004-04-10 devnull is set in the argument to
43 cfa37a7b 2004-04-10 devnull .BR rfork ;
44 cfa37a7b 2004-04-10 devnull see
45 bf8a59fa 2004-04-11 devnull .IR fork (3).
46 cfa37a7b 2004-04-10 devnull .PP
47 cfa37a7b 2004-04-10 devnull If a rendezvous is interrupted the return value is
48 cfa37a7b 2004-04-10 devnull .BR ~0 ,
49 cfa37a7b 2004-04-10 devnull so that value should not be used in normal communication.
50 cfa37a7b 2004-04-10 devnull .SH SOURCE
51 b5fdffee 2004-04-19 devnull .B /usr/local/plan9/src/libc/9syscall
52 cfa37a7b 2004-04-10 devnull .SH SEE ALSO
53 bf8a59fa 2004-04-11 devnull .IR segattach (3),
54 bf8a59fa 2004-04-11 devnull .IR fork (3)
55 cfa37a7b 2004-04-10 devnull .SH DIAGNOSTICS
56 cfa37a7b 2004-04-10 devnull Sets
57 cfa37a7b 2004-04-10 devnull .IR errstr .