disklabel.h revision 1.3
1/* $NetBSD: disklabel.h,v 1.3 1998/03/02 16:18:17 drochner 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 0xa9 /* NetBSD partition */ 65#define MBR_386BSD 0xa5 /* 386BSD partition */ 66 67/* For compatibility reasons (mainly for fdisk): */ 68#define dos_partition mbr_partition 69#define dp_flag mbr_flag 70#define dp_shd mbr_shd 71#define dp_ssect mbr_ssect 72#define dp_scyl mbr_scyl 73#define dp_typ mbr_type 74#define dp_ehd mbr_ehd 75#define dp_esect mbr_esect 76#define dp_ecyl mbr_ecyl 77#define dp_start mbr_start 78#define dp_size mbr_size 79 80#define DOSPARTOFF MBRPARTOFF 81#define NDOSPART NMBRPART 82 83#define DOSPTYP_NETBSD MBR_NETBSD 84 85struct cpu_disklabel { 86 int cd_start; /* Offset to NetBSD partition in blocks */ 87}; 88 89/* Isolate the relevant bits to get sector and cylinder. */ 90#define DPSECT(s) ((s) & 0x3f) 91#define DPCYL(c, s) ((c) + (((s) & 0xc0) << 2)) 92 93#ifdef _KERNEL 94struct disklabel; 95int bounds_check_with_label __P((struct buf *bp, struct disklabel *lp, int wlabel)); 96#endif /* _KERNEL */ 97 98#endif /* _MACHINE_DISKLABEL_H_ */ 99