xref: /OK3568_Linux_fs/u-boot/include/linux/lzo.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
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