1*8329232eSGordon Ross /*
2*8329232eSGordon Ross  * CDDL HEADER START
3*8329232eSGordon Ross  *
4*8329232eSGordon Ross  * The contents of this file are subject to the terms of the
5*8329232eSGordon Ross  * Common Development and Distribution License (the "License").
6*8329232eSGordon Ross  * You may not use this file except in compliance with the License.
7*8329232eSGordon Ross  *
8*8329232eSGordon Ross  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9*8329232eSGordon Ross  * or http://www.opensolaris.org/os/licensing.
10*8329232eSGordon Ross  * See the License for the specific language governing permissions
11*8329232eSGordon Ross  * and limitations under the License.
12*8329232eSGordon Ross  *
13*8329232eSGordon Ross  * When distributing Covered Code, include this CDDL HEADER in each
14*8329232eSGordon Ross  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15*8329232eSGordon Ross  * If applicable, add the following below this CDDL HEADER, with the
16*8329232eSGordon Ross  * fields enclosed by brackets "[]" replaced with your own identifying
17*8329232eSGordon Ross  * information: Portions Copyright [yyyy] [name of copyright owner]
18*8329232eSGordon Ross  *
19*8329232eSGordon Ross  * CDDL HEADER END
20*8329232eSGordon Ross  */
21*8329232eSGordon Ross /*
22*8329232eSGordon Ross  * Copyright (c) 1994, 2010, Oracle and/or its affiliates. All rights reserved.
23*8329232eSGordon Ross  * Copyright (c) 2012, 2017 by Delphix. All rights reserved.
24*8329232eSGordon Ross  * Copyright 2017 Nexenta Systems, Inc.  All rights reserved.
25*8329232eSGordon Ross  */
26*8329232eSGordon Ross 
27*8329232eSGordon Ross #include <sys/types.h>
28*8329232eSGordon Ross #include <sys/cmn_err.h>
29*8329232eSGordon Ross #include <sys/cred.h>
30*8329232eSGordon Ross #include <sys/kmem.h>
31*8329232eSGordon Ross #include <sys/systm.h>
32*8329232eSGordon Ross #include <sys/sysmacros.h>
33*8329232eSGordon Ross 
34*8329232eSGordon Ross volatile int ncsize = 500;	/* dnlc.h */
35*8329232eSGordon Ross 
36*8329232eSGordon Ross static major_t devcnt = 0x280;
37*8329232eSGordon Ross static kmutex_t udevlock;
38*8329232eSGordon Ross 
39*8329232eSGordon Ross /* os/subr.c */
40*8329232eSGordon Ross major_t
getudev()41*8329232eSGordon Ross getudev()
42*8329232eSGordon Ross {
43*8329232eSGordon Ross 	static major_t next = 0;
44*8329232eSGordon Ross 	major_t ret;
45*8329232eSGordon Ross 
46*8329232eSGordon Ross 	mutex_enter(&udevlock);
47*8329232eSGordon Ross 	if (next == 0)
48*8329232eSGordon Ross 		next = devcnt;
49*8329232eSGordon Ross 	if (next <= L_MAXMAJ32 && next >= devcnt)
50*8329232eSGordon Ross 		ret = next++;
51*8329232eSGordon Ross 	else {
52*8329232eSGordon Ross 		cmn_err(CE_WARN, "out of major numbers");
53*8329232eSGordon Ross 		ret = ((major_t)-1);
54*8329232eSGordon Ross 	}
55*8329232eSGordon Ross 	mutex_exit(&udevlock);
56*8329232eSGordon Ross 	return (ret);
57*8329232eSGordon Ross }
58*8329232eSGordon Ross 
59*8329232eSGordon Ross /*
60*8329232eSGordon Ross  * Compress 'long' device number encoding to 32-bit device number
61*8329232eSGordon Ross  * encoding.  If it won't fit, we return failure, but set the
62*8329232eSGordon Ross  * device number to 32-bit NODEV for the sake of our callers.
63*8329232eSGordon Ross  */
64*8329232eSGordon Ross int
cmpldev(dev32_t * dst,dev_t dev)65*8329232eSGordon Ross cmpldev(dev32_t *dst, dev_t dev)
66*8329232eSGordon Ross {
67*8329232eSGordon Ross #if defined(_LP64)
68*8329232eSGordon Ross 	if (dev == NODEV) {
69*8329232eSGordon Ross 		*dst = (dev32_t)(-1);
70*8329232eSGordon Ross 	} else {
71*8329232eSGordon Ross 		major_t major = dev >> L_BITSMINOR;
72*8329232eSGordon Ross 		minor_t minor = dev & L_MAXMIN;
73*8329232eSGordon Ross 
74*8329232eSGordon Ross 		if (major > L_MAXMAJ32 || minor > L_MAXMIN32) {
75*8329232eSGordon Ross 			*dst = (dev32_t)(-1);
76*8329232eSGordon Ross 			return (0);
77*8329232eSGordon Ross 		}
78*8329232eSGordon Ross 
79*8329232eSGordon Ross 		*dst = (dev32_t)((major << L_BITSMINOR32) | minor);
80*8329232eSGordon Ross 	}
81*8329232eSGordon Ross #else
82*8329232eSGordon Ross 	*dst = (dev32_t)dev;
83*8329232eSGordon Ross #endif
84*8329232eSGordon Ross 	return (1);
85*8329232eSGordon Ross }
86*8329232eSGordon Ross 
87*8329232eSGordon Ross /* os/cred.c */
88*8329232eSGordon Ross int
groupmember(gid_t gid,const cred_t * cr)89*8329232eSGordon Ross groupmember(gid_t gid, const cred_t *cr)
90*8329232eSGordon Ross {
91*8329232eSGordon Ross 	if (gid == 0 || gid == 1)
92*8329232eSGordon Ross 		return (1);
93*8329232eSGordon Ross 	return (0);
94*8329232eSGordon Ross }
95*8329232eSGordon Ross 
96*8329232eSGordon Ross /* os/sig.c */
97*8329232eSGordon Ross 
98*8329232eSGordon Ross /* ARGSUSED */
99*8329232eSGordon Ross void
sigintr(k_sigset_t * smask,int intable)100*8329232eSGordon Ross sigintr(k_sigset_t *smask, int intable)
101*8329232eSGordon Ross {
102*8329232eSGordon Ross }
103*8329232eSGordon Ross 
104*8329232eSGordon Ross /* ARGSUSED */
105*8329232eSGordon Ross void
sigunintr(k_sigset_t * smask)106*8329232eSGordon Ross sigunintr(k_sigset_t *smask)
107*8329232eSGordon Ross {
108*8329232eSGordon Ross }
109