disklabel.h revision 1.1
1/* $NetBSD: disklabel.h,v 1.1 1996/09/30 16:34:22 ws Exp $ */ 2 3/*- 4 * Copyright (C) 1995, 1996 Wolfgang Solfrank. 5 * Copyright (C) 1995, 1996 TooLs GmbH. 6 * All rights reserved. 7 * 8 * Redistribution and use in source and binary forms, with or without 9 * modification, are permitted provided that the following conditions 10 * are met: 11 * 1. Redistributions of source code must retain the above copyright 12 * notice, this list of conditions and the following disclaimer. 13 * 2. Redistributions in binary form must reproduce the above copyright 14 * notice, this list of conditions and the following disclaimer in the 15 * documentation and/or other materials provided with the distribution. 16 * 3. All advertising materials mentioning features or use of this software 17 * must display the following acknowledgement: 18 * This product includes software developed by TooLs GmbH. 19 * 4. The name of TooLs GmbH may not be used to endorse or promote products 20 * derived from this software without specific prior written permission. 21 * 22 * THIS SOFTWARE IS PROVIDED BY TOOLS GMBH ``AS IS'' AND ANY EXPRESS OR 23 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 24 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 25 * IN NO EVENT SHALL TOOLS GMBH BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 26 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 27 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; 28 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 29 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 30 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF 31 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 32 */ 33 34#ifndef _MACHINE_DISKLABEL_H_ 35#define _MACHINE_DISKLABEL_H_ 36 37#define LABELSECTOR 1 /* sector containing label */ 38#define LABELOFFSET 0 /* offset of label in sector */ 39#define MAXPARTITIONS 16 /* number of partitions */ 40#define RAW_PART 2 /* raw partition: XX?c */ 41 42/* MBR partition table */ 43#define MBRSECTOR 0 /* MBR sector number */ 44#define MBRPARTOFF 446 /* Offset of MBR partition table */ 45#define NMBRPART 4 /* # of partitions in MBR */ 46#define MBRMAGICOFF 510 /* Offset of magic number */ 47#define MBRMAGIC 0xaa55 /* Actual magic number */ 48 49struct mbr_partition { 50 unsigned char mbr_flag; /* default boot flag */ 51 unsigned char mbr_shd; /* start head, IsN't Always Meaningful */ 52 unsigned char mbr_ssect; /* start sector, INAM */ 53 unsigned char mbr_scyl; /* start cylinder, INAM */ 54 unsigned char mbr_type; /* partition type */ 55 unsigned char mbr_ehd; /* end head, INAM */ 56 unsigned char mbr_esect; /* end sector, INAM */ 57 unsigned char mbr_ecyl; /* end cylinder, INAM */ 58 unsigned long mbr_start; /* absolute start sector number */ 59 unsigned long mbr_size; /* partition size in sectors */ 60}; 61 62/* Known partition types: */ 63#define MBR_EXTENDED 0x05 /* Extended partition */ 64#define MBR_NETBSD_LE 0xa5 /* NetBSD little endian partition */ 65#define MBR_NETBSD_BE 0xa6 /* NetBSD big endian partition */ 66#define MBR_NETBSD MBR_NETBSD_BE /* on this machine, we default to BE */ 67 68/* For compatibility reasons (mainly for fdisk): */ 69#define dos_partition mbr_partition 70#define dp_flag mbr_flag 71#define dp_shd mbr_shd 72#define dp_ssect mbr_ssect 73#define dp_scyl mbr_scyl 74#define dp_typ mbr_type 75#define dp_ehd mbr_ehd 76#define dp_esect mbr_esect 77#define dp_ecyl mbr_ecyl 78#define dp_start mbr_start 79#define dp_size mbr_size 80 81#define DOSPARTOFF MBRPARTOFF 82#define NDOSPART NMBRPART 83 84#define DOSPTYP_386BSD MBR_NETBSD 85 86struct cpu_disklabel { 87 int cd_start; /* Offset to NetBSD partition in blocks */ 88}; 89 90/* Isolate the relevant bits to get sector and cylinder. */ 91#define DPSECT(s) ((s) & 0x3f) 92#define DPCYL(c, s) ((c) + (((s) & 0xc0) << 2)) 93 94#ifdef _KERNEL 95struct disklabel; 96int bounds_check_with_label __P((struct buf *bp, struct disklabel *lp, int wlabel)); 97#endif /* _KERNEL */ 98 99#endif /* _MACHINE_DISKLABEL_H_ */ 100