FreeBSD/Linux Kernel Cross Reference
sys/norma/ipc_node.h
1 /*
2 * Mach Operating System
3 * Copyright (c) 1991 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_node.h,v $
29 * Revision 2.4 92/03/10 16:28:03 jsb
30 * Merged in norma branch changes as of NORMA_MK7.
31 * [92/03/09 12:50:06 jsb]
32 *
33 * Revision 2.3.2.2 92/01/09 18:45:45 jsb
34 * Use MAX_SPECIAL_KERNEL_ID, not MAX_SPECIAL_ID, in IP_NORMA_SPECIAL.
35 * [92/01/04 18:26:48 jsb]
36 *
37 * Revision 2.3.2.1 92/01/03 16:37:54 jsb
38 * Added IP_NORMA_{MAX_LID,SPECIAL} macros, and declaration
39 * of host_special_port array.
40 * [91/12/24 14:25:35 jsb]
41 *
42 * Revision 2.3 91/12/13 14:00:49 jsb
43 * Moved MAX_SPECIAL_ID to mach/norma_special_ports.h.
44 *
45 * Revision 2.2 91/11/14 16:46:02 rpd
46 * Created.
47 *
48 */
49 /*
50 * File: norma/ipc_node.h
51 * Author: Joseph S. Barrera III
52 * Date: 1991
53 *
54 * Definitions for norma nodes.
55 */
56
57 #ifndef _NORMA_IPC_NODE_H_
58 #define _NORMA_IPC_NODE_H_
59
60 #include <mach/norma_special_ports.h>
61
62 /*
63 * A uid (unique id) = node + lid (local id)
64 * We embed the node id in the uid because receive rights rarely move.
65 */
66
67 /*
68 * 12 bits for node -> max 4096 nodes
69 * 20 bits for local id -> max 1,048,575 exported ports per node
70 *
71 * (Byte allignment and intuitive node:lid placement aids debugging)
72 */
73 #define IP_NORMA_NODE(uid) (((unsigned long)(uid) >> 20) & 0x00000fff)
74 #define IP_NORMA_LID(uid) ((unsigned long)(uid) & 0x000fffff)
75 #define IP_NORMA_UID(node, lid) (((node) << 20) | (lid))
76
77 #define IP_NORMA_MAX_LID IP_NORMA_LID(0xffffffff)
78 #define IP_NORMA_SPECIAL(uid) (IP_NORMA_LID(uid) > 0 && \
79 IP_NORMA_LID(uid) <= MAX_SPECIAL_KERNEL_ID)
80
81 extern ipc_port_t host_special_port[MAX_SPECIAL_ID];
82
83 #endif _NORMA_IPC_NODE_H_
Cache object: cc45fbca5b4440496bea075ff651f5d4
|