1 /* 2 * Creation Date: <1999/07/06 15:45:12 samuel> 3 * Time-stamp: <2002/10/20 16:31:48 samuel> 4 * 5 * <partition_table.h> 6 * 7 * Headers describing the partition table 8 * 9 * Copyright (C) 1999, 2002 Samuel Rydh (samuel@ibrium.se) 10 * 11 * This program is free software; you can redistribute it and/or 12 * modify it under the terms of the GNU General Public License 13 * as published by the Free Software Foundation 14 * 15 */ 16 17 #ifndef _H_PARTITION_TABLE 18 #define _H_PARTITION_TABLE 19 20 /* This information is based upon IM vol V. */ 21 22 #define DESC_MAP_SIGNATURE 0x4552 23 #define DESC_PART_SIGNATURE 0x504d 24 25 enum { 26 kPartitionAUXIsValid = 0x00000001, 27 kPartitionAUXIsAllocated = 0x00000002, 28 kPartitionAUXIsInUse = 0x00000004, 29 kPartitionAUXIsBootValid = 0x00000008, 30 kPartitionAUXIsReadable = 0x00000010, 31 kPartitionAUXIsWriteable = 0x00000020, 32 kPartitionAUXIsBootCodePositionIndependent = 0x00000040, 33 kPartitionISMountedAtStartup = 0x40000000, 34 kPartitionIsStartup = 0x80000000, 35 kPartitionIsChainCompatible = 0x00000100, 36 kPartitionIsRealDeviceDriver = 0x00000200, 37 kPartitionCanChainToNext = 0x00000400, 38 }; 39 40 typedef struct { 41 u32 ddBlock; /* first block of driver */ 42 u16 ddSize; /* driver size in blocks */ 43 s16 ddType; /* 1 & -1 for SCSI */ 44 } driver_entry_t; 45 46 typedef struct { /* Block 0 of a device */ 47 u16 sbSig; /* always 0x4552 */ 48 u16 sbBlockSize; /* 512 */ 49 s32 sbBlkCount; /* #blocks on device */ 50 u16 sbDevType; /* 0 */ 51 u16 sbDevID; /* 0 */ 52 u32 sbData; /* 0 */ 53 s16 sbDrvrCount; /* #driver descriptors */ 54 55 /* driver entries goes here */ 56 driver_entry_t drivers[61] __attribute__ ((packed)); 57 58 u16 filler1; 59 u32 filler2; 60 } desc_map_t; 61 62 typedef struct { /* Partition descriptor */ 63 u16 pmSig; /* always 0x504d 'PM' */ 64 u16 pmSigPad; /* 0 */ 65 u32 pmMapBlkCnt; /* #blocks in partition map */ 66 u32 pmPyPartStart; /* first physical block of part. */ 67 u32 pmPartBlkCnt; /* #blocks in partition */ 68 char pmPartName[32]; /* partition name */ 69 char pmPartType[32]; /* partition type */ 70 71 /* these fields may or may not be used */ 72 u32 pmLgDataStart; 73 u32 pmDataCnt; 74 u32 pmPartStatus; 75 u32 pmLgBootStart; 76 u32 pmBootSize; 77 u32 pmBootLoad; 78 u32 pmBootLoad2; 79 u32 pmBootEntry; 80 u32 pmBootEntry2; 81 u32 pmBootCksum; 82 char pmProcessor[16]; 83 84 char filler[376]; /* might contain extra information */ 85 } part_entry_t; 86 87 88 #endif /* _H_PARTITION_TABLE */ 89