150875ed2SMarcel Moolenaar /*- 250875ed2SMarcel Moolenaar * Copyright (c) 1987, 1988, 1993 350875ed2SMarcel Moolenaar * The Regents of the University of California. All rights reserved. 450875ed2SMarcel Moolenaar * 550875ed2SMarcel Moolenaar * Redistribution and use in source and binary forms, with or without 650875ed2SMarcel Moolenaar * modification, are permitted provided that the following conditions 750875ed2SMarcel Moolenaar * are met: 850875ed2SMarcel Moolenaar * 1. Redistributions of source code must retain the above copyright 950875ed2SMarcel Moolenaar * notice, this list of conditions and the following disclaimer. 1050875ed2SMarcel Moolenaar * 2. Redistributions in binary form must reproduce the above copyright 1150875ed2SMarcel Moolenaar * notice, this list of conditions and the following disclaimer in the 1250875ed2SMarcel Moolenaar * documentation and/or other materials provided with the distribution. 13fbbd9655SWarner Losh * 3. Neither the name of the University nor the names of its contributors 1450875ed2SMarcel Moolenaar * may be used to endorse or promote products derived from this software 1550875ed2SMarcel Moolenaar * without specific prior written permission. 1650875ed2SMarcel Moolenaar * 1750875ed2SMarcel Moolenaar * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 1850875ed2SMarcel Moolenaar * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 1950875ed2SMarcel Moolenaar * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 2050875ed2SMarcel Moolenaar * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 2150875ed2SMarcel Moolenaar * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 2250875ed2SMarcel Moolenaar * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 2350875ed2SMarcel Moolenaar * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 2450875ed2SMarcel Moolenaar * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 2550875ed2SMarcel Moolenaar * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 2650875ed2SMarcel Moolenaar * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 2750875ed2SMarcel Moolenaar * SUCH DAMAGE. 2850875ed2SMarcel Moolenaar */ 2950875ed2SMarcel Moolenaar 3050875ed2SMarcel Moolenaar #ifndef _SYS_DISK_MBR_H_ 3150875ed2SMarcel Moolenaar #define _SYS_DISK_MBR_H_ 3250875ed2SMarcel Moolenaar 33fde1edaaSWarner Losh #include <sys/types.h> 34fde1edaaSWarner Losh 3550875ed2SMarcel Moolenaar #define DOSBBSECTOR 0 /* DOS boot block relative sector number */ 3650875ed2SMarcel Moolenaar #define DOSDSNOFF 440 /* WinNT/2K/XP Drive Serial Number offset */ 3750875ed2SMarcel Moolenaar #define DOSPARTOFF 446 3850875ed2SMarcel Moolenaar #define DOSPARTSIZE 16 3950875ed2SMarcel Moolenaar #define NDOSPART 4 4050875ed2SMarcel Moolenaar #define NEXTDOSPART 32 4150875ed2SMarcel Moolenaar #define DOSMAGICOFFSET 510 4250875ed2SMarcel Moolenaar #define DOSMAGIC 0xAA55 4350875ed2SMarcel Moolenaar 4450875ed2SMarcel Moolenaar #define DOSPTYP_EXT 0x05 /* DOS extended partition */ 4550875ed2SMarcel Moolenaar #define DOSPTYP_FAT16 0x06 /* FAT16 partition */ 4650875ed2SMarcel Moolenaar #define DOSPTYP_NTFS 0x07 /* NTFS partition */ 4750875ed2SMarcel Moolenaar #define DOSPTYP_FAT32 0x0b /* FAT32 partition */ 48b525a10aSEd Maste #define DOSPTYP_FAT32LBA 0x0c /* FAT32 with LBA partition */ 4950875ed2SMarcel Moolenaar #define DOSPTYP_EXTLBA 0x0f /* DOS extended partition */ 5050875ed2SMarcel Moolenaar #define DOSPTYP_PPCBOOT 0x41 /* PReP/CHRP boot partition */ 5150875ed2SMarcel Moolenaar #define DOSPTYP_LDM 0x42 /* Win2k dynamic extended partition */ 52276b25f1SConrad Meyer #define DOSPTYP_DFLYBSD 0x6c /* DragonFlyBSD partition type */ 5350875ed2SMarcel Moolenaar #define DOSPTYP_LINSWP 0x82 /* Linux swap partition */ 5450875ed2SMarcel Moolenaar #define DOSPTYP_LINUX 0x83 /* Linux partition */ 5550875ed2SMarcel Moolenaar #define DOSPTYP_LINLVM 0x8e /* Linux LVM partition */ 5650875ed2SMarcel Moolenaar #define DOSPTYP_386BSD 0xa5 /* 386BSD partition type */ 5750875ed2SMarcel Moolenaar #define DOSPTYP_APPLE_UFS 0xa8 /* Apple Mac OS X boot */ 5850875ed2SMarcel Moolenaar #define DOSPTYP_APPLE_BOOT 0xab /* Apple Mac OS X UFS */ 5950875ed2SMarcel Moolenaar #define DOSPTYP_HFS 0xaf /* HFS/HFS+ partition type */ 6050875ed2SMarcel Moolenaar #define DOSPTYP_PMBR 0xee /* GPT Protective MBR */ 6150875ed2SMarcel Moolenaar #define DOSPTYP_EFI 0xef /* EFI FAT parition */ 6250875ed2SMarcel Moolenaar #define DOSPTYP_VMFS 0xfb /* VMware VMFS partition */ 6350875ed2SMarcel Moolenaar #define DOSPTYP_VMKDIAG 0xfc /* VMware vmkDiagnostic partition */ 6450875ed2SMarcel Moolenaar #define DOSPTYP_LINRAID 0xfd /* Linux raid partition */ 6550875ed2SMarcel Moolenaar 6650875ed2SMarcel Moolenaar struct dos_partition { 6750875ed2SMarcel Moolenaar unsigned char dp_flag; /* bootstrap flags */ 6850875ed2SMarcel Moolenaar unsigned char dp_shd; /* starting head */ 6950875ed2SMarcel Moolenaar unsigned char dp_ssect; /* starting sector */ 7050875ed2SMarcel Moolenaar unsigned char dp_scyl; /* starting cylinder */ 7150875ed2SMarcel Moolenaar unsigned char dp_typ; /* partition type */ 7250875ed2SMarcel Moolenaar unsigned char dp_ehd; /* end head */ 7350875ed2SMarcel Moolenaar unsigned char dp_esect; /* end sector */ 7450875ed2SMarcel Moolenaar unsigned char dp_ecyl; /* end cylinder */ 7550875ed2SMarcel Moolenaar uint32_t dp_start; /* absolute starting sector number */ 7650875ed2SMarcel Moolenaar uint32_t dp_size; /* partition size in sectors */ 7750875ed2SMarcel Moolenaar }; 7850875ed2SMarcel Moolenaar #ifdef CTASSERT 7950875ed2SMarcel Moolenaar CTASSERT(sizeof (struct dos_partition) == DOSPARTSIZE); 8050875ed2SMarcel Moolenaar #endif 8150875ed2SMarcel Moolenaar 8250875ed2SMarcel Moolenaar #define DPSECT(s) ((s) & 0x3f) /* isolate relevant bits of sector */ 8350875ed2SMarcel Moolenaar #define DPCYL(c, s) ((c) + (((s) & 0xc0)<<2)) /* and those that are cylinder */ 8450875ed2SMarcel Moolenaar 8550875ed2SMarcel Moolenaar #endif /* !_SYS_DISK_MBR_H_ */ 86