xref: /original-bsd/sys/kern/subr_xxx.c (revision 68d9582f)
1 /*
2  * Copyright (c) 1982, 1986, 1991 Regents of the University of California.
3  * All rights reserved.
4  *
5  * %sccs.include.redist.c%
6  *
7  *	@(#)subr_xxx.c	7.12 (Berkeley) 06/20/92
8  */
9 
10 /*
11  * Miscellaneous trivial functions, including many
12  * that are often inline-expanded or done in assembler.
13  */
14 #include "param.h"
15 #include "systm.h"
16 #include "machine/cpu.h"
17 
18 /*
19  * Unsupported device function (e.g. writing to read-only device).
20  */
21 enodev()
22 {
23 
24 	return (ENODEV);
25 }
26 
27 /*
28  * Unconfigured device function; driver not configured.
29  */
30 enxio()
31 {
32 
33 	return (ENXIO);
34 }
35 
36 /*
37  * Unsupported ioctl function.
38  */
39 enoioctl()
40 {
41 
42 	return (ENOTTY);
43 }
44 
45 /*
46  * Unsupported system function.
47  * This is used for an otherwise-reasonable operation
48  * that is not supported by the current system binary.
49  */
50 enosys()
51 {
52 
53 	return (ENOSYS);
54 }
55 
56 /*
57  * Return error for operation not supported
58  * on a specific object or file type.
59  */
60 eopnotsupp()
61 {
62 
63 	return (EOPNOTSUPP);
64 }
65 
66 /*
67  * Generic null operation, always returns success.
68  */
69 nullop()
70 {
71 
72 	return (0);
73 }
74 
75 /*
76  * Definitions of various trivial functions;
77  * usually expanded inline rather than being defined here.
78  */
79 #ifdef NEED_MINMAX
80 imin(a, b)
81 	int a, b;
82 {
83 
84 	return (a < b ? a : b);
85 }
86 
87 imax(a, b)
88 	int a, b;
89 {
90 
91 	return (a > b ? a : b);
92 }
93 
94 unsigned int
95 min(a, b)
96 	unsigned int a, b;
97 {
98 
99 	return (a < b ? a : b);
100 }
101 
102 unsigned int
103 max(a, b)
104 	unsigned int a, b;
105 {
106 
107 	return (a > b ? a : b);
108 }
109 
110 long
111 lmin(a, b)
112 	long a, b;
113 {
114 
115 	return (a < b ? a : b);
116 }
117 
118 long
119 lmax(a, b)
120 	long a, b;
121 {
122 
123 	return (a > b ? a : b);
124 }
125 
126 unsigned long
127 ulmin(a, b)
128 	unsigned long a, b;
129 {
130 
131 	return (a < b ? a : b);
132 }
133 
134 unsigned long
135 ulmax(a, b)
136 	unsigned long a, b;
137 {
138 
139 	return (a > b ? a : b);
140 }
141 #endif /* NEED_MINMAX */
142 
143 #ifdef NEED_FFS
144 ffs(mask)
145 	register long mask;
146 {
147 	register int bit;
148 
149 	if (!mask)
150 		return(0);
151 	for (bit = 1;; ++bit) {
152 		if (mask&0x01)
153 			return(bit);
154 		mask >>= 1;
155 	}
156 }
157 #endif /* NEED_FFS */
158 
159 #ifdef NEED_BCMP
160 bcmp(v1, v2, len)
161 	void *v1, *v2;
162 	register unsigned len;
163 {
164 	register u_char *s1 = v1, *s2 = v2;
165 
166 	while (len--)
167 		if (*s1++ != *s2++)
168 			return (1);
169 	return (0);
170 }
171 #endif /* NEED_BCMP */
172 
173 #ifdef NEED_STRLEN
174 size_t
175 strlen(s1)
176 	register const char *s1;
177 {
178 	register int len;
179 
180 	for (len = 0; *s1++ != '\0'; len++)
181 		continue;
182 	return (len);
183 }
184 #endif /* NEED_STRLEN */
185