4 * The contents of this file are subject to the terms of the
5 * Common Development and Distribution License, Version 1.0 only
6 * (the "License"). You may not use this file except in compliance
9 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10 * or http://www.opensolaris.org/os/licensing.
11 * See the License for the specific language governing permissions
12 * and limitations under the License.
14 * When distributing Covered Code, include this CDDL HEADER in each
15 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16 * If applicable, add the following below this CDDL HEADER, with the
17 * fields enclosed by brackets "[]" replaced with your own identifying
18 * information: Portions Copyright [yyyy] [name of copyright owner]
23 * Copyright 2001-2002 Sun Microsystems, Inc. All rights reserved.
24 * Use is subject to license terms.
30 #pragma ident "%Z%%M% %I% %E% SMI"
36 #include <sys/types.h>
41 #define LOOPBACK "loopback"
42 #define DEVRSM "/dev/rsm"
43 #define RSMSEGIDFILE "/etc/rsm/rsm.segmentid"
44 #define RSMSEG_RESERVED "reserved"
46 #define RSM_IMPORT_SEG 1
47 #define RSM_EXPORT_SEG 2
49 #define RSM_MAX_HANDLE_DVMA 0x2000
51 /* This is the default barrier implementation structure */
53 rsmseg_handle_t
*rsmgenbar_seg
;
54 uint16_t rsmgenbar_gen
;
55 rsm_barrier_t
*rsmgenbar_data
;
58 #define RSM_MAX_BUCKETS 128 /* # buckets in the hash table */
59 #define RSM_POLLFD_PER_CHUNK 16 /* # pollfd in each chunk */
61 /* least significant 3 bytes of the fd should be unique enough */
62 #define RSM_POLLFD_HASH(fd) (((fd) ^ ((fd) >> 8) ^ ((fd) >> 16)) % \
66 * pollfd_table maintains a mapping from fd to resource number. It also
67 * provides a mechanism to check if a given fd corresponds to an rsmapi
68 * segment. Entries get added to this table as a result of
69 * rsm_memseg_get_pollfd and removed as a result of rsm_memseg_release_pollfd.
74 }rsm_pollfd_element_t
;
76 typedef struct rsm_pollfd_chunk
{
77 struct rsm_pollfd_chunk
*next
;
79 rsm_pollfd_element_t fdarray
[RSM_POLLFD_PER_CHUNK
];
84 rsm_pollfd_chunk_t
*buckets
[RSM_MAX_BUCKETS
];
88 * The following macros are defined only if the DEBUG flag is enabled
89 * The macro makes use of category and level values defined in rsm.h
90 * and the dbg_printf function defined in rsmlib.c (defined as an
94 #define TRACELOG "/tmp/librsm.log"
95 #define DBPRINTF(msg) dbg_printf msg
101 extern void dbg_printf(int category
, int level
, char *fmt
, ...);
103 typedef int (*rsm_attach_entry_t
)(int, rsm_segops_t
**);
109 #endif /* _RSMLIB_IN_H */