/* * Creation Date: <1999/07/06 15:45:12 samuel> * Time-stamp: <2002/10/20 16:31:48 samuel> * * * * Headers describing the partition table * * Copyright (C) 1999, 2002 Samuel Rydh (samuel@ibrium.se) * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation * */ #ifndef _H_PARTITION_TABLE #define _H_PARTITION_TABLE /* This information is based upon IM vol V. */ #define DESC_MAP_SIGNATURE 0x4552 #define DESC_PART_SIGNATURE 0x504d enum { kPartitionAUXIsValid = 0x00000001, kPartitionAUXIsAllocated = 0x00000002, kPartitionAUXIsInUse = 0x00000004, kPartitionAUXIsBootValid = 0x00000008, kPartitionAUXIsReadable = 0x00000010, kPartitionAUXIsWriteable = 0x00000020, kPartitionAUXIsBootCodePositionIndependent = 0x00000040, kPartitionISMountedAtStartup = 0x40000000, kPartitionIsStartup = 0x80000000, kPartitionIsChainCompatible = 0x00000100, kPartitionIsRealDeviceDriver = 0x00000200, kPartitionCanChainToNext = 0x00000400, }; typedef struct { u32 ddBlock; /* first block of driver */ u16 ddSize; /* driver size in blocks */ s16 ddType; /* 1 & -1 for SCSI */ } driver_entry_t; typedef struct { /* Block 0 of a device */ u16 sbSig; /* always 0x4552 */ u16 sbBlockSize; /* 512 */ s32 sbBlkCount; /* #blocks on device */ u16 sbDevType; /* 0 */ u16 sbDevID; /* 0 */ u32 sbData; /* 0 */ s16 sbDrvrCount; /* #driver descriptors */ /* driver entries goes here */ driver_entry_t drivers[61] __attribute__ ((packed)); u16 filler1; u32 filler2; } desc_map_t; typedef struct { /* Partition descriptor */ u16 pmSig; /* always 0x504d 'PM' */ u16 pmSigPad; /* 0 */ u32 pmMapBlkCnt; /* #blocks in partition map */ u32 pmPyPartStart; /* first physical block of part. */ u32 pmPartBlkCnt; /* #blocks in partition */ char pmPartName[32]; /* partition name */ char pmPartType[32]; /* partition type */ /* these fields may or may not be used */ u32 pmLgDataStart; u32 pmDataCnt; u32 pmPartStatus; u32 pmLgBootStart; u32 pmBootSize; u32 pmBootLoad; u32 pmBootLoad2; u32 pmBootEntry; u32 pmBootEntry2; u32 pmBootCksum; char pmProcessor[16]; char filler[376]; /* might contain extra information */ } part_entry_t; #endif /* _H_PARTITION_TABLE */