diff options
| author | Paul Oliver <contact@pauloliver.dev> | 2026-04-16 03:18:10 +0200 |
|---|---|---|
| committer | Paul Oliver <contact@pauloliver.dev> | 2026-04-16 03:18:10 +0200 |
| commit | 0f9e16add75e5d5de0463241120cf4584194b7e6 (patch) | |
| tree | ab8625b7c0194788c6a749a43424cdea6981558b /core/compress.c | |
| parent | d36b3f200dbaf19afd3b5e33f6a575961c471b72 (diff) | |
Makes event array compression multi-threaded
Diffstat (limited to 'core/compress.c')
| -rw-r--r-- | core/compress.c | 97 |
1 files changed, 59 insertions, 38 deletions
diff --git a/core/compress.c b/core/compress.c index df61123..1938bb3 100644 --- a/core/compress.c +++ b/core/compress.c @@ -1,56 +1,77 @@ -void salis_deflate(z_stream *strm, size_t size, Bytef *in, Bytef *out) { - assert(strm); - assert(size); - assert(in); - assert(out); +#define EVA_SIZE (sizeof(uint64_t) * MVEC_SIZE) - strm->zalloc = NULL; - strm->zfree = NULL; - strm->opaque = NULL; +struct DeflateParams { + z_stream strm; + size_t size; + Bytef *in; + Bytef *out; + uint8_t tgap[THREAD_GAP]; +}; - deflateInit(strm, Z_DEFAULT_COMPRESSION); +struct InflateParams { + z_stream strm; + size_t avail_in; + size_t size; + Bytef *in; + Bytef *out; + uint8_t tgap[THREAD_GAP]; +}; - strm->avail_in = size; - strm->avail_out = size; - strm->next_in = in; - strm->next_out = out; +int salis_deflate(struct DeflateParams *params) { + assert(params); + assert(params->size); + assert(params->in); + assert(params->out); - deflate(strm, Z_FINISH); -} + params->strm.zalloc = NULL; + params->strm.zfree = NULL; + params->strm.opaque = NULL; + + deflateInit(¶ms->strm, Z_DEFAULT_COMPRESSION); -void salis_deflate_end(z_stream *strm) { - assert(strm); + params->strm.avail_in = params->size; + params->strm.avail_out = params->size; + params->strm.next_in = params->in; + params->strm.next_out = params->out; - deflateEnd(strm); + deflate(¶ms->strm, Z_FINISH); + + return 0; } -void salis_inflate(z_stream *strm, size_t avail_in, size_t size, Bytef *in, Bytef *out) { - assert(strm); - assert(avail_in); - assert(size); - assert(in); - assert(out); +void salis_deflate_end(struct DeflateParams *params) { + assert(params); + deflateEnd(¶ms->strm); +} - strm->next_in = in; - strm->avail_in = avail_in; - strm->zalloc = NULL; - strm->zfree = NULL; - strm->opaque = NULL; +int salis_inflate(struct InflateParams *params) { + assert(params); + assert(params->avail_in); + assert(params->size); + assert(params->in); + assert(params->out); - inflateInit(strm); + params->strm.next_in = params->in; + params->strm.avail_in = params->avail_in; + params->strm.zalloc = NULL; + params->strm.zfree = NULL; + params->strm.opaque = NULL; - strm->avail_out = size; - strm->next_out = out; + inflateInit(¶ms->strm); + + params->strm.avail_out = params->size; + params->strm.next_out = params->out; #if defined(NDEBUG) - inflate(strm, Z_FINISH); + inflate(¶ms->strm, Z_FINISH); #else - assert(inflate(strm, Z_FINISH)); + assert(inflate(¶ms->strm, Z_FINISH)); #endif -} -void salis_inflate_end(z_stream *strm) { - assert(strm); + return 0; +} - inflateEnd(strm); +void salis_inflate_end(struct InflateParams *params) { + assert(params); + inflateEnd(¶ms->strm); } |
