OpenCore  1.0.4
OpenCore Bootloader
Loading...
Searching...
No Matches
OcApfsInternal.h
Go to the documentation of this file.
1
15#ifndef OC_APFS_INTERNAL_H
16#define OC_APFS_INTERNAL_H
17
18#include <Uefi.h>
20#include <Protocol/BlockIo.h>
22
23#define APFS_PRIVATE_DATA_SIGNATURE SIGNATURE_32 ('A', 'F', 'J', 'S')
24
30#ifdef MDE_CPU_X64
31#define APFS_MOD_MAX_UINT32(Value, Result) do { *(Result) = ((Value) % MAX_UINT32); } while (0)
32#else
33#define APFS_MOD_MAX_UINT32(Value, Result) do { DivU64x32Remainder ((Value), MAX_UINT32, (Result)); } while (0)
34#endif
35
37
41typedef struct APFS_PRIVATE_DATA_ {
42 //
43 // Set to APFS_PRIVATE_DATA_SIGNATURE.
44 //
45 UINT32 Signature;
46 //
47 // Linked to next instance of APFS_PRIVATE_DATA.
48 //
49 LIST_ENTRY Link;
50 //
51 // Location information describing controller and container.
52 //
54 //
55 // Block I/O protocol.
56 //
57 EFI_BLOCK_IO_PROTOCOL *BlockIo;
58 //
59 // APFS block size, a multiple of Block I/O block size.
60 //
62 //
63 // Number of Block I/O blocks in APFS block.
64 //
66 //
67 // JumpStart driver LBA.
68 //
70 //
71 // Fusion UUID.
72 //
74 //
75 // Mask used to determine where block belongs.
76 //
77 UINT64 FusionMask;
78 //
79 // Fusion sibling private data.
80 //
82 //
83 // Can try loading bundled driver.
84 //
86 //
87 // Partition is part of Fusion drive.
88 //
89 BOOLEAN IsFusion;
90 //
91 // Partition is master Fusion partition.
92 //
95
99extern LIST_ENTRY mApfsPrivateDataList;
100
101EFI_STATUS
103 IN EFI_BLOCK_IO_PROTOCOL *BlockIo,
104 OUT APFS_NX_SUPERBLOCK **SuperBlockPtr
105 );
106
107EFI_STATUS
109 IN APFS_PRIVATE_DATA *PrivateData,
110 OUT UINT32 *DriverSize,
111 OUT VOID **DriverBuffer
112 );
113
114VOID
116 IN APFS_NX_SUPERBLOCK *SuperBlock,
117 OUT APFS_PRIVATE_DATA *PrivateData
118 );
119
120EFI_BLOCK_IO_PROTOCOL *
122 IN APFS_PRIVATE_DATA *PrivateData,
123 IN UINT64 Block,
124 OUT EFI_LBA *Lba
125 );
126
127#endif // OC_APFS_INTERNAL_H
LIST_ENTRY mApfsPrivateDataList
EFI_BLOCK_IO_PROTOCOL * InternalApfsTranslateBlock(IN APFS_PRIVATE_DATA *PrivateData, IN UINT64 Block, OUT EFI_LBA *Lba)
VOID InternalApfsInitFusionData(IN APFS_NX_SUPERBLOCK *SuperBlock, OUT APFS_PRIVATE_DATA *PrivateData)
EFI_STATUS InternalApfsReadDriver(IN APFS_PRIVATE_DATA *PrivateData, OUT UINT32 *DriverSize, OUT VOID **DriverBuffer)
Definition OcApfsIo.c:403
EFI_STATUS InternalApfsReadSuperBlock(IN EFI_BLOCK_IO_PROTOCOL *BlockIo, OUT APFS_NX_SUPERBLOCK **SuperBlockPtr)
Definition OcApfsIo.c:283
struct APFS_PRIVATE_DATA_ APFS_PRIVATE_DATA
APFS_PRIVATE_DATA * FusionSibling
APFS_EFIBOOTRECORD_LOCATION_INFO LocationInfo
EFI_BLOCK_IO_PROTOCOL * BlockIo