summaryrefslogtreecommitdiff
path: root/ipc/mach_port.h
blob: c93c48dfebe675809a4613984439da56b42da7de (plain)
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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
/*
 * Mach Port Functions.
 * Copyright (C) 2008 Free Software Foundation, Inc.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2, or (at your option)
 * any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
 *
 *	Author: Barry deFreese.
 */
/*
 *     Mach port functions.
 *
 */

#ifndef _IPC_MACH_PORT_H_
#define _IPC_MACH_PORT_H_

#include <sys/types.h>
#include <ipc/ipc_types.h>
#include <ipc/ipc_entry.h>

#if	MACH_KDB
void db_debug_port_references (boolean_t enable);
#endif	/* MACH_KDB */

/* RPCs */

extern kern_return_t
mach_port_allocate_name (
    ipc_space_t space,
    mach_port_right_t right,
    mach_port_name_t name);

extern kern_return_t
mach_port_allocate (
    ipc_space_t space,
    mach_port_right_t right,
    mach_port_name_t *namep);

extern kern_return_t
mach_port_destroy(
    ipc_space_t space,
    mach_port_name_t name);

extern kern_return_t
mach_port_deallocate(
    ipc_space_t space,
    mach_port_name_t name);

extern kern_return_t
mach_port_insert_right(
    ipc_space_t     space,
    mach_port_name_t     name,
    ipc_port_t      poly,
    mach_msg_type_name_t    polyPoly);

kern_return_t
mach_port_get_receive_status(
	ipc_space_t 		space,
	mach_port_name_t 	name,
	mach_port_status_t 	*statusp);

kern_return_t
mach_port_names(
	ipc_space_t		space,
	mach_port_name_t	**namesp,
	mach_msg_type_number_t	*namesCnt,
	mach_port_type_t	**typesp,
	mach_msg_type_number_t	*typesCnt);

kern_return_t
mach_port_type(
	ipc_space_t		space,
	mach_port_name_t	name,
	mach_port_type_t	*typep);

kern_return_t
mach_port_rename(
	ipc_space_t		space,
	mach_port_name_t	oname,
	mach_port_name_t	nname);

kern_return_t
mach_port_get_refs(
	ipc_space_t		space,
	mach_port_name_t	name,
	mach_port_right_t	right,
	mach_port_urefs_t	*urefsp);

kern_return_t
mach_port_mod_refs(
	ipc_space_t		space,
	mach_port_name_t	name,
	mach_port_right_t	right,
	mach_port_delta_t	delta);

kern_return_t
mach_port_set_qlimit(
	ipc_space_t 		space,
	mach_port_name_t 	name,
	mach_port_msgcount_t 	qlimit);

kern_return_t
mach_port_set_mscount(
	ipc_space_t		space,
	mach_port_name_t	name,
	mach_port_mscount_t	mscount);

kern_return_t
mach_port_set_seqno(
	ipc_space_t		space,
	mach_port_name_t	name,
	mach_port_seqno_t	seqno);

kern_return_t
mach_port_get_set_status(
	ipc_space_t			space,
	mach_port_name_t		name,
	mach_port_name_t		**members,
	mach_msg_type_number_t		*membersCnt);

kern_return_t
mach_port_move_member(
	ipc_space_t	space,
	mach_port_name_t	member,
	mach_port_name_t	after);

kern_return_t
mach_port_request_notification(
	ipc_space_t		space,
	mach_port_name_t		name,
	mach_msg_id_t		id,
	mach_port_mscount_t	sync,
	ipc_port_t		notify,
	ipc_port_t		*previousp);

kern_return_t
mach_port_extract_right(
	ipc_space_t		space,
	mach_port_name_t	name,
	mach_msg_type_name_t	msgt_name,
	ipc_port_t		*poly,
	mach_msg_type_name_t	*polyPoly);

kern_return_t
mach_port_set_protected_payload(
	ipc_space_t		space,
	mach_port_name_t	name,
	unsigned long		payload);

kern_return_t
mach_port_clear_protected_payload(
	ipc_space_t		space,
	mach_port_name_t	name);

/* End of RPCs */

#endif /* _IPC_MACH_PORT_H_ */