1b2441318SGreg Kroah-Hartman // SPDX-License-Identifier: GPL-2.0
25de813b6SRussell King #define _LINUX_STRING_H_
35de813b6SRussell King
45de813b6SRussell King #include <linux/compiler.h> /* for inline */
55de813b6SRussell King #include <linux/types.h> /* for size_t */
65de813b6SRussell King #include <linux/stddef.h> /* for NULL */
75de813b6SRussell King #include <linux/linkage.h>
85de813b6SRussell King #include <asm/string.h>
95f8d561fSRussell King #include "misc.h"
105de813b6SRussell King
115de813b6SRussell King #define STATIC static
12b89ebadcSRussell King #define STATIC_RW_DATA /* non-static please */
135de813b6SRussell King
145de813b6SRussell King /* Diagnostic functions */
155de813b6SRussell King #ifdef DEBUG
165de813b6SRussell King # define Assert(cond,msg) {if(!(cond)) error(msg);}
175de813b6SRussell King # define Trace(x) fprintf x
185de813b6SRussell King # define Tracev(x) {if (verbose) fprintf x ;}
195de813b6SRussell King # define Tracevv(x) {if (verbose>1) fprintf x ;}
205de813b6SRussell King # define Tracec(c,x) {if (verbose && (c)) fprintf x ;}
215de813b6SRussell King # define Tracecv(c,x) {if (verbose>1 && (c)) fprintf x ;}
225de813b6SRussell King #else
235de813b6SRussell King # define Assert(cond,msg)
245de813b6SRussell King # define Trace(x)
255de813b6SRussell King # define Tracev(x)
265de813b6SRussell King # define Tracevv(x)
275de813b6SRussell King # define Tracec(c,x)
285de813b6SRussell King # define Tracecv(c,x)
295de813b6SRussell King #endif
305de813b6SRussell King
31ef1c2096SRob Herring /* Not needed, but used in some headers pulled in by decompressors */
32ef1c2096SRob Herring extern char * strstr(const char * s1, const char *s2);
337b96ddd0SArnd Bergmann extern size_t strlen(const char *s);
34*05777499SArnd Bergmann extern int strcmp(const char *cs, const char *ct);
352c6deb01SMatthew Wilcox extern int memcmp(const void *cs, const void *ct, size_t count);
36fb092eb6SSebastian Andrzej Siewior extern char * strchrnul(const char *, int);
37ef1c2096SRob Herring
385de813b6SRussell King #ifdef CONFIG_KERNEL_GZIP
395de813b6SRussell King #include "../../../../lib/decompress_inflate.c"
405de813b6SRussell King #endif
415de813b6SRussell King
425de813b6SRussell King #ifdef CONFIG_KERNEL_LZO
435de813b6SRussell King #include "../../../../lib/decompress_unlzo.c"
445de813b6SRussell King #endif
455de813b6SRussell King
466e8699f7SAlbin Tonnerre #ifdef CONFIG_KERNEL_LZMA
476e8699f7SAlbin Tonnerre #include "../../../../lib/decompress_unlzma.c"
486e8699f7SAlbin Tonnerre #endif
496e8699f7SAlbin Tonnerre
50a7f464f3SImre Kaloz #ifdef CONFIG_KERNEL_XZ
51eaf6cc71SArnd Bergmann /* Prevent KASAN override of string helpers in decompressor */
52eaf6cc71SArnd Bergmann #undef memmove
53a7f464f3SImre Kaloz #define memmove memmove
54eaf6cc71SArnd Bergmann #undef memcpy
55a7f464f3SImre Kaloz #define memcpy memcpy
56a7f464f3SImre Kaloz #include "../../../../lib/decompress_unxz.c"
57a7f464f3SImre Kaloz #endif
58a7f464f3SImre Kaloz
59f9b493acSKyungsik Lee #ifdef CONFIG_KERNEL_LZ4
60f9b493acSKyungsik Lee #include "../../../../lib/decompress_unlz4.c"
61f9b493acSKyungsik Lee #endif
62f9b493acSKyungsik Lee
do_decompress(u8 * input,int len,u8 * output,void (* error)(char * x))63ccc1c7c6SNicolas Pitre int do_decompress(u8 *input, int len, u8 *output, void (*error)(char *x))
645de813b6SRussell King {
652d3862d2SYinghai Lu return __decompress(input, len, NULL, NULL, output, 0, NULL, error);
665de813b6SRussell King }
67