1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60#ifndef _IPC_IPC_RIGHT_H_
61#define _IPC_IPC_RIGHT_H_
62
63#include <mach/boolean.h>
64#include <mach/kern_return.h>
65#include <ipc/ipc_port.h>
66#include <ipc/ipc_entry.h>
67
68#define ipc_right_lookup_read ipc_right_lookup_write
69#define ipc_right_lookup_two_read ipc_right_lookup_two_write
70
71
72extern kern_return_t ipc_right_lookup_write(
73 ipc_space_t space,
74 mach_port_name_t name,
75 ipc_entry_t *entryp);
76
77
78extern kern_return_t ipc_right_lookup_two_write(
79 ipc_space_t space,
80 mach_port_name_t name1,
81 ipc_entry_t *entryp1,
82 mach_port_name_t name2,
83 ipc_entry_t *entryp2);
84
85
86extern boolean_t ipc_right_reverse(
87 ipc_space_t space,
88 ipc_object_t object,
89 mach_port_name_t *namep,
90 ipc_entry_t *entryp);
91
92
93extern kern_return_t ipc_right_dnrequest(
94 ipc_space_t space,
95 mach_port_name_t name,
96 boolean_t immediate,
97 ipc_port_t notify,
98 ipc_port_t *previousp);
99
100
101extern ipc_port_t ipc_right_dncancel(
102 ipc_space_t space,
103 ipc_port_t port,
104 mach_port_name_t name,
105 ipc_entry_t entry);
106
107#define ipc_right_dncancel_macro(space, port, name, entry) \
108 ((entry->ie_request == 0) ? IP_NULL : \
109 ipc_right_dncancel((space), (port), (name), (entry)))
110
111
112extern boolean_t ipc_right_inuse(
113 ipc_space_t space,
114 mach_port_name_t name,
115 ipc_entry_t entry);
116
117
118extern boolean_t ipc_right_check(
119 ipc_space_t space,
120 ipc_port_t port,
121 mach_port_name_t name,
122 ipc_entry_t entry);
123
124
125extern void ipc_right_clean(
126 ipc_space_t space,
127 mach_port_name_t name,
128 ipc_entry_t entry);
129
130
131extern kern_return_t ipc_right_destroy(
132 ipc_space_t space,
133 mach_port_name_t name,
134 ipc_entry_t entry);
135
136
137extern kern_return_t ipc_right_dealloc(
138 ipc_space_t space,
139 mach_port_name_t name,
140 ipc_entry_t entry);
141
142
143extern kern_return_t ipc_right_delta(
144 ipc_space_t space,
145 mach_port_name_t name,
146 ipc_entry_t entry,
147 mach_port_right_t right,
148 mach_port_delta_t delta);
149
150
151extern kern_return_t ipc_right_info(
152 ipc_space_t space,
153 mach_port_name_t name,
154 ipc_entry_t entry,
155 mach_port_type_t *typep,
156 mach_port_urefs_t *urefsp);
157
158
159extern boolean_t ipc_right_copyin_check(
160 ipc_space_t space,
161 mach_port_name_t name,
162 ipc_entry_t entry,
163 mach_msg_type_name_t msgt_name);
164
165
166extern kern_return_t ipc_right_copyin(
167 ipc_space_t space,
168 mach_port_name_t name,
169 ipc_entry_t entry,
170 mach_msg_type_name_t msgt_name,
171 boolean_t deadok,
172 ipc_object_t *objectp,
173 ipc_port_t *sorightp);
174
175
176extern void ipc_right_copyin_undo(
177 ipc_space_t space,
178 mach_port_name_t name,
179 ipc_entry_t entry,
180 mach_msg_type_name_t msgt_name,
181 ipc_object_t object,
182 ipc_port_t soright);
183
184
185extern kern_return_t ipc_right_copyin_two(
186 ipc_space_t space,
187 mach_port_name_t name,
188 ipc_entry_t entry,
189 ipc_object_t *objectp,
190 ipc_port_t *sorightp);
191
192
193extern kern_return_t ipc_right_copyout(
194 ipc_space_t space,
195 mach_port_name_t name,
196 ipc_entry_t entry,
197 mach_msg_type_name_t msgt_name,
198 boolean_t overflow,
199 ipc_object_t object);
200
201
202extern kern_return_t ipc_right_rename(
203 ipc_space_t space,
204 mach_port_name_t oname,
205 ipc_entry_t oentry,
206 mach_port_name_t nname,
207 ipc_entry_t nentry);
208
209#endif
210