OpenCore  1.0.4
OpenCore Bootloader
Loading...
Searching...
No Matches
Apfs.h File Reference

Go to the source code of this file.

Data Structures

struct  APFS_DRIVER_VERSION_
 
struct  PhysicalRange_
 
struct  APFS_WRAPPED_CRYPTO_STATE
 
struct  APFS_MODIFIED_BY
 
struct  APFS_OBJ_PHYS_
 
struct  APFS_NX_SUPERBLOCK_
 
struct  APFS_APFS_SUPERBLOCK_
 
struct  APFS_NX_EFI_JUMPSTART_
 

Macros

#define APFS_OBJECT_TYPE_NX_SUPERBLOCK   0x00000001U
 
#define APFS_OBJECT_TYPE_BTREE   0x00000002U
 
#define APFS_OBJECT_TYPE_BTREE_NODE   0x00000003U
 
#define APFS_OBJECT_TYPE_SPACEMAN   0x00000005U
 
#define APFS_OBJECT_TYPE_SPACEMAN_CAB   0x00000006U
 
#define APFS_OBJECT_TYPE_SPACEMAN_CIB   0x00000007U
 
#define APFS_OBJECT_TYPE_SPACEMAN_BITMAP   0x00000008U
 
#define APFS_OBJECT_TYPE_SPACEMAN_FREE_QUEUE   0x00000009U
 
#define APFS_OBJECT_TYPE_EXTENT_LIST_TREE   0x0000000aU
 
#define APFS_OBJECT_TYPE_OMAP   0x0000000bU
 
#define APFS_OBJECT_TYPE_CHECKPOINT_MAP   0x0000000cU
 
#define APFS_OBJECT_TYPE_FS   0x0000000dU
 
#define APFS_OBJECT_TYPE_FSTREE   0x0000000eU
 
#define APFS_OBJECT_TYPE_BLOCKREFTREE   0x0000000fU
 
#define APFS_OBJECT_TYPE_SNAPMETATREE   0x00000010U
 
#define APFS_OBJECT_TYPE_NX_REAPER   0x00000011U
 
#define APFS_OBJECT_TYPE_NX_REAP_LIST   0x00000012U
 
#define APFS_OBJECT_TYPE_OMAP_SNAPSHOT   0x00000013U
 
#define APFS_OBJECT_TYPE_EFI_JUMPSTART   0x00000014U
 
#define APFS_OBJECT_TYPE_FUSION_MIDDLE_TREE   0x00000015U
 
#define APFS_OBJECT_TYPE_NX_FUSION_WBC   0x00000016U
 
#define APFS_OBJECT_TYPE_NX_FUSION_WBC_LIST   0x00000017U
 
#define APFS_OBJECT_TYPE_ER_STATE   0x00000018U
 
#define APFS_OBJECT_TYPE_GBITMAP   0x00000019U
 
#define APFS_OBJECT_TYPE_GBITMAP_TREE   0x0000001aU
 
#define APFS_OBJECT_TYPE_GBITMAP_BLOCK   0x0000001bU
 
#define APFS_OBJECT_TYPE_INVALID   0x00000000U
 
#define APFS_OBJECT_TYPE_TEST   0x000000ffU
 
#define APFS_OBJ_VIRTUAL   0x00000000U
 
#define APFS_OBJ_EPHEMERAL   0x80000000U
 
#define APFS_OBJ_PHYSICAL   0x40000000U
 
#define APFS_OBJ_NOHEADER   0x20000000U
 
#define APFS_OBJ_ENCRYPTED   0x10000000U
 
#define APFS_OBJ_NONPERSISTENT   0x08000000U
 
#define APFS_NX_SIGNATURE   SIGNATURE_32 ('N', 'X', 'S', 'B')
 
#define APFS_NX_MAX_FILE_SYSTEMS   100
 
#define APFS_NX_EPH_INFO_COUNT   4
 
#define APFS_NX_EPH_MIN_BLOCK_COUNT   8
 
#define APFS_NX_MAX_FILE_SYSTEM_EPH_STRUCTS   4
 
#define APFS_NX_TX_MIN_CHECKPOINT_COUNT   4
 
#define APFS_NX_EPH_INFO_VERSION_1   1
 
#define APFS_NX_NUM_COUNTERS   32
 
#define APFS_NX_MINIMUM_BLOCK_SIZE   BASE_4KB
 
#define APFS_NX_DEFAULT_BLOCK_SIZE   BASE_4KB
 
#define APFS_NX_MAXIMUM_BLOCK_SIZE   BASE_64KB
 
#define APFS_NX_EFI_JUMPSTART_MAGIC   SIGNATURE_32 ('J', 'S', 'D', 'R')
 
#define APFS_NX_EFI_JUMPSTART_VERSION   1
 
#define APFS_MAX_HIST   8
 
#define APFS_MODIFIED_NAMELEN   32
 
#define APFS_VOLNAME_LEN   256
 
#define APFS_FUSION_TIER2_DEVICE_BYTE_ADDR   0x4000000000000000ULL
 
#define APFS_DRIVER_VERSION_MAGIC   SIGNATURE_32 ('A', 'P', 'F', 'S')
 

Typedefs

typedef struct APFS_DRIVER_VERSION_ APFS_DRIVER_VERSION
 
typedef struct PhysicalRange_ APFS_PHYSICAL_RANGE
 
typedef struct APFS_OBJ_PHYS_ APFS_OBJ_PHYS
 
typedef struct APFS_NX_SUPERBLOCK_ APFS_NX_SUPERBLOCK
 
typedef struct APFS_APFS_SUPERBLOCK_ APFS_APFS_SUPERBLOCK
 
typedef struct APFS_NX_EFI_JUMPSTART_ APFS_NX_EFI_JUMPSTART
 

Functions

 STATIC_ASSERT (sizeof(APFS_NX_SUPERBLOCK)==1384, "APFS_NX_SUPERBLOCK has unexpected size")
 

Detailed Description

Copyright (C) 2020, vit9696. All rights reserved.

All rights reserved.

This program and the accompanying materials are licensed and made available under the terms and conditions of the BSD License which accompanies this distribution. The full text of the license may be found at http://opensource.org/licenses/bsd-license.php

THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.

Definition in file Apfs.h.

Macro Definition Documentation

◆ APFS_DRIVER_VERSION_MAGIC

#define APFS_DRIVER_VERSION_MAGIC   SIGNATURE_32 ('A', 'P', 'F', 'S')

Definition at line 93 of file Apfs.h.

◆ APFS_FUSION_TIER2_DEVICE_BYTE_ADDR

#define APFS_FUSION_TIER2_DEVICE_BYTE_ADDR   0x4000000000000000ULL

Definition at line 88 of file Apfs.h.

◆ APFS_MAX_HIST

#define APFS_MAX_HIST   8

Definition at line 81 of file Apfs.h.

◆ APFS_MODIFIED_NAMELEN

#define APFS_MODIFIED_NAMELEN   32

Definition at line 82 of file Apfs.h.

◆ APFS_NX_DEFAULT_BLOCK_SIZE

#define APFS_NX_DEFAULT_BLOCK_SIZE   BASE_4KB

Definition at line 72 of file Apfs.h.

◆ APFS_NX_EFI_JUMPSTART_MAGIC

#define APFS_NX_EFI_JUMPSTART_MAGIC   SIGNATURE_32 ('J', 'S', 'D', 'R')

Definition at line 78 of file Apfs.h.

◆ APFS_NX_EFI_JUMPSTART_VERSION

#define APFS_NX_EFI_JUMPSTART_VERSION   1

Definition at line 79 of file Apfs.h.

◆ APFS_NX_EPH_INFO_COUNT

#define APFS_NX_EPH_INFO_COUNT   4

Definition at line 65 of file Apfs.h.

◆ APFS_NX_EPH_INFO_VERSION_1

#define APFS_NX_EPH_INFO_VERSION_1   1

Definition at line 69 of file Apfs.h.

◆ APFS_NX_EPH_MIN_BLOCK_COUNT

#define APFS_NX_EPH_MIN_BLOCK_COUNT   8

Definition at line 66 of file Apfs.h.

◆ APFS_NX_MAX_FILE_SYSTEM_EPH_STRUCTS

#define APFS_NX_MAX_FILE_SYSTEM_EPH_STRUCTS   4

Definition at line 67 of file Apfs.h.

◆ APFS_NX_MAX_FILE_SYSTEMS

#define APFS_NX_MAX_FILE_SYSTEMS   100

Definition at line 64 of file Apfs.h.

◆ APFS_NX_MAXIMUM_BLOCK_SIZE

#define APFS_NX_MAXIMUM_BLOCK_SIZE   BASE_64KB

Definition at line 73 of file Apfs.h.

◆ APFS_NX_MINIMUM_BLOCK_SIZE

#define APFS_NX_MINIMUM_BLOCK_SIZE   BASE_4KB

Definition at line 71 of file Apfs.h.

◆ APFS_NX_NUM_COUNTERS

#define APFS_NX_NUM_COUNTERS   32

Definition at line 70 of file Apfs.h.

◆ APFS_NX_SIGNATURE

#define APFS_NX_SIGNATURE   SIGNATURE_32 ('N', 'X', 'S', 'B')

Definition at line 63 of file Apfs.h.

◆ APFS_NX_TX_MIN_CHECKPOINT_COUNT

#define APFS_NX_TX_MIN_CHECKPOINT_COUNT   4

Definition at line 68 of file Apfs.h.

◆ APFS_OBJ_ENCRYPTED

#define APFS_OBJ_ENCRYPTED   0x10000000U

Definition at line 57 of file Apfs.h.

◆ APFS_OBJ_EPHEMERAL

#define APFS_OBJ_EPHEMERAL   0x80000000U

Definition at line 54 of file Apfs.h.

◆ APFS_OBJ_NOHEADER

#define APFS_OBJ_NOHEADER   0x20000000U

Definition at line 56 of file Apfs.h.

◆ APFS_OBJ_NONPERSISTENT

#define APFS_OBJ_NONPERSISTENT   0x08000000U

Definition at line 58 of file Apfs.h.

◆ APFS_OBJ_PHYSICAL

#define APFS_OBJ_PHYSICAL   0x40000000U

Definition at line 55 of file Apfs.h.

◆ APFS_OBJ_VIRTUAL

#define APFS_OBJ_VIRTUAL   0x00000000U

Definition at line 53 of file Apfs.h.

◆ APFS_OBJECT_TYPE_BLOCKREFTREE

#define APFS_OBJECT_TYPE_BLOCKREFTREE   0x0000000fU

Definition at line 34 of file Apfs.h.

◆ APFS_OBJECT_TYPE_BTREE

#define APFS_OBJECT_TYPE_BTREE   0x00000002U

Definition at line 22 of file Apfs.h.

◆ APFS_OBJECT_TYPE_BTREE_NODE

#define APFS_OBJECT_TYPE_BTREE_NODE   0x00000003U

Definition at line 23 of file Apfs.h.

◆ APFS_OBJECT_TYPE_CHECKPOINT_MAP

#define APFS_OBJECT_TYPE_CHECKPOINT_MAP   0x0000000cU

Definition at line 31 of file Apfs.h.

◆ APFS_OBJECT_TYPE_EFI_JUMPSTART

#define APFS_OBJECT_TYPE_EFI_JUMPSTART   0x00000014U

Definition at line 39 of file Apfs.h.

◆ APFS_OBJECT_TYPE_ER_STATE

#define APFS_OBJECT_TYPE_ER_STATE   0x00000018U

Definition at line 43 of file Apfs.h.

◆ APFS_OBJECT_TYPE_EXTENT_LIST_TREE

#define APFS_OBJECT_TYPE_EXTENT_LIST_TREE   0x0000000aU

Definition at line 29 of file Apfs.h.

◆ APFS_OBJECT_TYPE_FS

#define APFS_OBJECT_TYPE_FS   0x0000000dU

Definition at line 32 of file Apfs.h.

◆ APFS_OBJECT_TYPE_FSTREE

#define APFS_OBJECT_TYPE_FSTREE   0x0000000eU

Definition at line 33 of file Apfs.h.

◆ APFS_OBJECT_TYPE_FUSION_MIDDLE_TREE

#define APFS_OBJECT_TYPE_FUSION_MIDDLE_TREE   0x00000015U

Definition at line 40 of file Apfs.h.

◆ APFS_OBJECT_TYPE_GBITMAP

#define APFS_OBJECT_TYPE_GBITMAP   0x00000019U

Definition at line 44 of file Apfs.h.

◆ APFS_OBJECT_TYPE_GBITMAP_BLOCK

#define APFS_OBJECT_TYPE_GBITMAP_BLOCK   0x0000001bU

Definition at line 46 of file Apfs.h.

◆ APFS_OBJECT_TYPE_GBITMAP_TREE

#define APFS_OBJECT_TYPE_GBITMAP_TREE   0x0000001aU

Definition at line 45 of file Apfs.h.

◆ APFS_OBJECT_TYPE_INVALID

#define APFS_OBJECT_TYPE_INVALID   0x00000000U

Definition at line 47 of file Apfs.h.

◆ APFS_OBJECT_TYPE_NX_FUSION_WBC

#define APFS_OBJECT_TYPE_NX_FUSION_WBC   0x00000016U

Definition at line 41 of file Apfs.h.

◆ APFS_OBJECT_TYPE_NX_FUSION_WBC_LIST

#define APFS_OBJECT_TYPE_NX_FUSION_WBC_LIST   0x00000017U

Definition at line 42 of file Apfs.h.

◆ APFS_OBJECT_TYPE_NX_REAP_LIST

#define APFS_OBJECT_TYPE_NX_REAP_LIST   0x00000012U

Definition at line 37 of file Apfs.h.

◆ APFS_OBJECT_TYPE_NX_REAPER

#define APFS_OBJECT_TYPE_NX_REAPER   0x00000011U

Definition at line 36 of file Apfs.h.

◆ APFS_OBJECT_TYPE_NX_SUPERBLOCK

#define APFS_OBJECT_TYPE_NX_SUPERBLOCK   0x00000001U

Definition at line 21 of file Apfs.h.

◆ APFS_OBJECT_TYPE_OMAP

#define APFS_OBJECT_TYPE_OMAP   0x0000000bU

Definition at line 30 of file Apfs.h.

◆ APFS_OBJECT_TYPE_OMAP_SNAPSHOT

#define APFS_OBJECT_TYPE_OMAP_SNAPSHOT   0x00000013U

Definition at line 38 of file Apfs.h.

◆ APFS_OBJECT_TYPE_SNAPMETATREE

#define APFS_OBJECT_TYPE_SNAPMETATREE   0x00000010U

Definition at line 35 of file Apfs.h.

◆ APFS_OBJECT_TYPE_SPACEMAN

#define APFS_OBJECT_TYPE_SPACEMAN   0x00000005U

Definition at line 24 of file Apfs.h.

◆ APFS_OBJECT_TYPE_SPACEMAN_BITMAP

#define APFS_OBJECT_TYPE_SPACEMAN_BITMAP   0x00000008U

Definition at line 27 of file Apfs.h.

◆ APFS_OBJECT_TYPE_SPACEMAN_CAB

#define APFS_OBJECT_TYPE_SPACEMAN_CAB   0x00000006U

Definition at line 25 of file Apfs.h.

◆ APFS_OBJECT_TYPE_SPACEMAN_CIB

#define APFS_OBJECT_TYPE_SPACEMAN_CIB   0x00000007U

Definition at line 26 of file Apfs.h.

◆ APFS_OBJECT_TYPE_SPACEMAN_FREE_QUEUE

#define APFS_OBJECT_TYPE_SPACEMAN_FREE_QUEUE   0x00000009U

Definition at line 28 of file Apfs.h.

◆ APFS_OBJECT_TYPE_TEST

#define APFS_OBJECT_TYPE_TEST   0x000000ffU

Definition at line 48 of file Apfs.h.

◆ APFS_VOLNAME_LEN

#define APFS_VOLNAME_LEN   256

Definition at line 83 of file Apfs.h.

Typedef Documentation

◆ APFS_APFS_SUPERBLOCK

APSB volume header structure

◆ APFS_DRIVER_VERSION

APFS driver version structure.

◆ APFS_NX_EFI_JUMPSTART

JSDR block structure

◆ APFS_NX_SUPERBLOCK

NXSB Container Superblock The container superblock is the entry point to the filesystem. Because of the structure with containers and flexible volumes, allocation needs to handled on a container level. The container superblock contains information on the blocksize, the number of blocks and pointers to the spacemanager for this task. Additionally the block IDs of all volumes are stored in the superblock. To map block IDs to block offsets a pointer to a block map b-tree is stored. This b-tree contains entries for each volume with its ID and offset.

◆ APFS_OBJ_PHYS

typedef struct APFS_OBJ_PHYS_ APFS_OBJ_PHYS

Any object is prefixed with this header.

◆ APFS_PHYSICAL_RANGE

A range of physical addresses.

Function Documentation

◆ STATIC_ASSERT()

STATIC_ASSERT ( sizeof(APFS_NX_SUPERBLOCK) = =1384,
"APFS_NX_SUPERBLOCK has unexpected size"  )