85 lines
2.1 KiB
C
85 lines
2.1 KiB
C
|
/*
|
||
|
** Copyright 2001, Travis Geiselbrecht. All rights reserved.
|
||
|
** Distributed under the terms of the NewOS License.
|
||
|
*/
|
||
|
|
||
|
#ifndef __PARTITION_H
|
||
|
#define __PARTITION_H
|
||
|
|
||
|
#define PARTITION_MAGIC1 0x55
|
||
|
#define PARTITION_MAGIC2 0xaa
|
||
|
#define PART_MAGIC_OFFSET 0x01fe
|
||
|
#define PARTITION_OFFSET 0x01be
|
||
|
#define NUM_PARTITIONS 4
|
||
|
|
||
|
#define PTCHSToLBA(c, h, s, scnt, hcnt) ((s) & 0x3f) + \
|
||
|
(scnt) * ( (h) + (hcnt) * ((c) | (((s) & 0xc0) << 2)))
|
||
|
#define PTLBAToCHS(lba, c, h, s, scnt, hcnt) ( \
|
||
|
(s) = (lba) % (scnt) + 1, \
|
||
|
(lba) /= (scnt), \
|
||
|
(h) = (lba) % (hcnt), \
|
||
|
(lba) /= (heads), \
|
||
|
(c) = (lba) & 0xff, \
|
||
|
(s) |= ((lba) >> 2) & 0xc0)
|
||
|
|
||
|
/* taken from linux fdisk src */
|
||
|
typedef enum PartitionTypes
|
||
|
{
|
||
|
PTEmpty = 0,
|
||
|
PTDOS3xPrimary, /* 1 */
|
||
|
PTXENIXRoot, /* 2 */
|
||
|
PTXENIXUsr, /* 3 */
|
||
|
PTOLDDOS16Bit, /* 4 */
|
||
|
PTDosExtended, /* 5 */
|
||
|
PTDos5xPrimary, /* 6 */
|
||
|
PTOS2HPFS, /* 7 */
|
||
|
PTAIX, /* 8 */
|
||
|
PTAIXBootable, /* 9 */
|
||
|
PTOS2BootMgr, /* 10 */
|
||
|
PTWin95FAT32,
|
||
|
PTWin95FAT32LBA,
|
||
|
PTWin95FAT16LBA,
|
||
|
PTWin95ExtendedLBA,
|
||
|
PTVenix286 = 0x40,
|
||
|
PTNovell = 0x51,
|
||
|
PTMicroport = 0x52,
|
||
|
PTGnuHurd = 0x63,
|
||
|
PTNetware286 = 0x64,
|
||
|
PTNetware386 = 0x65,
|
||
|
PTPCIX = 0x75,
|
||
|
PTOldMinix = 0x80,
|
||
|
PTMinix = 0x81,
|
||
|
PTLinuxSwap = 0x82,
|
||
|
PTLinuxExt2 = 0x83,
|
||
|
PTAmoeba = 0x93,
|
||
|
PTAmoebaBBT = 0x94,
|
||
|
PTBSD = 0xa5,
|
||
|
PTBSDIFS = 0xb7,
|
||
|
PTBSDISwap = 0xb8,
|
||
|
PTSyrinx = 0xc7,
|
||
|
PTCPM = 0xdb,
|
||
|
PTDOSAccess = 0xe1,
|
||
|
PTDOSRO = 0xe3,
|
||
|
PTDOSSecondary = 0xf2,
|
||
|
PTBBT = 0xff
|
||
|
} partitionTypes;
|
||
|
|
||
|
#define PartitionIsExtended(P) ((P)->PartitionType == PTDosExtended)
|
||
|
|
||
|
typedef struct sPartition
|
||
|
{
|
||
|
unsigned char boot_flags;
|
||
|
unsigned char starting_head;
|
||
|
unsigned char starting_sector;
|
||
|
unsigned char starting_cylinder;
|
||
|
unsigned char partition_type;
|
||
|
unsigned char ending_head;
|
||
|
unsigned char ending_sector;
|
||
|
unsigned char ending_cylinder;
|
||
|
unsigned int starting_block;
|
||
|
unsigned int sector_count;
|
||
|
|
||
|
} tPartition;
|
||
|
|
||
|
#endif
|