aboutsummaryrefslogtreecommitdiff
path: root/sys/sys/disk/apm.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/apm.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/apm.h')
-rw-r--r--sys/sys/disk/apm.h69
1 files changed, 69 insertions, 0 deletions
diff --git a/sys/sys/disk/apm.h b/sys/sys/disk/apm.h
new file mode 100644
index 000000000000..a9183b5e3aa7
--- /dev/null
+++ b/sys/sys/disk/apm.h
@@ -0,0 +1,69 @@
+/*-
+ * Copyright (c) 2007 Marcel Moolenaar
+ * 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.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
+ *
+ * $FreeBSD$
+ */
+
+#ifndef _SYS_DISK_APM_H_
+#define _SYS_DISK_APM_H_
+
+/* Driver Descriptor Record. */
+struct apm_ddr {
+ uint16_t ddr_sig;
+#define APM_DDR_SIG 0x4552
+ uint16_t ddr_blksize;
+ uint32_t ddr_blkcount;
+};
+
+#define APM_ENT_NAMELEN 32
+#define APM_ENT_TYPELEN 32
+
+/* Partition Map Entry Record. */
+struct apm_ent {
+ uint16_t ent_sig;
+#define APM_ENT_SIG 0x504d
+ uint16_t _pad_;
+ uint32_t ent_pmblkcnt;
+ uint32_t ent_start;
+ uint32_t ent_size;
+ char ent_name[APM_ENT_NAMELEN];
+ char ent_type[APM_ENT_TYPELEN];
+};
+
+#define APM_ENT_TYPE_SELF "Apple_partition_map"
+#define APM_ENT_TYPE_UNUSED "Apple_Free"
+
+#define APM_ENT_TYPE_FREEBSD "FreeBSD"
+#define APM_ENT_TYPE_FREEBSD_NANDFS "FreeBSD-nandfs"
+#define APM_ENT_TYPE_FREEBSD_SWAP "FreeBSD-swap"
+#define APM_ENT_TYPE_FREEBSD_UFS "FreeBSD-UFS"
+#define APM_ENT_TYPE_FREEBSD_VINUM "FreeBSD-Vinum"
+#define APM_ENT_TYPE_FREEBSD_ZFS "FreeBSD-ZFS"
+
+#define APM_ENT_TYPE_APPLE_BOOT "Apple_Bootstrap"
+#define APM_ENT_TYPE_APPLE_HFS "Apple_HFS"
+#define APM_ENT_TYPE_APPLE_UFS "Apple_UNIX_SVR2"
+
+#endif /* _SYS_DISK_APM_H_ */