85 |
struct ipc_port *port, |
struct ipc_port *port, |
86 |
int msgt, rtmk_port_t *namep); |
int msgt, rtmk_port_t *namep); |
87 |
|
|
88 |
|
/* Copyout right PORT. PORT is destination for a |
89 |
|
message. Name of right is returned in *NAMEP. */ |
90 |
|
|
91 |
|
extern kern_return_t ipc_object_copyout_dest (struct ipc_object *object, |
92 |
|
struct ipc_port *port, |
93 |
|
int msgt_name, |
94 |
|
rtmk_port_t *namep); |
95 |
|
|
96 |
|
|
97 |
|
/* Inserts rights for PORT into OBJECT. MSGT determines |
98 |
|
what type of right we should insert. NAME is the right |
99 |
|
name in OBJECT. If there's already a right for PORT |
100 |
|
in OBJECT, NAME must match that rights name. */ |
101 |
|
|
102 |
|
extern kern_return_t ipc_object_copyout_name (struct ipc_object *object, |
103 |
|
struct ipc_port *port, int msgt, |
104 |
|
rtmk_port_t name); |
105 |
|
|
106 |
/* Copy right named NAME from OBJECT into kernel object space. |
/* Copy right named NAME from OBJECT into kernel object space. |
107 |
MSGT describes what type of right it is. DEALLOCP is true |
MSGT describes what type of right it is. *PORTP holds |
108 |
if *ENTRYP should be deallocated after it is used. */ |
port that right NAME held. */ |
109 |
|
|
110 |
extern kern_return_t ipc_object_copyin (struct ipc_object *object, |
extern kern_return_t ipc_object_copyin (struct ipc_object *object, |
111 |
rtmk_port_t name, |
rtmk_port_t name, |
112 |
int msgt, struct ipc_entry **entryp, |
int msgt, struct ipc_port **portp); |
|
bool *deallocp); |
|
113 |
|
|
114 |
/* Try to locate entry named NAME in OBJECT. Return pointer to |
/* Try to locate entry named NAME in OBJECT. Return pointer to |
115 |
entry structure in ENTRYP if found. Normal kernel return code. */ |
entry structure in ENTRYP if found. Normal kernel return code. */ |
118 |
rtmk_port_t name, |
rtmk_port_t name, |
119 |
struct ipc_entry **entryp); |
struct ipc_entry **entryp); |
120 |
|
|
|
/* Insert rights for port PORT specified by MSGT into OBJECT. |
|
|
NAMEP is the name that we should use. */ |
|
|
|
|
|
extern kern_return_t ipc_object_insert (struct ipc_object *object, |
|
|
struct ipc_port *port, |
|
|
int msgt, rtmk_port_t name); |
|
|
|
|
121 |
/* Remove NAME for OBJECT. Return IPC entry in *ENTRYP. */ |
/* Remove NAME for OBJECT. Return IPC entry in *ENTRYP. */ |
122 |
|
|
123 |
extern kern_return_t ipc_object_remove (struct ipc_object *object, |
extern kern_return_t ipc_object_remove (struct ipc_object *object, |
124 |
struct ipc_entry **entryp, |
struct ipc_entry **entryp, |
125 |
rtmk_port_t name); |
rtmk_port_t name); |
126 |
|
|
127 |
|
/* Allocate entry in IPC object OBJECT. Pointer to entry structure |
128 |
|
is returned in *ENTRYP. Allocated name is returned in *NAMEP. |
129 |
|
|
130 |
|
*ENTRYP is always totaly clean. It is up to the caller to fill |
131 |
|
it with valid data. */ |
132 |
|
extern kern_return_t ipc_entry_alloc (struct ipc_object *object, |
133 |
|
struct ipc_entry **entryp, |
134 |
|
rtmk_port_name_t *namep); |
135 |
|
|
136 |
|
/* Allocate entry in IPC object OBJECT. Pointer to entry structure |
137 |
|
is returned in *ENTRYP. Name of entry is specified by NAME. |
138 |
|
|
139 |
|
*ENTRYP is always totaly clean. It is up to the caller to fill |
140 |
|
it with valid data. */ |
141 |
|
extern kern_return_t ipc_entry_alloc_name (struct ipc_object *object, |
142 |
|
struct ipc_entry **entryp, |
143 |
|
rtmk_port_t name); |
144 |
|
|
145 |
|
/* Deallocate ENTRY (port right name is ENTRY->ie_key) from |
146 |
|
OBJECT. We also remove from reverse-lookup table. After |
147 |
|
this, ENTRY is non-existat (memory freed). */ |
148 |
|
extern kern_return_t ipc_entry_dealloc (struct ipc_object *object, |
149 |
|
struct ipc_entry *entry); |
150 |
|
|
151 |
|
/* Copyin a naked capability, PORT, from the kernel. |
152 |
|
PORT is the capability. MSGT_NAME is transit type. */ |
153 |
|
extern kern_return_t ipc_object_copyin_from_kernel (struct ipc_port *port, |
154 |
|
int msgt_name); |
155 |
|
|
156 |
#endif /* ipc-object.h */ |
#endif /* ipc-object.h */ |