1 /*
2 * Mach Operating System
3 * Copyright (c) 1993,1992,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_kobject.h,v $
29 * Revision 2.10 93/11/17 17:10:50 dbg
30 * Added IKOT_TIMER. Added ANSI function prototypes. Changed
31 * ipc_kobject_t to a generic pointer (void *).
32 * [93/02/03 dbg]
33 *
34 * Revision 2.9 93/01/14 17:34:30 danner
35 * ipc_kobject_t is casted sometimes to a pointer.
36 * [92/07/24 af]
37 *
38 * Revision 2.8 92/03/10 16:26:31 jsb
39 * Added IKOT_XMM_{OBJECT,KERNEL,REPLY} and IKOT_PAGER_TERMINATING.
40 * [92/03/07 08:25:33 jsb]
41 *
42 * Revision 2.7 92/01/14 16:44:52 rpd
43 * Added IKOT_PAGING_NAME.
44 * [91/12/28 rpd]
45 *
46 * Revision 2.6 91/08/28 11:14:31 jsb
47 * Add support for using page lists with devices. Split the macro
48 * that says whether to use page lists into a macro that says whether
49 * to use them (vm_page_list) and a macro that says whether the pages
50 * should be stolen (vm_page_steal).
51 * [91/07/31 15:05:17 dlb]
52 *
53 * Revision 2.5 91/07/01 08:24:58 jsb
54 * For NORMA_VM: added IKOT_XMM_PAGER, for memory_objects mapped only
55 * by other kernels.
56 *
57 * From David Black at OSF: added ipc_kobject_vm_special.
58 * [91/06/29 14:33:34 jsb]
59 *
60 * Revision 2.4 91/05/14 16:42:08 mrt
61 * Correcting copyright
62 *
63 * Revision 2.3 91/02/05 17:26:40 mrt
64 * Changed to new Mach copyright
65 * [91/02/01 16:12:58 mrt]
66 *
67 * Revision 2.2 90/06/02 14:54:12 rpd
68 * Created for new IPC.
69 * [90/03/26 23:47:04 rpd]
70 *
71 */
72 /*
73 * File: kern/ipc_kobject.h
74 * Author: Rich Draves
75 * Date: 1989
76 *
77 * Declarations for letting a port represent a kernel object.
78 */
79
80 #ifndef _KERN_IPC_KOBJECT_H_
81 #define _KERN_IPC_KOBJECT_H_
82
83 #include <mach/machine/vm_types.h>
84
85 typedef void * ipc_kobject_t; /* generic pointer */
86
87 #define IKO_NULL ((ipc_kobject_t) 0)
88
89 typedef unsigned int ipc_kobject_type_t;
90
91 #define IKOT_NONE 0
92 #define IKOT_THREAD 1
93 #define IKOT_TASK 2
94 #define IKOT_HOST 3
95 #define IKOT_HOST_PRIV 4
96 #define IKOT_PROCESSOR 5
97 #define IKOT_PSET 6
98 #define IKOT_PSET_NAME 7
99 #define IKOT_PAGER 8
100 #define IKOT_PAGER_TERMINATING 9
101 #define IKOT_PAGING_REQUEST 10
102 #define IKOT_PAGING_NAME 11
103 #define IKOT_DEVICE 12
104 #define IKOT_XMM_PAGER 13
105 #define IKOT_XMM_OBJECT 14
106 #define IKOT_XMM_KERNEL 15
107 #define IKOT_XMM_REPLY 16
108 #define IKOT_TIMER 17
109
110 /*
111 * Define types of kernel objects that use page lists instead
112 * of entry lists for copyin of out of line memory.
113 */
114
115 #define ipc_kobject_vm_page_list(ikot) \
116 ((ikot == IKOT_PAGING_REQUEST) || (ikot == IKOT_DEVICE))
117
118 #define ipc_kobject_vm_page_steal(ikot) (ikot == IKOT_PAGING_REQUEST)
119
120 /*
121 * External routines.
122 */
123 struct ipc_kmsg;
124 struct ipc_port;
125
126 extern struct ipc_kmsg *
127 ipc_kobject_server(struct ipc_kmsg *);
128
129 extern void
130 ipc_kobject_set(
131 struct ipc_port *port,
132 ipc_kobject_t kobject,
133 ipc_kobject_type_t type);
134
135 extern void
136 ipc_kobject_destroy(
137 struct ipc_port *port);
138
139 #define null_conversion(port) (port)
140
141 #endif /* _KERN_IPC_KOBJECT_H_ */
Cache object: e609170cb12e989b44bbbd4969682c77
|