ra8-firmware 0.1.0
Bare-metal firmware for the Renesas RA8 family (RA8D2 / RA8P1)
Loading...
Searching...
No Matches
unarch_xz.h
Go to the documentation of this file.
1
44#pragma once
45
46#include <stddef.h>
47#include <stdint.h>
48
49#include "ra8_decomp_limits.h"
50#include "ra8_err.h"
51#include "unarch_io.h"
52
53#ifdef __cplusplus
54extern "C" {
55#endif
56
70typedef enum : uint32_t {
74
98typedef struct {
99 struct xz_dec* dec;
100 bool live;
102
126[[nodiscard]] bool unarch_xz_magic(const uint8_t* sig, size_t sig_len);
127
158[[nodiscard]] ra8_err_t
159unarch_xz_stream_begin(unarch_xz_stream_t* xs, void* scratch, uint32_t scratch_len);
160
203 const uint8_t* in,
204 size_t in_len,
205 size_t* in_used,
206 uint8_t* out,
207 size_t out_cap,
208 size_t* out_used,
209 bool* end);
210
230
282[[nodiscard]] ra8_err_t unarch_xz_unwrap(unarch_read_fn read,
283 void* ctx,
284 uint64_t size,
285 uint8_t* out,
286 size_t out_cap,
287 void* scratch,
288 uint32_t scratch_len,
289 const ra8_decomp_limits_t* limits,
290 size_t* out_len);
291
292#ifdef __cplusplus
293}
294#endif
Unified decompression-limits policy: one bound set for every decoder.
Error Code Definitions for ra8-firmware.
ra8_err_codes_t ra8_err_t
Canonical error-return type used by every ra8-firmware API.
Definition ra8_err.h:546
One decompression policy: the five resource bounds decoders enforce.
One multi-call XZ decode session (opaque decoder + liveness flag).
Definition unarch_xz.h:98
struct xz_dec * dec
xz-embedded decoder state (pool-allocated).
Definition unarch_xz.h:99
bool live
Session is begun and not yet ended.
Definition unarch_xz.h:100
Shared seek+read seam and flat-memory backing for the unarchivers.
size_t(* unarch_read_fn)(void *ctx, uint64_t offset, void *buf, size_t len)
Seek+read backing over an archive's bytes.
Definition unarch_io.h:55
bool unarch_xz_magic(const uint8_t *sig, size_t sig_len)
Whether sig begins with the XZ stream header magic.
Definition unarch_xz.c:77
ra8_err_t unarch_xz_stream_run(unarch_xz_stream_t *xs, const uint8_t *in, size_t in_len, size_t *in_used, uint8_t *out, size_t out_cap, size_t *out_used, bool *end)
Feed one input chunk through a live session, producing output.
Definition unarch_xz.c:168
void unarch_xz_stream_end(unarch_xz_stream_t *xs)
End a session: free the decoder and release the allocation pool.
Definition unarch_xz.c:212
ra8_err_t unarch_xz_unwrap(unarch_read_fn read, void *ctx, uint64_t size, uint8_t *out, size_t out_cap, void *scratch, uint32_t scratch_len, const ra8_decomp_limits_t *limits, size_t *out_len)
Decode one whole XZ stream from a read seam into a caller arena.
Definition unarch_xz.c:351
ra8_err_t unarch_xz_stream_begin(unarch_xz_stream_t *xs, void *scratch, uint32_t scratch_len)
Begin a multi-call XZ decode session over a caller scratch.
Definition unarch_xz.c:96
unarch_xz_dims_t
Scratch sizing constants for the XZ decoder wrappers.
Definition unarch_xz.h:70
@ k_unarch_xz_sig_len
XZ stream header magic length.
Definition unarch_xz.h:72
@ k_unarch_xz_state_reserve
Decoder-state slice of the scratch.
Definition unarch_xz.h:71