Sha256: d53854e5e0add818126c0be21d1cec374c69e748d5f35f4c741e3be1f6aeb4b3

Contents?: true

Size: 1.56 KB

Versions: 8

Compression:

Stored size: 1.56 KB

Contents

#ifndef EXTZSTD_NOGVLS_H
#define EXTZSTD_NOGVLS_H 1

#include "extzstd.h"

static inline void *
aux_thread_call_without_gvl(void *(*func)(va_list *), void (*cancel)(va_list *), ...)
{
    va_list va1, va2;
    va_start(va1, cancel);
    va_start(va2, cancel);
    void *p = rb_thread_call_without_gvl(
            (void *(*)(void *))func, &va1,
            (void (*)(void *))cancel, &va2);
    va_end(va2);
    va_end(va1);
    return p;
}

static void *
aux_ZSTD_compress_nogvl(va_list *vp)
{
    char *dest = va_arg(*vp, char *);
    size_t destsize = va_arg(*vp, size_t);
    const char *src = va_arg(*vp, const char *);
    size_t srcsize = va_arg(*vp, size_t);
    int level = va_arg(*vp, int);
    return (void *)ZSTD_compress(dest, destsize, src, srcsize, level);
}

static inline size_t
aux_ZSTD_compress(char *dest, size_t destsize, const char *src, size_t srcsize, int level)
{
    return (size_t)aux_thread_call_without_gvl(
            aux_ZSTD_compress_nogvl, NULL,
            dest, destsize, src, srcsize, level);
}

static void *
aux_ZSTD_decompress_nogvl(va_list *vp)
{
    char *dest = va_arg(*vp, char *);
    size_t destsize = va_arg(*vp, size_t);
    const char *src = va_arg(*vp, const char *);
    size_t srcsize = va_arg(*vp, size_t);
    return (void *)ZSTD_decompress(dest, destsize, src, srcsize);
}

static inline size_t
aux_ZSTD_decompress(char *dest, size_t destsize, const char *src, size_t srcsize)
{
    return (size_t)aux_thread_call_without_gvl(
            aux_ZSTD_decompress_nogvl, NULL,
            dest, destsize, src, srcsize);
}

#endif /* EXTZSTD_NOGVLS_H */

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
extzstd-0.3.3 ext/extzstd_nogvls.h
extzstd-0.3.2 ext/extzstd_nogvls.h
extzstd-0.3.1 ext/extzstd_nogvls.h
extzstd-0.3 ext/extzstd_nogvls.h
extzstd-0.2 ext/extzstd_nogvls.h
extzstd-0.1.1 ext/extzstd_nogvls.h
extzstd-0.1-x86-mingw32 ext/extzstd_nogvls.h
extzstd-0.1 ext/extzstd_nogvls.h