libaaruformat 1.0
Aaru Data Preservation Suite - Format Library
Loading...
Searching...
No Matches
context.h File Reference

Central runtime context structures for libaaruformat (image state, caches, checksum buffers). More...

#include "blake3.h"
#include "crc64.h"
#include "hash_map.h"
#include "lru.h"
#include "md5.h"
#include "sha1.h"
#include "sha256.h"
#include "spamsum.h"
#include "structs.h"
#include "utarray.h"

Go to the source code of this file.

Data Structures

struct  CdEccContext
 Lookup tables and state for Compact Disc EDC/ECC (P/Q) regeneration / verification. More...
struct  Checksums
 Collected whole‑image checksums / hashes present in a checksum block. More...
struct  mediaTagEntry
 Hash table entry for an arbitrary media tag (e.g., proprietary drive/medium descriptor). More...
struct  TapeFileHashEntry
struct  TapePartitionHashEntry
struct  TapeDdtHashEntry
struct  aaruformat_context
 Master context representing an open or in‑creation Aaru image. More...
struct  DumpHardwareEntriesWithData
 In-memory representation of a dump hardware entry plus decoded variable-length fields & extents. More...
struct  DumpExtent
 Inclusive [start,end] logical sector range contributed by a single hardware environment. More...

Macros

#define MD5_DIGEST_LENGTH   16

Typedefs

typedef struct CdEccContext CdEccContext
typedef struct Checksums Checksums
typedef struct mediaTagEntry mediaTagEntry
typedef struct TapeFileHashEntry tapeFileHashEntry
typedef struct TapePartitionHashEntry TapePartitionHashEntry
typedef struct TapeDdtHashEntry TapeDdtHashEntry
typedef struct aaruformat_context aaruformat_context
typedef struct DumpHardwareEntriesWithData DumpHardwareEntriesWithData
typedef struct DumpExtent DumpExtent

Detailed Description

Central runtime context structures for libaaruformat (image state, caches, checksum buffers).

The principal structure, aaruformat_context, aggregates: header metadata, open stream handle, deduplication tables (DDT) currently in memory, optical disc auxiliary data (sector prefix/suffix/subchannel), track listings, geometry & metadata blocks, checksum accumulators, CRC & ECC helper contexts, hash map for deduplication, and transient write buffers.

Memory ownership model (unless otherwise stated): if a pointer field is non-NULL it is owned by the context and will be freed (or otherwise released) during context close / destruction. Callers must not free or reallocate these pointers directly. External callers should treat all internal buffers as read‑only unless explicitly writing.

Threading: a single context instance is NOT thread-safe; serialize access if used across threads. Lifetime: allocate, initialize/open, perform read/write/verify operations, then close/free.

Deduplication tables (DDT): only a subset (primary table + an active secondary + optional cache) is retained in RAM; large images may rely on lazy loading of secondary tables. Flags (inMemoryDdt, userDataDdt*, cachedSecondary*) indicate what is currently resident.

Optical auxiliary buffers (sectorPrefix / sectorSuffix / subchannel / corrected variants) are populated only for images where those components exist (e.g., raw CD dumps). They may be NULL for block devices / non‑optical media.

Index handling: indexEntries (UT_array) holds a flattened list of IndexEntry structures (regardless of v1/v2/v3). hash_map_t *sectorHashMap provides fast duplicate detection keyed by content fingerprint / sparse sector key.

Invariants / sanity expectations (not strictly enforced everywhere):

  • magic == AARU_MAGIC after successful open/create.
  • header.imageMajorVersion <= AARUF_VERSION.
  • imageStream != NULL when any I/O method is in progress.
  • If deduplicate == false, sectorHashMap may still be populated for bookkeeping but duplicates are stored independently.
  • If userDataDdtMini != NULL then userDataDdtBig == NULL (and vice versa) for a given level.

Definition in file context.h.

Macro Definition Documentation

◆ MD5_DIGEST_LENGTH

#define MD5_DIGEST_LENGTH   16

Definition at line 69 of file context.h.

Referenced by process_checksum_block(), and write_checksum_block().

Typedef Documentation

◆ aaruformat_context

typedef struct aaruformat_context aaruformat_context

◆ CdEccContext

typedef struct CdEccContext CdEccContext

◆ Checksums

typedef struct Checksums Checksums

◆ DumpExtent

typedef struct DumpExtent DumpExtent

◆ DumpHardwareEntriesWithData

typedef struct DumpHardwareEntriesWithData DumpHardwareEntriesWithData

◆ mediaTagEntry

typedef struct mediaTagEntry mediaTagEntry

◆ TapeDdtHashEntry

typedef struct TapeDdtHashEntry TapeDdtHashEntry

◆ tapeFileHashEntry

◆ TapePartitionHashEntry

typedef struct TapePartitionHashEntry TapePartitionHashEntry