FreeBSD/Linux Kernel Cross Reference
sys/ipc/ipc_pset.h
1 /*
2 * Mach Operating System
3 * Copyright (c) 1993,1991,1990,1989 Carnegie Mellon University
4 * All Rights Reserved.
5 *
6 * Permission to use, copy, modify and distribute this software and its
7 * documentation is hereby granted, provided that both the copyright
8 * notice and this permission notice appear in all copies of the
9 * software, derivative works or modified versions, and any portions
10 * thereof, and that both notices appear in supporting documentation.
11 *
12 * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
13 * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
14 * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
15 *
16 * Carnegie Mellon requests users of this software to return to
17 *
18 * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
19 * School of Computer Science
20 * Carnegie Mellon University
21 * Pittsburgh PA 15213-3890
22 *
23 * any improvements or extensions that they make and grant Carnegie Mellon
24 * the rights to redistribute these changes.
25 */
26 /*
27 * HISTORY
28 * $Log: ipc_pset.h,v $
29 * Revision 2.7 93/11/17 17:00:59 dbg
30 * Added ANSI function prototypes.
31 * [93/09/23 dbg]
32 *
33 * Revision 2.6 91/10/09 16:10:13 af
34 * Added (unconditional) ipc_pset_print declaration.
35 * [91/09/02 rpd]
36 *
37 * Revision 2.5 91/05/14 16:35:58 mrt
38 * Correcting copyright
39 *
40 * Revision 2.4 91/02/05 17:23:20 mrt
41 * Changed to new Mach copyright
42 * [91/02/01 15:50:34 mrt]
43 *
44 * Revision 2.3 90/11/05 14:29:57 rpd
45 * Added ipc_pset_reference, ipc_pset_release.
46 * [90/10/29 rpd]
47 *
48 * Revision 2.2 90/06/02 14:51:23 rpd
49 * Created for new IPC.
50 * [90/03/26 21:02:09 rpd]
51 *
52 */
53 /*
54 * File: ipc/ipc_pset.h
55 * Author: Rich Draves
56 * Date: 1989
57 *
58 * Definitions for port sets.
59 */
60
61 #ifndef _IPC_IPC_PSET_H_
62 #define _IPC_IPC_PSET_H_
63
64 #include <mach/port.h>
65 #include <mach/kern_return.h>
66 #include <ipc/ipc_types.h>
67 #include <ipc/ipc_object.h>
68 #include <ipc/ipc_mqueue.h>
69
70 typedef struct ipc_pset {
71 struct ipc_object ips_object;
72
73 mach_port_t ips_local_name;
74 struct ipc_mqueue ips_messages;
75 } *ipc_pset_t;
76
77 #define ips_references ips_object.io_references
78
79 #define IPS_NULL ((ipc_pset_t) IO_NULL)
80
81 #define ips_active(pset) io_active(&(pset)->ips_object)
82 #define ips_lock(pset) io_lock(&(pset)->ips_object)
83 #define ips_lock_try(pset) io_lock_try(&(pset)->ips_object)
84 #define ips_unlock(pset) io_unlock(&(pset)->ips_object)
85 #define ips_check_unlock(pset) io_check_unlock(&(pset)->ips_object)
86 #define ips_reference(pset) io_reference(&(pset)->ips_object)
87 #define ips_release(pset) io_release(&(pset)->ips_object)
88
89 extern kern_return_t
90 ipc_pset_alloc(ipc_space_t, mach_port_t *, ipc_pset_t *);
91
92 extern kern_return_t
93 ipc_pset_alloc_name(ipc_space_t, mach_port_t, ipc_pset_t *);
94
95 extern void
96 ipc_pset_add(ipc_pset_t, ipc_port_t);
97
98 extern void
99 ipc_pset_remove(ipc_pset_t, ipc_port_t);
100
101 extern kern_return_t
102 ipc_pset_move(ipc_space_t, ipc_port_t, ipc_pset_t);
103
104 extern void
105 ipc_pset_destroy(ipc_pset_t);
106
107 #define ipc_pset_reference(pset) \
108 ipc_object_reference(&(pset)->ips_object)
109
110 #define ipc_pset_release(pset) \
111 ipc_object_release(&(pset)->ips_object)
112
113 extern void
114 ipc_pset_print(ipc_pset_t);
115
116 #endif /* _IPC_IPC_PSET_H_ */
Cache object: e96c5b1ec925980bdabf9569e53d8172
|