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.9 (Berkeley) 03/17/91 8 */ 9 10 /* 11 * Miscellaneous trivial functions, including many 12 * that are often inline-expanded or done in assembler. 13 */ 14 #include "types.h" 15 #include "machine/cpu.h" 16 #include "errno.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 * Return error for unsupported operation. 38 */ 39 eopnotsupp() 40 { 41 42 return (EOPNOTSUPP); 43 } 44 45 /* 46 * Generic null operation, always returns success. 47 */ 48 nullop() 49 { 50 51 return (0); 52 } 53 54 /* 55 * Definitions of various trivial functions; 56 * usually expanded inline rather than being defined here. 57 */ 58 #if !defined(vax) && !defined(tahoe) 59 imin(a, b) 60 int a, b; 61 { 62 63 return (a < b ? a : b); 64 } 65 66 imax(a, b) 67 int a, b; 68 { 69 70 return (a > b ? a : b); 71 } 72 73 unsigned int 74 min(a, b) 75 unsigned int a, b; 76 { 77 78 return (a < b ? a : b); 79 } 80 81 unsigned int 82 max(a, b) 83 unsigned int a, b; 84 { 85 86 return (a > b ? a : b); 87 } 88 89 long 90 lmin(a, b) 91 long a, b; 92 { 93 94 return (a < b ? a : b); 95 } 96 97 long 98 lmax(a, b) 99 long a, b; 100 { 101 102 return (a > b ? a : b); 103 } 104 105 unsigned long 106 ulmin(a, b) 107 unsigned long a, b; 108 { 109 110 return (a < b ? a : b); 111 } 112 113 unsigned long 114 ulmax(a, b) 115 unsigned long a, b; 116 { 117 118 return (a > b ? a : b); 119 } 120 #endif 121 122 #if !defined(vax) && !defined(tahoe) && !defined(hp300) 123 ffs(mask) 124 register long mask; 125 { 126 register int bit; 127 128 if (!mask) 129 return(0); 130 for (bit = 1;; ++bit) { 131 if (mask&0x01) 132 return(bit); 133 mask >>= 1; 134 } 135 } 136 #endif 137 138 #if !defined(vax) && !defined(hp300) 139 bcmp(v1, v2, len) 140 void *v1, *v2; 141 register unsigned len; 142 { 143 register u_char *s1 = v1, *s2 = v2; 144 145 while (len--) 146 if (*s1++ != *s2++) 147 return (1); 148 return (0); 149 } 150 151 strlen(s1) 152 register char *s1; 153 { 154 register int len; 155 156 for (len = 0; *s1++ != '\0'; len++) 157 ; 158 return (len); 159 } 160 #endif 161