Coherent4.2.10/include/sys/fdisk.h
/* (-lgl
* Coherent 386 release 4.2
* Copyright (c) 1982, 1993 by Mark Williams Company.
* All rights reserved. May not be copied without permission.
* For copying permission and licensing info, write licensing@mwc.com
-lgl) */
#ifndef __SYS_FDISK_H__
#define __SYS_FDISK_H__
/*
* Fixed disk configuration.
* The first sector (boot block) of each hard disk
* should contain a fixed disk boot record (HDISK_S).
*/
#include <common/ccompat.h>
#define NPARTN 4U /* Partitions per drive */
#define HDSIG 0xAA55 /* Signature word */
#define SDEV 0x80 /* Special minor device */
/*
* System indicators.
* There is disagreement about some of these.
* Is there an official list?
*/
#define SYS_EMPTY 0 /* Empty */
#define SYS_DOS_12 1 /* MS-DOS, 12-bit FAT */
#define SYS_XENIX 2 /* Xenix */
#define SYS_DOS_16 4 /* MS-DOS, 16-bit FAT */
#define SYS_DOS_XP 5 /* MS-DOS, extended partition */
#define SYS_DOS_LARGE 6 /* MS-DOS, large filesystem */
#define SYS_COH 9 /* Coherent */
#define SYS_SWAP 10 /* Coherent swap partition */
/*
* Be careful when using the FDISK_S or HDISK_S structure:
* the two high order bits of p_bsec and p_esec on the boot block
* provide the two high order bits of p_bcyl and p_ecyl, respectively.
*/
#define SECMASK 0x3F /* Mask for sector number bits of sector fields. */
#define CYLMASK 0xC0 /* Mask for cylinder number bits of sector fields. */
#define bcyl(p) ((((p)->p_bsec & CYLMASK) << 2) | ((p)->p_bcyl))
#define bhd(p) ((p)->p_bhd)
#define bsec(p) ((p)->p_bsec & SECMASK)
#define ecyl(p) ((((p)->p_esec & CYLMASK) << 2) | ((p)->p_ecyl))
#define ehd(p) ((p)->p_ehd)
#define esec(p) ((p)->p_esec & SECMASK)
/* Per partition information. */
typedef struct fdisk_s {
unsigned char p_boot; /* Boot indicator */
unsigned char p_bhd; /* Beginning head */
unsigned char p_bsec; /* Beginning sector */
unsigned char p_bcyl; /* Beginning cylinder */
unsigned char p_sys; /* System indicator */
unsigned char p_ehd; /* Ending head */
unsigned char p_esec; /* Ending sector */
unsigned char p_ecyl; /* Ending cylinder */
unsigned long p_base; /* Base block number */
unsigned long p_size; /* Size in blocks */
} FDISK_S;
/* Hard disk master boot block. */
typedef struct hdisk_s {
unsigned char hd_boot [446]; /* Bootstrap */
#pragma align 2
struct fdisk_s hd_partn [NPARTN] __ALIGN (2); /* Partition info*/
#pragma align
unsigned short hd_sig; /* Validating signature */
} HDISK_S;
#endif /* ! defined (__SYS_FDISK_H__) */