BSD 4_3_Net_2 release
[unix-history] / usr / src / sys / kern / subr_xxx.c
index 6467460..4d8ce97 100644 (file)
@@ -1,27 +1,98 @@
 /*
 /*
- * Copyright (c) 1982, 1986 Regents of the University of California.
- * All rights reserved.  The Berkeley software License Agreement
- * specifies the terms and conditions for redistribution.
+ * Copyright (c) 1982, 1986, 1991 Regents of the University of California.
+ * All rights reserved.
  *
  *
- *     @(#)subr_xxx.c  7.7 (Berkeley) 5/15/90
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *     This product includes software developed by the University of
+ *     California, Berkeley and its contributors.
+ * 4. Neither the name of the University nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ *     @(#)subr_xxx.c  7.10 (Berkeley) 4/20/91
  */
 
  */
 
-#include "errno.h"
+/*
+ * Miscellaneous trivial functions, including many
+ * that are often inline-expanded or done in assembler.
+ */
+#include "param.h"
+#include "systm.h"
+#include "machine/cpu.h"
 
 /*
 
 /*
- * Routine placed in illegal entries in the bdevsw and cdevsw tables.
+ * Unsupported device function (e.g. writing to read-only device).
  */
  */
-nodev()
+enodev()
 {
 
        return (ENODEV);
 }
 
 /*
 {
 
        return (ENODEV);
 }
 
 /*
- * Null routine; placed in insignificant entries
- * in the bdevsw and cdevsw tables.
+ * Unconfigured device function; driver not configured.
+ */
+enxio()
+{
+
+       return (ENXIO);
+}
+
+/*
+ * Unsupported ioctl function.
+ */
+enoioctl()
+{
+
+       return (ENOTTY);
+}
+
+/*
+ * Unsupported system function.
+ * This is used for an otherwise-reasonable operation
+ * that is not supported by the current system binary.
+ */
+enosys()
+{
+
+       return (ENOSYS);
+}
+
+/*
+ * Return error for operation not supported
+ * on a specific object or file type.
+ */
+eopnotsupp()
+{
+
+       return (EOPNOTSUPP);
+}
+
+/*
+ * Generic null operation, always returns success.
  */
  */
-nulldev()
+nullop()
 {
 
        return (0);
 {
 
        return (0);
@@ -31,37 +102,71 @@ nulldev()
  * Definitions of various trivial functions;
  * usually expanded inline rather than being defined here.
  */
  * Definitions of various trivial functions;
  * usually expanded inline rather than being defined here.
  */
-#if !defined(vax) && !defined(tahoe)
+#ifdef NEED_MINMAX
 imin(a, b)
 imin(a, b)
+       int a, b;
 {
 
        return (a < b ? a : b);
 }
 
 imax(a, b)
 {
 
        return (a < b ? a : b);
 }
 
 imax(a, b)
+       int a, b;
 {
 
        return (a > b ? a : b);
 }
 
 {
 
        return (a > b ? a : b);
 }
 
-unsigned
+unsigned int
 min(a, b)
 min(a, b)
-       unsigned a, b;
+       unsigned int a, b;
 {
 
        return (a < b ? a : b);
 }
 
 {
 
        return (a < b ? a : b);
 }
 
-unsigned
+unsigned int
 max(a, b)
 max(a, b)
-       unsigned a, b;
+       unsigned int a, b;
+{
+
+       return (a > b ? a : b);
+}
+
+long
+lmin(a, b)
+       long a, b;
+{
+
+       return (a < b ? a : b);
+}
+
+long
+lmax(a, b)
+       long a, b;
+{
+
+       return (a > b ? a : b);
+}
+
+unsigned long
+ulmin(a, b)
+       unsigned long a, b;
+{
+
+       return (a < b ? a : b);
+}
+
+unsigned long
+ulmax(a, b)
+       unsigned long a, b;
 {
 
        return (a > b ? a : b);
 }
 {
 
        return (a > b ? a : b);
 }
-#endif
+#endif /* NEED_MINMAX */
 
 
-#if !defined(vax) && !defined(tahoe) && !defined(hp300)
+#ifdef NEED_FFS
 ffs(mask)
        register long mask;
 {
 ffs(mask)
        register long mask;
 {
@@ -69,33 +174,36 @@ ffs(mask)
 
        if (!mask)
                return(0);
 
        if (!mask)
                return(0);
-       for (bit = 1;; ++bit)
+       for (bit = 1;; ++bit) {
                if (mask&0x01)
                        return(bit);
                mask >>= 1;
        }
 }
                if (mask&0x01)
                        return(bit);
                mask >>= 1;
        }
 }
-#endif
+#endif /* NEED_FFS */
 
 
-#if !defined(vax) && !defined(hp300)
-bcmp(s1, s2, len)
-       register char *s1, *s2;
+#ifdef NEED_BCMP
+bcmp(v1, v2, len)
+       void *v1, *v2;
        register unsigned len;
 {
        register unsigned len;
 {
+       register u_char *s1 = v1, *s2 = v2;
 
        while (len--)
                if (*s1++ != *s2++)
                        return (1);
        return (0);
 }
 
        while (len--)
                if (*s1++ != *s2++)
                        return (1);
        return (0);
 }
+#endif /* NEED_BCMP */
 
 
+#ifdef NEED_STRLEN
 strlen(s1)
        register char *s1;
 {
        register int len;
 
        for (len = 0; *s1++ != '\0'; len++)
 strlen(s1)
        register char *s1;
 {
        register int len;
 
        for (len = 0; *s1++ != '\0'; len++)
-               /* void */;
+               ;
        return (len);
 }
        return (len);
 }
-#endif
+#endif /* NEED_STRLEN */