mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-11-30 00:06:46 +07:00
06af1c52c9
The current lz4 compress buffer is 16kb on 32-bits, 32kb on 64-bits system. But, lz4 needs only 16kb on both. On 64-bits, this causes wasted cpu cycles for additional memset during every compression. In case of lz4hc, the current buffer size is (256kb + 8) on 32-bits, (512kb + 16) on 64-bits. But, lz4hc needs only (256kb + 2 * pointer) on both. This patch fixes these wrong compress buffer sizes for 64-bits. Signed-off-by: Bongkyu Kim <bongkyu.kim@lge.com> Cc: Chanho Min <chanho.min@lge.com> Cc: Yann Collet <yann.collet.73@gmail.com> Cc: Kyungsik Lee <kyungsik.lee@lge.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
88 lines
3.1 KiB
C
88 lines
3.1 KiB
C
#ifndef __LZ4_H__
|
|
#define __LZ4_H__
|
|
/*
|
|
* LZ4 Kernel Interface
|
|
*
|
|
* Copyright (C) 2013, LG Electronics, Kyungsik Lee <kyungsik.lee@lge.com>
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License version 2 as
|
|
* published by the Free Software Foundation.
|
|
*/
|
|
#define LZ4_MEM_COMPRESS (16384)
|
|
#define LZ4HC_MEM_COMPRESS (262144 + (2 * sizeof(unsigned char *)))
|
|
|
|
/*
|
|
* lz4_compressbound()
|
|
* Provides the maximum size that LZ4 may output in a "worst case" scenario
|
|
* (input data not compressible)
|
|
*/
|
|
static inline size_t lz4_compressbound(size_t isize)
|
|
{
|
|
return isize + (isize / 255) + 16;
|
|
}
|
|
|
|
/*
|
|
* lz4_compress()
|
|
* src : source address of the original data
|
|
* src_len : size of the original data
|
|
* dst : output buffer address of the compressed data
|
|
* This requires 'dst' of size LZ4_COMPRESSBOUND.
|
|
* dst_len : is the output size, which is returned after compress done
|
|
* workmem : address of the working memory.
|
|
* This requires 'workmem' of size LZ4_MEM_COMPRESS.
|
|
* return : Success if return 0
|
|
* Error if return (< 0)
|
|
* note : Destination buffer and workmem must be already allocated with
|
|
* the defined size.
|
|
*/
|
|
int lz4_compress(const unsigned char *src, size_t src_len,
|
|
unsigned char *dst, size_t *dst_len, void *wrkmem);
|
|
|
|
/*
|
|
* lz4hc_compress()
|
|
* src : source address of the original data
|
|
* src_len : size of the original data
|
|
* dst : output buffer address of the compressed data
|
|
* This requires 'dst' of size LZ4_COMPRESSBOUND.
|
|
* dst_len : is the output size, which is returned after compress done
|
|
* workmem : address of the working memory.
|
|
* This requires 'workmem' of size LZ4HC_MEM_COMPRESS.
|
|
* return : Success if return 0
|
|
* Error if return (< 0)
|
|
* note : Destination buffer and workmem must be already allocated with
|
|
* the defined size.
|
|
*/
|
|
int lz4hc_compress(const unsigned char *src, size_t src_len,
|
|
unsigned char *dst, size_t *dst_len, void *wrkmem);
|
|
|
|
/*
|
|
* lz4_decompress()
|
|
* src : source address of the compressed data
|
|
* src_len : is the input size, whcih is returned after decompress done
|
|
* dest : output buffer address of the decompressed data
|
|
* actual_dest_len: is the size of uncompressed data, supposing it's known
|
|
* return : Success if return 0
|
|
* Error if return (< 0)
|
|
* note : Destination buffer must be already allocated.
|
|
* slightly faster than lz4_decompress_unknownoutputsize()
|
|
*/
|
|
int lz4_decompress(const unsigned char *src, size_t *src_len,
|
|
unsigned char *dest, size_t actual_dest_len);
|
|
|
|
/*
|
|
* lz4_decompress_unknownoutputsize()
|
|
* src : source address of the compressed data
|
|
* src_len : is the input size, therefore the compressed size
|
|
* dest : output buffer address of the decompressed data
|
|
* dest_len: is the max size of the destination buffer, which is
|
|
* returned with actual size of decompressed data after
|
|
* decompress done
|
|
* return : Success if return 0
|
|
* Error if return (< 0)
|
|
* note : Destination buffer must be already allocated.
|
|
*/
|
|
int lz4_decompress_unknownoutputsize(const unsigned char *src, size_t src_len,
|
|
unsigned char *dest, size_t *dest_len);
|
|
#endif
|