1*4882a593Smuzhiyun #ifndef __LZO_H__ 2*4882a593Smuzhiyun #define __LZO_H__ 3*4882a593Smuzhiyun /* 4*4882a593Smuzhiyun * LZO Public Kernel Interface 5*4882a593Smuzhiyun * A mini subset of the LZO real-time data compression library 6*4882a593Smuzhiyun * 7*4882a593Smuzhiyun * Copyright (C) 1996-2005 Markus F.X.J. Oberhumer <markus@oberhumer.com> 8*4882a593Smuzhiyun * 9*4882a593Smuzhiyun * The full LZO package can be found at: 10*4882a593Smuzhiyun * http://www.oberhumer.com/opensource/lzo/ 11*4882a593Smuzhiyun * 12*4882a593Smuzhiyun * Changed for kernel use by: 13*4882a593Smuzhiyun * Nitin Gupta <nitingupta910@gmail.com> 14*4882a593Smuzhiyun * Richard Purdie <rpurdie@openedhand.com> 15*4882a593Smuzhiyun */ 16*4882a593Smuzhiyun 17*4882a593Smuzhiyun #define LZO1X_MEM_COMPRESS (16384 * sizeof(unsigned char *)) 18*4882a593Smuzhiyun #define LZO1X_1_MEM_COMPRESS LZO1X_MEM_COMPRESS 19*4882a593Smuzhiyun 20*4882a593Smuzhiyun #define lzo1x_worst_compress(x) ((x) + ((x) / 16) + 64 + 3) 21*4882a593Smuzhiyun 22*4882a593Smuzhiyun /* This requires 'workmem' of size LZO1X_1_MEM_COMPRESS */ 23*4882a593Smuzhiyun int lzo1x_1_compress(const unsigned char *src, size_t src_len, 24*4882a593Smuzhiyun unsigned char *dst, size_t *dst_len, void *wrkmem); 25*4882a593Smuzhiyun 26*4882a593Smuzhiyun /* safe decompression with overrun testing */ 27*4882a593Smuzhiyun int lzo1x_decompress_safe(const unsigned char *src, size_t src_len, 28*4882a593Smuzhiyun unsigned char *dst, size_t *dst_len); 29*4882a593Smuzhiyun 30*4882a593Smuzhiyun /* decompress lzop format */ 31*4882a593Smuzhiyun int lzop_decompress(const unsigned char *src, size_t src_len, 32*4882a593Smuzhiyun unsigned char *dst, size_t *dst_len); 33*4882a593Smuzhiyun 34*4882a593Smuzhiyun /* check if the header is valid (based on magic numbers) */ 35*4882a593Smuzhiyun bool lzop_is_valid_header(const unsigned char *src); 36*4882a593Smuzhiyun 37*4882a593Smuzhiyun /* 38*4882a593Smuzhiyun * Return values (< 0 = Error) 39*4882a593Smuzhiyun */ 40*4882a593Smuzhiyun #define LZO_E_OK 0 41*4882a593Smuzhiyun #define LZO_E_ERROR (-1) 42*4882a593Smuzhiyun #define LZO_E_OUT_OF_MEMORY (-2) 43*4882a593Smuzhiyun #define LZO_E_NOT_COMPRESSIBLE (-3) 44*4882a593Smuzhiyun #define LZO_E_INPUT_OVERRUN (-4) 45*4882a593Smuzhiyun #define LZO_E_OUTPUT_OVERRUN (-5) 46*4882a593Smuzhiyun #define LZO_E_LOOKBEHIND_OVERRUN (-6) 47*4882a593Smuzhiyun #define LZO_E_EOF_NOT_FOUND (-7) 48*4882a593Smuzhiyun #define LZO_E_INPUT_NOT_CONSUMED (-8) 49*4882a593Smuzhiyun #define LZO_E_NOT_YET_IMPLEMENTED (-9) 50*4882a593Smuzhiyun 51*4882a593Smuzhiyun #endif 52