Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/netbsd-1-4]: src/sys/arch/alpha/include clean up slightly, do a little #...



details:   https://anonhg.NetBSD.org/src/rev/80846601f0c9
branches:  netbsd-1-4
changeset: 468054:80846601f0c9
user:      cgd <cgd%NetBSD.org@localhost>
date:      Mon Apr 05 02:45:48 1999 +0000

description:
clean up slightly, do a little #define trick to make checksumming
the boot block a little easier/more 'clean', and provide a macro to
checksum the boot block.

diffstat:

 sys/arch/alpha/include/disklabel.h |  83 ++++++++++++++++++++++++++++++++++++++
 1 files changed, 83 insertions(+), 0 deletions(-)

diffs (87 lines):

diff -r dabb0df8f3cc -r 80846601f0c9 sys/arch/alpha/include/disklabel.h
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/sys/arch/alpha/include/disklabel.h        Mon Apr 05 02:45:48 1999 +0000
@@ -0,0 +1,83 @@
+/* $NetBSD: disklabel.h,v 1.5.2.2 1999/04/05 02:45:48 cgd Exp $ */
+
+/*
+ * Copyright (c) 1994, 1999 Christopher G. Demetriou
+ * All rights reserved.
+ *
+ * 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 Christopher G. Demetriou
+ *      for the NetBSD Project.
+ * 4. The name of the author may not be used to endorse or promote products
+ *    derived from this software without specific prior written permission
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
+ */
+
+#ifndef _MACHINE_DISKLABEL_H_
+#define _MACHINE_DISKLABEL_H_
+
+#define        LABELSECTOR     0                       /* sector containing label */
+#define        LABELOFFSET     64                      /* offset of label in sector */
+#define        MAXPARTITIONS   8                       /* number of partitions */
+#define        RAW_PART        2                       /* raw partition: xx?c */
+
+#include <sys/dkbad.h>
+
+/* Just a dummy */
+struct cpu_disklabel {
+       struct dkbad bad;                       /* bad-sector information */
+};
+
+/*
+ * Alpha (disk, but also tape) Boot Block.  See Section (III) 3.6.1 of the
+ * Alpha Architecture Reference Manual.
+ */
+
+struct boot_block {
+       u_int64_t bb_data[63];          /* data (disklabel, also as below) */
+       u_int64_t bb_cksum;             /* checksum of the the boot block,
+                                        * taken as u_int64_t's
+                                        */
+};
+#define        bb_secsize      bb_data[60]     /* secondary size (blocks) */
+#define        bb_secstart     bb_data[61]     /* secondary start (blocks) */
+#define        bb_flags        bb_data[62]     /* unknown flags (set to zero) */
+
+#define        BOOT_BLOCK_OFFSET       0       /* offset of boot block. */
+#define        BOOT_BLOCK_BLOCKSIZE    512     /* block size for sec. size/start,
+                                        * and for boot block itself
+                                        */
+
+#define        CHECKSUM_BOOT_BLOCK(bb,cksum)                                   \
+       do {                                                            \
+               const struct boot_block *_bb = (bb);                    \
+               u_int64_t _cksum;                                       \
+               int _i;                                                 \
+                                                                       \
+               _cksum = 0;                                             \
+               for (_i = 0;                                            \
+                   _i < (sizeof _bb->bb_data / sizeof _bb->bb_data[0]); \
+                   _i++)                                               \
+                       _cksum += _bb->bb_data[_i];                     \
+               *(cksum) = _cksum;                                      \
+       } while (0)
+
+#endif /* _MACHINE_DISKLABEL_H_ */



Home | Main Index | Thread Index | Old Index