path: root/sys/sys/diskmbr.h
diff options
authorMarcel Moolenaar <marcel@FreeBSD.org>2016-10-07 15:42:20 +0000
committerMarcel Moolenaar <marcel@FreeBSD.org>2016-10-07 15:42:20 +0000
commit0974f66d0647384e6489f2ba47bcec2f9c2d47de (patch)
treec3645e331fdeed530d3e126c13e5ea9a09cecf49 /sys/sys/diskmbr.h
parente10037df2c438d4975ff0f24df9b3ad4edc464f0 (diff)
In order to allow mkimg(1) (and other tools) to become a build tool
that can be compiled on various OSes (including on older versions of FreeBSD), make it possible to have it include the partitioning scheme definitions without pulling in FreeBSD specifics. In particular this means: o move the scheme definitions iand related defines to header files under sys/disk, o make them (more) portable by using uint#_t (where applicable) and renaming defines so that they at least have a good prefix, o make the new headers stand-alone so that they don't need FreeBSD definitions, like struct uuid(*) o keep the original headers for compatibility, but rewrite them to get the scheme definitions from <sys/disk/$scheme.h>. (*) since UUID/GUID type definitions are non-portable and the GPT scheme uses them, make it possible to have the scheme definitions use an external type by allowing consumers of the header to set GPT_UUID_TYPE. When GPT_UUID_TYPE has not been defined, the header will use it's own type definition, which is the same as struct uuid. The gpt_uuid_t typedef is created to abstract the details and allows consumers to refer to a single type. There is not conflict between the partitioning scheme headers and what is defined in them. All headers can be included in the same source files. Note: consumers of the old headers have not been changed yet. Such will be done if and when needed/beneficial. Reviewed by: imp, jhb MFC after: 1 month Sponsored by: Bracket Computing
Notes: svn path=/head/; revision=306811
Diffstat (limited to 'sys/sys/diskmbr.h')
1 files changed, 1 insertions, 48 deletions
diff --git a/sys/sys/diskmbr.h b/sys/sys/diskmbr.h
index 5f49eb9e8d06..deed3399a0f8 100644
--- a/sys/sys/diskmbr.h
+++ b/sys/sys/diskmbr.h
@@ -33,59 +33,12 @@
#ifndef _SYS_DISKMBR_H_
#define _SYS_DISKMBR_H_
+#include <sys/disk/mbr.h>
#include <sys/ioccom.h>
-#define DOSBBSECTOR 0 /* DOS boot block relative sector number */
-#define DOSDSNOFF 440 /* WinNT/2K/XP Drive Serial Number offset */
-#define DOSPARTOFF 446
-#define DOSPARTSIZE 16
-#define NDOSPART 4
-#define NEXTDOSPART 32
-#define DOSMAGIC 0xAA55
-#define DOSPTYP_EXT 0x05 /* DOS extended partition */
-#define DOSPTYP_FAT16 0x06 /* FAT16 partition */
-#define DOSPTYP_NTFS 0x07 /* NTFS partition */
-#define DOSPTYP_FAT32 0x0b /* FAT32 partition */
-#define DOSPTYP_EXTLBA 0x0f /* DOS extended partition */
-#define DOSPTYP_PPCBOOT 0x41 /* PReP/CHRP boot partition */
-#define DOSPTYP_LDM 0x42 /* Win2k dynamic extended partition */
-#define DOSPTYP_LINSWP 0x82 /* Linux swap partition */
-#define DOSPTYP_LINUX 0x83 /* Linux partition */
-#define DOSPTYP_LINLVM 0x8e /* Linux LVM partition */
-#define DOSPTYP_386BSD 0xa5 /* 386BSD partition type */
-#define DOSPTYP_APPLE_UFS 0xa8 /* Apple Mac OS X boot */
-#define DOSPTYP_APPLE_BOOT 0xab /* Apple Mac OS X UFS */
-#define DOSPTYP_HFS 0xaf /* HFS/HFS+ partition type */
-#define DOSPTYP_PMBR 0xee /* GPT Protective MBR */
-#define DOSPTYP_EFI 0xef /* EFI FAT parition */
-#define DOSPTYP_VMFS 0xfb /* VMware VMFS partition */
-#define DOSPTYP_VMKDIAG 0xfc /* VMware vmkDiagnostic partition */
-#define DOSPTYP_LINRAID 0xfd /* Linux raid partition */
-struct dos_partition {
- unsigned char dp_flag; /* bootstrap flags */
- unsigned char dp_shd; /* starting head */
- unsigned char dp_ssect; /* starting sector */
- unsigned char dp_scyl; /* starting cylinder */
- unsigned char dp_typ; /* partition type */
- unsigned char dp_ehd; /* end head */
- unsigned char dp_esect; /* end sector */
- unsigned char dp_ecyl; /* end cylinder */
- u_int32_t dp_start; /* absolute starting sector number */
- u_int32_t dp_size; /* partition size in sectors */
-#ifdef CTASSERT
-CTASSERT(sizeof (struct dos_partition) == DOSPARTSIZE);
void dos_partition_dec(void const *pp, struct dos_partition *d);
void dos_partition_enc(void *pp, struct dos_partition *d);
-#define DPSECT(s) ((s) & 0x3f) /* isolate relevant bits of sector */
-#define DPCYL(c, s) ((c) + (((s) & 0xc0)<<2)) /* and those that are cylinder */
#define DIOCSMBR _IOW('M', 129, u_char[512])
#endif /* !_SYS_DISKMBR_H_ */