at v6.19 91 lines 2.4 kB view raw
1/* SPDX-License-Identifier: GPL-2.0 */ 2#ifndef PERF_COMPRESS_H 3#define PERF_COMPRESS_H 4 5#include <stdbool.h> 6#include <stddef.h> 7#include <stdio.h> 8#include <sys/types.h> 9#include <linux/compiler.h> 10#ifdef HAVE_ZSTD_SUPPORT 11#include <zstd.h> 12#endif 13 14#ifdef HAVE_ZLIB_SUPPORT 15int gzip_decompress_to_file(const char *input, int output_fd); 16bool gzip_is_compressed(const char *input); 17#endif 18 19#ifdef HAVE_LZMA_SUPPORT 20int lzma_decompress_stream_to_file(FILE *input, int output_fd); 21int lzma_decompress_to_file(const char *input, int output_fd); 22bool lzma_is_compressed(const char *input); 23#else 24static inline 25int lzma_decompress_stream_to_file(FILE *input __maybe_unused, 26 int output_fd __maybe_unused) 27{ 28 return -1; 29} 30static inline 31int lzma_decompress_to_file(const char *input __maybe_unused, 32 int output_fd __maybe_unused) 33{ 34 return -1; 35} 36static inline int lzma_is_compressed(const char *input __maybe_unused) 37{ 38 return false; 39} 40#endif 41 42struct zstd_data { 43#ifdef HAVE_ZSTD_SUPPORT 44 ZSTD_CStream *cstream; 45 ZSTD_DStream *dstream; 46 int comp_level; 47#endif 48}; 49 50#ifdef HAVE_ZSTD_SUPPORT 51 52int zstd_init(struct zstd_data *data, int level); 53int zstd_fini(struct zstd_data *data); 54 55ssize_t zstd_compress_stream_to_records(struct zstd_data *data, void *dst, size_t dst_size, 56 void *src, size_t src_size, size_t max_record_size, 57 size_t process_header(void *record, size_t increment)); 58 59size_t zstd_decompress_stream(struct zstd_data *data, void *src, size_t src_size, 60 void *dst, size_t dst_size); 61#else /* !HAVE_ZSTD_SUPPORT */ 62 63static inline int zstd_init(struct zstd_data *data __maybe_unused, int level __maybe_unused) 64{ 65 return 0; 66} 67 68static inline int zstd_fini(struct zstd_data *data __maybe_unused) 69{ 70 return 0; 71} 72 73static inline 74ssize_t zstd_compress_stream_to_records(struct zstd_data *data __maybe_unused, 75 void *dst __maybe_unused, size_t dst_size __maybe_unused, 76 void *src __maybe_unused, size_t src_size __maybe_unused, 77 size_t max_record_size __maybe_unused, 78 size_t process_header(void *record, size_t increment) __maybe_unused) 79{ 80 return 0; 81} 82 83static inline size_t zstd_decompress_stream(struct zstd_data *data __maybe_unused, void *src __maybe_unused, 84 size_t src_size __maybe_unused, void *dst __maybe_unused, 85 size_t dst_size __maybe_unused) 86{ 87 return 0; 88} 89#endif 90 91#endif /* PERF_COMPRESS_H */