BSD 4_3_Net_2 release
[unix-history] / usr / src / sys / vax / vax / mscp.c
index fad893d..33f92d9 100644 (file)
@@ -1,22 +1,54 @@
 /*
 /*
- * Copyright (c) 1987 Regents of the University of California.
- * All rights reserved.  The Berkeley software License Agreement
- * specifies the terms and conditions for redistribution.
+ * Copyright (c) 1988 Regents of the University of California.
+ * All rights reserved.
  *
  *
- *     @(#)mscp.c      1.1 (Berkeley) %G%
+ * This code is derived from software contributed to Berkeley by
+ * Chris Torek.
+ *
+ * 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.
+ *
+ *     @(#)mscp.c      7.5 (Berkeley) 12/16/90
  */
 
 /*
  * MSCP generic driver routines
  */
 
  */
 
 /*
  * MSCP generic driver routines
  */
 
-#include "param.h"
-#include "buf.h"
-#include "errno.h"
-#include "dkstat.h"
-#include "syslog.h"
+#include "sys/param.h"
+#include "sys/buf.h"
+#include "sys/errno.h"
+#include "sys/dkstat.h"
+#include "sys/ioctl.h"
+#include "sys/disklabel.h"
+#include "sys/syslog.h"
 
 
-#include "../vaxuba/ubavar.h"
+#include "../uba/ubavar.h"
 
 #include "mscp.h"
 #include "mscpvar.h"
 
 #include "mscp.h"
 #include "mscpvar.h"
@@ -90,30 +122,6 @@ again:
 #undef mri
 }
 
 #undef mri
 }
 
-/*
- * Decode and print an MSCP media ID.  It is made up of five 5-bit
- * `characters' and 7 bits of numeric information.  BITS(i)
- * selects character i's bits; CHAR returns the corresponding
- * character.
- */
-mscp_printmedia(id)
-       register u_long id;
-{
-       int c4, c3, c2, c1, c0;
-#define        BITS(i) ((id >> ((i) * 5 + 7)) & 0x1f)
-#define        CHAR(c) ((c) ? (c) + '@' : ' ')
-
-       c4 = BITS(4);
-       c3 = BITS(3);
-       c2 = BITS(2);
-       c1 = BITS(1);
-       c0 = BITS(0);
-       printf("%c%c %c%c%c%d", CHAR(c4), CHAR(c3), CHAR(c2),
-               CHAR(c1), CHAR(c0), id & 0x7f);
-#undef BITS
-#undef CHAR
-}
-
 #ifdef AVOID_EMULEX_BUG
 int    mscp_aeb_xor = 0x8000bb80;
 #endif
 #ifdef AVOID_EMULEX_BUG
 int    mscp_aeb_xor = 0x8000bb80;
 #endif
@@ -479,7 +487,9 @@ Emulex SC41/MS screwup: %s%d, got %d correct, then changed 0x%x to 0x%x\n",
                                goto out;
 
                        case MSCP_FAILED:       /* no luck */
                                goto out;
 
                        case MSCP_FAILED:       /* no luck */
-                               harderr(bp, drivename);
+                               diskerr(bp, drivename, "hard error",
+                                   LOG_PRINTF, -1, md->md_lab ?
+                                   &md->md_lab[ui->ui_unit] : md->md_lab);
                                mscp_printevent(mp);
                                bp->b_flags |= B_ERROR;
                                bp->b_error = EIO;
                                mscp_printevent(mp);
                                bp->b_flags |= B_ERROR;
                                bp->b_error = EIO;
@@ -840,7 +850,7 @@ mscp_printevent(mp)
                else
                        scm = cdc->cdc_submsgs[sc];
        }
                else
                        scm = cdc->cdc_submsgs[sc];
        }
-       printf("%s (%s) (code %d, subcode %d)\n", cm, scm, c, sc);
+       printf(" %s (%s) (code %d, subcode %d)\n", cm, scm, c, sc);
 }
 
 /*
 }
 
 /*
@@ -870,7 +880,7 @@ mscp_decodeerror(name, ctlr, mp)
 #define BADCODE(h)     (codemsg[(unsigned)(h) >> 28])
 #define BADLBN(h)      ((h) & 0xfffffff)
 
 #define BADCODE(h)     (codemsg[(unsigned)(h) >> 28])
 #define BADLBN(h)      ((h) & 0xfffffff)
 
-       printf("%s%d: %s error datagram%s: ", name, ctlr,
+       printf("%s%d: %s error datagram%s:", name, ctlr,
                issoft ? "soft" : "hard",
                mp->mscp_flags & M_LF_CONT ? " (continuing)" : "");
        switch (mp->mscp_format & 0377) {
                issoft ? "soft" : "hard",
                mp->mscp_flags & M_LF_CONT ? " (continuing)" : "");
        switch (mp->mscp_format & 0377) {
@@ -879,11 +889,11 @@ mscp_decodeerror(name, ctlr, mp)
                break;
 
        case M_FM_BUSADDR:      /* host memory access error */
                break;
 
        case M_FM_BUSADDR:      /* host memory access error */
-               printf("memory addr 0x%x: ", mp->mscp_erd.erd_busaddr);
+               printf(" memory addr 0x%x:", mp->mscp_erd.erd_busaddr);
                break;
 
        case M_FM_DISKTRN:
                break;
 
        case M_FM_DISKTRN:
-               printf("unit %d: level %d retry %d, %s %d: ",
+               printf(" unit %d: level %d retry %d, %s %d:",
                        mp->mscp_unit,
                        mp->mscp_erd.erd_level, mp->mscp_erd.erd_retry,
                        BADCODE(mp->mscp_erd.erd_hdr),
                        mp->mscp_unit,
                        mp->mscp_erd.erd_level, mp->mscp_erd.erd_retry,
                        BADCODE(mp->mscp_erd.erd_hdr),
@@ -891,18 +901,18 @@ mscp_decodeerror(name, ctlr, mp)
                break;
 
        case M_FM_SDI:
                break;
 
        case M_FM_SDI:
-               printf("unit %d: %s %d: ", mp->mscp_unit,
+               printf(" unit %d: %s %d:", mp->mscp_unit,
                        BADCODE(mp->mscp_erd.erd_hdr),
                        BADLBN(mp->mscp_erd.erd_hdr));
                break;
 
        case M_FM_SMLDSK:
                        BADCODE(mp->mscp_erd.erd_hdr),
                        BADLBN(mp->mscp_erd.erd_hdr));
                break;
 
        case M_FM_SMLDSK:
-               printf("unit %d: small disk error, cyl %d: ",
+               printf(" unit %d: small disk error, cyl %d:",
                        mp->mscp_unit, mp->mscp_erd.erd_sdecyl);
                break;
 
        default:
                        mp->mscp_unit, mp->mscp_erd.erd_sdecyl);
                break;
 
        default:
-               printf("unit %d: unknown error, format 0x%x: ",
+               printf(" unit %d: unknown error, format 0x%x:",
                        mp->mscp_unit, mp->mscp_format);
        }
        mscp_printevent(mp);
                        mp->mscp_unit, mp->mscp_format);
        }
        mscp_printevent(mp);