4 % * The contents of this file are subject to the terms of the
5 % * Common Development and Distribution License (the "License").
6 % * You may not use this file except in compliance with the License.
8 % * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9 % * or http://www.opensolaris.org/os/licensing.
10 % * See the License for the specific language governing permissions
11 % * and limitations under the License.
13 % * When distributing Covered Code, include this CDDL HEADER in each
14 % * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15 % * If applicable, add the following below this CDDL HEADER, with the
16 % * fields enclosed by brackets "[]" replaced with your own identifying
17 % * information: Portions Copyright [yyyy] [name of copyright owner]
23 % * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
24 % * Use is subject to license terms.
28 %/* get timeval32 definition */
29 %#include <sys/types32.h>
33 %#error "Compiling kernel file rpcgened without _KERNEL define."
36 %#include <sys/dditypes.h>
41 %xdr_uint_t(XDR *xdrs, uint_t *objp)
43 % if (!xdr_u_int(xdrs, (u_int *)objp))
48 %xdr_ushort_t(XDR *xdrs, ushort_t *objp)
50 % if (!xdr_u_short(xdrs, (u_short *)objp))
55 %xdr_dev_t(XDR *xdrs, dev_t *objp)
57 % if (!xdr_u_int(xdrs, (u_int *)objp))
62 %xdr_dev32_t(XDR *xdrs, dev32_t *objp)
64 % if (!xdr_u_int(xdrs, (u_int *)objp))
69 %xdr_md_dev64_t(XDR *xdrs, md_dev64_t *objp)
71 % if (!xdr_u_longlong_t(xdrs, objp))
76 %xdr_size_t(XDR *xdrs, size_t *objp)
78 % if (!xdr_u_int(xdrs, (u_int *) objp))
83 %xdr_daddr_t(XDR *xdrs, daddr_t *objp)
85 % if (!xdr_int(xdrs, (int *) objp))
90 %xdr_daddr32_t(XDR *xdrs, daddr32_t *objp)
92 % if (!xdr_int(xdrs, (int *) objp))
97 %xdr_diskaddr_t(XDR *xdrs, diskaddr_t *objp)
99 % if (!xdr_u_longlong_t(xdrs, objp))
104 %xdr_ddi_devid_t(XDR *xdrs, ddi_devid_t *objp)
106 % /* device ids not supported for non-local sets */
110 %xdr_off_t(XDR *xdrs, off_t *objp)
112 % if (!xdr_int(xdrs, (int *) objp))
117 %xdr_timeval(XDR *xdrs, struct timeval *objp)
119 % if (!xdr_int(xdrs, (int *)&objp->tv_sec))
121 % if (!xdr_int(xdrs, (int *)&objp->tv_usec))
127 %xdr_md_timeval32_t(XDR *xdrs, md_timeval32_t *objp)
129 % if (!xdr_int(xdrs, &objp->tv_sec))
131 % if (!xdr_int(xdrs, &objp->tv_usec))
139 %xdr_timeval(XDR *xdrs, struct timeval *objp)
141 % struct timeval32 tv32;
142 % if (xdrs->x_op == XDR_ENCODE)
143 % TIMEVAL_TO_TIMEVAL32(&tv32, objp);
144 % if (!xdr_int(xdrs, &tv32.tv_sec))
146 % if (!xdr_int(xdrs, &tv32.tv_usec))
148 % if (xdrs->x_op == XDR_DECODE)
149 % TIMEVAL32_TO_TIMEVAL(objp, &tv32);
154 %xdr_timeval(XDR *xdrs, struct timeval *objp)
156 % if (!xdr_int(xdrs, (int *)&objp->tv_sec))
158 % if (!xdr_int(xdrs, (int *)&objp->tv_usec))
163 #endif /* !_KERNEL */
166 %xdr_minor_t(XDR *xdrs, minor_t *objp)
168 % if (!xdr_u_int(xdrs, (u_int *)objp))
174 %xdr_clnt_stat(XDR *xdrs, enum clnt_stat *objp)
176 % if (!xdr_enum(xdrs, (enum_t *)objp))
187 const MD_MAX_SETNAME = 50;
188 const MD_MAX_NODENAME = 63;
189 const MAX_HOST_ADDRS = 3;
190 const MD_MAX_MNNODENAME = 256;
192 const MED_MAX_HOSTS = 3;
193 const MED_DEF_HOSTS = 3;
195 const MD_MAXSIDES = 8;
196 const MD_LOCAL_SET = 0;
198 const MD_MNMAXSIDES = 128;
199 const MDDB_SN_LEN = 12;
200 const MDDB_MINOR_NAME_MAX = 32;
201 const MD_MAXDRVNM = 16;
203 const MD_MAX_BLKS_FOR_SMALL_DEVS = 2147483647;
204 %#define MD_MAX_BLKS_FOR_EXTVTOC 4294967295ULL
206 %/* Minimum number of metadevice database replicas needed */
207 const MD_MINREPLICAS = 1;
209 %#define MD_MAX_SETNAME_PLUS_1 (MD_MAX_SETNAME + 1)
210 %#define MD_MAX_NODENAME_PLUS_1 (MD_MAX_NODENAME + 1)
211 %#define MD_MAX_MNNODENAME_PLUS_1 (MD_MAX_MNNODENAME + 1)
213 %#define MD_SET_BAD ((set_t)~0UL)
215 %#define MD_LOCAL_NAME ""
217 %#define MD_SIDEWILD ((side_t)~0UL)
219 %#define MD_KEYWILD ((mdkey_t)0)
220 %#define MD_KEYBAD ((mdkey_t)~0UL)
221 %#define MD_UNITBAD ((unit_t)~0UL)
222 %#define MD_HSPID_WILD ((hsp_t)~0UL)
224 %/* Maximum length of a metadevice name */
225 %#define MD_MAX_SIDENAME_LEN (MD_MAXDRVNM + MD_MAX_SETNAME + 2)
228 % * dev_t is 64 bit now across userland and kernel. Whereever 32 bit value
229 % * is specifically needed, dev32_t will be used. Internally dev_t is used.
230 % * timeval is always 32 bit across userland and kernel.
232 %typedef u_longlong_t md_dev64_t;
233 %typedef struct timeval32 md_timeval32_t;
236 % * The following definitions are not available, when operating in
237 % * a 32 bit environment. As we are always dealing with
238 % * 64 bit devices, md_dev64_t, we need those definitions also in
239 % * a 32 bit environment
241 %#ifndef NBITSMAJOR64
242 %#define NBITSMAJOR64 32 /* # of major device bits in 64-bit Solaris */
243 %#endif /* NBITSMAJOR64 */
245 %#ifndef NBITSMINOR64
246 %#define NBITSMINOR64 32 /* # of minor device bits in 64-bit Solaris */
247 %#endif /* NBITSMINOR64 */
250 %#define MAXMAJ64 0xfffffffful /* max major value */
251 %#endif /* MAXMAJ64 */
254 %#define MAXMIN64 0xfffffffful /* max minor value */
255 %#endif /* MAXMIN64 */
258 %#define NODEV64 0xffffffffffffffffuLL
259 %#endif /* NODEV64 */
262 %#define NODEV32 0xffffffffuL
263 %#endif /* NODEV32 */
265 %#ifndef MD_DISKADDR_ERROR
266 %#define MD_DISKADDR_ERROR 0xffffffffffffffffuLL
267 %#endif /* MD_DISKADDR_ERROR */
271 #if defined(RPC_HDR) || defined(RPC_XDR)
281 %/* record ID type */
282 typedef int mddb_recid_t;
286 typedef u_int side_t;
289 %/* Multi-node node ID */
290 typedef uint32_t md_mn_nodeid_t;
293 %/* Shared definitions */
294 #include "meta_arr.x"
296 #endif /* defined(RPC_HDR) || defined(RPC_XDR) */
300 %#if defined(__STDC__) || defined(__cplusplus)
302 %extern bool_t xdr_uint_t(XDR *xdrs, uint_t *objp);
303 %extern bool_t xdr_ushort_t(XDR *xdrs, ushort_t *objp);
304 %extern bool_t xdr_dev_t(XDR *xdrs, dev_t *objp);
305 %extern bool_t xdr_dev32_t(XDR *xdrs, dev32_t *objp);
306 %extern bool_t xdr_md_dev64_t(XDR *xdrs, md_dev64_t *objp);
307 %extern bool_t xdr_size_t(XDR *xdrs, size_t *objp);
308 %extern bool_t xdr_daddr_t(XDR *xdrs, daddr_t *objp);
309 %extern bool_t xdr_daddr32_t(XDR *xdrs, daddr32_t *objp);
310 %extern bool_t xdr_diskaddr_t(XDR *xdrs, diskaddr_t *objp);
311 %extern bool_t xdr_ddi_devid_t(XDR *xdrs, ddi_devid_t *objp);
312 %extern bool_t xdr_off_t(XDR *xdrs, off_t *objp);
313 %extern bool_t xdr_md_timeval32_t(XDR *xdrs, md_timeval32_t *objp);
314 #endif /* !_KERNEL */
315 %extern bool_t xdr_minor_t(XDR *xdrs, minor_t *objp);
316 %extern bool_t xdr_timeval(XDR *xdrs, struct timeval *objp);
317 %extern bool_t xdr_clnt_stat(XDR *xdrs, enum clnt_stat *objp);
320 %extern bool_t xdr_uint_t();
321 %extern bool_t xdr_ushort_t();
322 %extern bool_t xdr_dev_t();
323 %extern bool_t xdr_dev32_t();
324 %extern bool_t xdr_md_dev64_t();
325 %extern bool_t xdr_size_t();
326 %extern bool_t xdr_daddr_t();
327 %extern bool_t xdr_daddr32_t();
328 %extern bool_t xdr_diskaddr_t();
329 %extern bool_t xdr_ddi_devid_t();
330 %extern bool_t xdr_off_t();
331 %extern bool_t xdr_md_timeval32_t();
332 #endif /* !_KERNEL */
333 %extern bool_t xdr_minor_t();
334 %extern bool_t xdr_timeval();
335 %extern bool_t xdr_clnt_stat();