aboutsummaryrefslogtreecommitdiff
path: root/sys/sys/disk/pc98.h
diff options
context:
space:
mode:
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/disk/pc98.h
parente10037df2c438d4975ff0f24df9b3ad4edc464f0 (diff)
downloadsrc-0974f66d0647384e6489f2ba47bcec2f9c2d47de.tar.gz
src-0974f66d0647384e6489f2ba47bcec2f9c2d47de.zip
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
Notes: svn path=/head/; revision=306811
Diffstat (limited to 'sys/sys/disk/pc98.h')
-rw-r--r--sys/sys/disk/pc98.h75
1 files changed, 75 insertions, 0 deletions
diff --git a/sys/sys/disk/pc98.h b/sys/sys/disk/pc98.h
new file mode 100644
index 000000000000..c5ff46c0a584
--- /dev/null
+++ b/sys/sys/disk/pc98.h
@@ -0,0 +1,75 @@
+/*-
+ * Copyright (c) 1987, 1988, 1993
+ * The Regents of the University of California. 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.
+ * 4. Neither the name of the University nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``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 REGENTS OR CONTRIBUTORS 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.
+ *
+ * @(#)disklabel.h 8.2 (Berkeley) 7/10/94
+ * $FreeBSD$
+ */
+
+#ifndef _SYS_DISK_PC98_H_
+#define _SYS_DISK_PC98_H_
+
+#define PC98_BBSECTOR 1 /* DOS boot block relative sector number */
+#define PC98_PARTOFF 0
+#define PC98_PARTSIZE 32
+#define PC98_NPARTS 16
+#define PC98_MAGICOFS 510
+#define PC98_MAGIC 0xAA55
+
+#define PC98_MID_BOOTABLE 0x80
+#define PC98_MID_MASK 0x7f
+#define PC98_MID_386BSD 0x14
+
+#define PC98_SID_ACTIVE 0x80
+#define PC98_SID_MASK 0x7f
+#define PC98_SID_386BSD 0x44
+
+#define __DOSMID_386BSD (PC98_MID_386BSD | PC98_MID_BOOTABLE)
+#define __DOSSID_386BSD (PC98_SID_386BSD | PC98_SID_ACTIVE)
+#define PC98_PTYP_386BSD (__DOSSID_386BSD << 8 | __DOSMID_386BSD)
+
+struct pc98_partition {
+ unsigned char dp_mid;
+ unsigned char dp_sid;
+ unsigned char dp_dum1;
+ unsigned char dp_dum2;
+ unsigned char dp_ipl_sct;
+ unsigned char dp_ipl_head;
+ unsigned short dp_ipl_cyl;
+ unsigned char dp_ssect; /* starting sector */
+ unsigned char dp_shd; /* starting head */
+ unsigned short dp_scyl; /* starting cylinder */
+ unsigned char dp_esect; /* end sector */
+ unsigned char dp_ehd; /* end head */
+ unsigned short dp_ecyl; /* end cylinder */
+ unsigned char dp_name[16];
+};
+#ifdef CTASSERT
+CTASSERT(sizeof (struct pc98_partition) == PC98_PARTSIZE);
+#endif
+
+#endif /* !_SYS_DISK_PC98_H_ */