diff options
author | Marcel Moolenaar <marcel@FreeBSD.org> | 2016-10-07 15:42:20 +0000 |
---|---|---|
committer | Marcel Moolenaar <marcel@FreeBSD.org> | 2016-10-07 15:42:20 +0000 |
commit | 0974f66d0647384e6489f2ba47bcec2f9c2d47de (patch) | |
tree | c3645e331fdeed530d3e126c13e5ea9a09cecf49 /sys/sys/diskpc98.h | |
parent | e10037df2c438d4975ff0f24df9b3ad4edc464f0 (diff) | |
download | src-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/diskpc98.h')
-rw-r--r-- | sys/sys/diskpc98.h | 41 |
1 files changed, 3 insertions, 38 deletions
diff --git a/sys/sys/diskpc98.h b/sys/sys/diskpc98.h index aa0bb0a8f212..5b75df7016b7 100644 --- a/sys/sys/diskpc98.h +++ b/sys/sys/diskpc98.h @@ -33,46 +33,11 @@ #ifndef _SYS_DISKPC98_H_ #define _SYS_DISKPC98_H_ +#include <sys/disk/pc98.h> #include <sys/ioccom.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 +#define DOSMID_386BSD __DOSMID_386BSD +#define DOSSID_386BSD __DOSSID_386BSD void pc98_partition_dec(void const *pp, struct pc98_partition *d); void pc98_partition_enc(void *pp, struct pc98_partition *d); |