CloverBootloader/OsxAptioFixDrv/Hibernate.h
2019-09-03 12:58:42 +03:00

121 lines
2.7 KiB
C

/**
Hibernate related definitions.
by dmazar
**/
#pragma pack(push, 1)
//
// Mavericks image header
// It's good for Lion and Mountain Lion also since
// the fields that we are using are at the same place
// accross those versions.
//
typedef struct _IOPolledFileExtent
{
UINT64 start;
UINT64 length;
} IOPolledFileExtent;
typedef struct _IOHibernateImageHeader
{
UINT64 imageSize;
UINT64 image1Size;
UINT32 restore1CodePhysPage;
UINT32 reserved1;
UINT64 restore1CodeVirt;
UINT32 restore1PageCount;
UINT32 restore1CodeOffset;
UINT32 restore1StackOffset;
UINT32 pageCount;
UINT32 bitmapSize;
UINT32 restore1Sum;
UINT32 image1Sum;
UINT32 image2Sum;
UINT32 actualRestore1Sum;
UINT32 actualImage1Sum;
UINT32 actualImage2Sum;
UINT32 actualUncompressedPages;
UINT32 conflictCount;
UINT32 nextFree;
UINT32 signature;
UINT32 processorFlags;
UINT32 runtimePages;
UINT32 runtimePageCount;
UINT64 runtimeVirtualPages;
UINT32 performanceDataStart;
UINT32 performanceDataSize;
UINT64 encryptStart;
UINT64 machineSignature;
UINT32 previewSize;
UINT32 previewPageListSize;
UINT32 diag[4];
UINT32 handoffPages;
UINT32 handoffPageCount;
UINT32 systemTableOffset;
UINT32 debugFlags;
UINT32 options;
UINT32 sleepTime;
UINT32 compression;
UINT32 reserved[58]; // make sizeof == 512
UINT32 booterTime0;
UINT32 booterTime1;
UINT32 booterTime2;
UINT32 booterStart;
UINT32 smcStart;
UINT32 connectDisplayTime;
UINT32 splashTime;
UINT32 booterTime;
UINT32 trampolineTime;
UINT64 encryptEnd;
UINT64 deviceBase;
UINT32 deviceBlockSize;
UINT32 fileExtentMapSize;
IOPolledFileExtent fileExtentMap[2];
} IOHibernateImageHeader;
enum
{
kIOHibernateHandoffType = 0x686f0000,
kIOHibernateHandoffTypeEnd = kIOHibernateHandoffType + 0,
kIOHibernateHandoffTypeGraphicsInfo = kIOHibernateHandoffType + 1,
kIOHibernateHandoffTypeCryptVars = kIOHibernateHandoffType + 2,
kIOHibernateHandoffTypeMemoryMap = kIOHibernateHandoffType + 3,
kIOHibernateHandoffTypeDeviceTree = kIOHibernateHandoffType + 4,
kIOHibernateHandoffTypeDeviceProperties = kIOHibernateHandoffType + 5,
kIOHibernateHandoffTypeKeyStore = kIOHibernateHandoffType + 6,
};
typedef struct _IOHibernateHandoff
{
UINT32 type;
UINT32 bytecount;
//UINT8 data[];
} IOHibernateHandoff;
#pragma pack(pop)