xz: remove XZ_EXTERN and extern from functions
XZ_EXTERN was used to make internal functions static in the preboot code. However, in other decompressors this hasn't been done. On x86-64, this makes no difference to the kernel image size. Omit XZ_EXTERN and let some of the internal functions be extern in the preboot code. Omitting XZ_EXTERN from include/linux/xz.h fixes warnings in "make htmldocs" and makes the intradocument links to xz_dec functions work in Documentation/staging/xz.rst. The alternative would have been to add "XZ_EXTERN" to c_id_attributes in Documentation/conf.py but omitting XZ_EXTERN seemed cleaner. Link: https://lore.kernel.org/lkml/20240723205437.3c0664b0@kaneli/ Link: https://lkml.kernel.org/r/20240724110544.16430-1-lasse.collin@tukaani.org Signed-off-by: Lasse Collin <lasse.collin@tukaani.org> Tested-by: Michael Ellerman <mpe@ellerman.id.au> (powerpc) Cc: Jonathan Corbet <corbet@lwn.net> Cc: Sam James <sam@gentoo.org> Cc: Albert Ou <aou@eecs.berkeley.edu> Cc: Catalin Marinas <catalin.marinas@arm.com> Cc: Emil Renner Berthing <emil.renner.berthing@canonical.com> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Cc: Herbert Xu <herbert@gondor.apana.org.au> Cc: Joel Stanley <joel@jms.id.au> Cc: Jubin Zhong <zhongjubin@huawei.com> Cc: Jules Maselbas <jmaselbas@zdiv.net> Cc: Krzysztof Kozlowski <krzk@kernel.org> Cc: Palmer Dabbelt <palmer@dabbelt.com> Cc: Paul Walmsley <paul.walmsley@sifive.com> Cc: Randy Dunlap <rdunlap@infradead.org> Cc: Rui Li <me@lirui.org> Cc: Simon Glass <sjg@chromium.org> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: Will Deacon <will@kernel.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
parent
ab4ce9831a
commit
c6f371bab2
@ -95,7 +95,4 @@ xz_dec API
|
|||||||
|
|
||||||
This is available with ``#include <linux/xz.h>``.
|
This is available with ``#include <linux/xz.h>``.
|
||||||
|
|
||||||
``XZ_EXTERN`` is a macro used in the preboot code. Ignore it when
|
|
||||||
reading this documentation.
|
|
||||||
|
|
||||||
.. kernel-doc:: include/linux/xz.h
|
.. kernel-doc:: include/linux/xz.h
|
||||||
|
@ -50,11 +50,8 @@ static inline void put_unaligned_be32(u32 val, void *p)
|
|||||||
/* prevent the inclusion of the xz-preboot MM headers */
|
/* prevent the inclusion of the xz-preboot MM headers */
|
||||||
#define DECOMPR_MM_H
|
#define DECOMPR_MM_H
|
||||||
#define memmove memmove
|
#define memmove memmove
|
||||||
#define XZ_EXTERN static
|
|
||||||
|
|
||||||
/* xz.h needs to be included directly since we need enum xz_mode */
|
/* xz.h needs to be included directly since we need enum xz_mode */
|
||||||
#include "../../../include/linux/xz.h"
|
#include "../../../include/linux/xz.h"
|
||||||
|
|
||||||
#undef XZ_EXTERN
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -18,11 +18,6 @@
|
|||||||
# include <stdint.h>
|
# include <stdint.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* In Linux, this is used to make extern functions static when needed. */
|
|
||||||
#ifndef XZ_EXTERN
|
|
||||||
# define XZ_EXTERN extern
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* enum xz_mode - Operation mode
|
* enum xz_mode - Operation mode
|
||||||
*
|
*
|
||||||
@ -190,7 +185,7 @@ struct xz_dec;
|
|||||||
* ready to be used with xz_dec_run(). If memory allocation fails,
|
* ready to be used with xz_dec_run(). If memory allocation fails,
|
||||||
* xz_dec_init() returns NULL.
|
* xz_dec_init() returns NULL.
|
||||||
*/
|
*/
|
||||||
XZ_EXTERN struct xz_dec *xz_dec_init(enum xz_mode mode, uint32_t dict_max);
|
struct xz_dec *xz_dec_init(enum xz_mode mode, uint32_t dict_max);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* xz_dec_run() - Run the XZ decoder
|
* xz_dec_run() - Run the XZ decoder
|
||||||
@ -210,7 +205,7 @@ XZ_EXTERN struct xz_dec *xz_dec_init(enum xz_mode mode, uint32_t dict_max);
|
|||||||
* get that amount valid data from the beginning of the stream. You must use
|
* get that amount valid data from the beginning of the stream. You must use
|
||||||
* the multi-call decoder if you don't want to uncompress the whole stream.
|
* the multi-call decoder if you don't want to uncompress the whole stream.
|
||||||
*/
|
*/
|
||||||
XZ_EXTERN enum xz_ret xz_dec_run(struct xz_dec *s, struct xz_buf *b);
|
enum xz_ret xz_dec_run(struct xz_dec *s, struct xz_buf *b);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* xz_dec_reset() - Reset an already allocated decoder state
|
* xz_dec_reset() - Reset an already allocated decoder state
|
||||||
@ -223,14 +218,14 @@ XZ_EXTERN enum xz_ret xz_dec_run(struct xz_dec *s, struct xz_buf *b);
|
|||||||
* xz_dec_run(). Thus, explicit call to xz_dec_reset() is useful only in
|
* xz_dec_run(). Thus, explicit call to xz_dec_reset() is useful only in
|
||||||
* multi-call mode.
|
* multi-call mode.
|
||||||
*/
|
*/
|
||||||
XZ_EXTERN void xz_dec_reset(struct xz_dec *s);
|
void xz_dec_reset(struct xz_dec *s);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* xz_dec_end() - Free the memory allocated for the decoder state
|
* xz_dec_end() - Free the memory allocated for the decoder state
|
||||||
* @s: Decoder state allocated using xz_dec_init(). If s is NULL,
|
* @s: Decoder state allocated using xz_dec_init(). If s is NULL,
|
||||||
* this function does nothing.
|
* this function does nothing.
|
||||||
*/
|
*/
|
||||||
XZ_EXTERN void xz_dec_end(struct xz_dec *s);
|
void xz_dec_end(struct xz_dec *s);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* DOC: MicroLZMA decompressor
|
* DOC: MicroLZMA decompressor
|
||||||
@ -244,10 +239,6 @@ XZ_EXTERN void xz_dec_end(struct xz_dec *s);
|
|||||||
* 3/0/2, the first byte is 0xA2. This way the first byte can never be 0x00.
|
* 3/0/2, the first byte is 0xA2. This way the first byte can never be 0x00.
|
||||||
* Just like with LZMA2, lc + lp <= 4 must be true. The LZMA end-of-stream
|
* Just like with LZMA2, lc + lp <= 4 must be true. The LZMA end-of-stream
|
||||||
* marker must not be used. The unused values are reserved for future use.
|
* marker must not be used. The unused values are reserved for future use.
|
||||||
*
|
|
||||||
* These functions aren't used or available in preboot code and thus aren't
|
|
||||||
* marked with XZ_EXTERN. This avoids warnings about static functions that
|
|
||||||
* are never defined.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -272,8 +263,8 @@ struct xz_dec_microlzma;
|
|||||||
* struct xz_dec_microlzma. If memory allocation fails or
|
* struct xz_dec_microlzma. If memory allocation fails or
|
||||||
* dict_size is invalid, NULL is returned.
|
* dict_size is invalid, NULL is returned.
|
||||||
*/
|
*/
|
||||||
extern struct xz_dec_microlzma *xz_dec_microlzma_alloc(enum xz_mode mode,
|
struct xz_dec_microlzma *xz_dec_microlzma_alloc(enum xz_mode mode,
|
||||||
uint32_t dict_size);
|
uint32_t dict_size);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* xz_dec_microlzma_reset() - Reset the MicroLZMA decoder state
|
* xz_dec_microlzma_reset() - Reset the MicroLZMA decoder state
|
||||||
@ -289,9 +280,8 @@ extern struct xz_dec_microlzma *xz_dec_microlzma_alloc(enum xz_mode mode,
|
|||||||
* requiring stdbool.h. This should normally be set to true.
|
* requiring stdbool.h. This should normally be set to true.
|
||||||
* When this is set to false, error detection is weaker.
|
* When this is set to false, error detection is weaker.
|
||||||
*/
|
*/
|
||||||
extern void xz_dec_microlzma_reset(struct xz_dec_microlzma *s,
|
void xz_dec_microlzma_reset(struct xz_dec_microlzma *s, uint32_t comp_size,
|
||||||
uint32_t comp_size, uint32_t uncomp_size,
|
uint32_t uncomp_size, int uncomp_size_is_exact);
|
||||||
int uncomp_size_is_exact);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* xz_dec_microlzma_run() - Run the MicroLZMA decoder
|
* xz_dec_microlzma_run() - Run the MicroLZMA decoder
|
||||||
@ -329,15 +319,14 @@ extern void xz_dec_microlzma_reset(struct xz_dec_microlzma *s,
|
|||||||
* may be changed normally like with XZ_PREALLOC. This way input data can be
|
* may be changed normally like with XZ_PREALLOC. This way input data can be
|
||||||
* provided from non-contiguous memory.
|
* provided from non-contiguous memory.
|
||||||
*/
|
*/
|
||||||
extern enum xz_ret xz_dec_microlzma_run(struct xz_dec_microlzma *s,
|
enum xz_ret xz_dec_microlzma_run(struct xz_dec_microlzma *s, struct xz_buf *b);
|
||||||
struct xz_buf *b);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* xz_dec_microlzma_end() - Free the memory allocated for the decoder state
|
* xz_dec_microlzma_end() - Free the memory allocated for the decoder state
|
||||||
* @s: Decoder state allocated using xz_dec_microlzma_alloc().
|
* @s: Decoder state allocated using xz_dec_microlzma_alloc().
|
||||||
* If s is NULL, this function does nothing.
|
* If s is NULL, this function does nothing.
|
||||||
*/
|
*/
|
||||||
extern void xz_dec_microlzma_end(struct xz_dec_microlzma *s);
|
void xz_dec_microlzma_end(struct xz_dec_microlzma *s);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Standalone build (userspace build or in-kernel build for boot time use)
|
* Standalone build (userspace build or in-kernel build for boot time use)
|
||||||
@ -358,13 +347,13 @@ extern void xz_dec_microlzma_end(struct xz_dec_microlzma *s);
|
|||||||
* This must be called before any other xz_* function to initialize
|
* This must be called before any other xz_* function to initialize
|
||||||
* the CRC32 lookup table.
|
* the CRC32 lookup table.
|
||||||
*/
|
*/
|
||||||
XZ_EXTERN void xz_crc32_init(void);
|
void xz_crc32_init(void);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Update CRC32 value using the polynomial from IEEE-802.3. To start a new
|
* Update CRC32 value using the polynomial from IEEE-802.3. To start a new
|
||||||
* calculation, the third argument must be zero. To continue the calculation,
|
* calculation, the third argument must be zero. To continue the calculation,
|
||||||
* the previously returned value is passed as the third argument.
|
* the previously returned value is passed as the third argument.
|
||||||
*/
|
*/
|
||||||
XZ_EXTERN uint32_t xz_crc32(const uint8_t *buf, size_t size, uint32_t crc);
|
uint32_t xz_crc32(const uint8_t *buf, size_t size, uint32_t crc);
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
@ -107,7 +107,6 @@
|
|||||||
#ifdef __KERNEL__
|
#ifdef __KERNEL__
|
||||||
# include <linux/decompress/mm.h>
|
# include <linux/decompress/mm.h>
|
||||||
#endif
|
#endif
|
||||||
#define XZ_EXTERN STATIC
|
|
||||||
|
|
||||||
#ifndef XZ_PREBOOT
|
#ifndef XZ_PREBOOT
|
||||||
# include <linux/slab.h>
|
# include <linux/slab.h>
|
||||||
|
@ -26,7 +26,7 @@
|
|||||||
|
|
||||||
STATIC_RW_DATA uint32_t xz_crc32_table[256];
|
STATIC_RW_DATA uint32_t xz_crc32_table[256];
|
||||||
|
|
||||||
XZ_EXTERN void xz_crc32_init(void)
|
void xz_crc32_init(void)
|
||||||
{
|
{
|
||||||
const uint32_t poly = 0xEDB88320;
|
const uint32_t poly = 0xEDB88320;
|
||||||
|
|
||||||
@ -45,7 +45,7 @@ XZ_EXTERN void xz_crc32_init(void)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
XZ_EXTERN uint32_t xz_crc32(const uint8_t *buf, size_t size, uint32_t crc)
|
uint32_t xz_crc32(const uint8_t *buf, size_t size, uint32_t crc)
|
||||||
{
|
{
|
||||||
crc = ~crc;
|
crc = ~crc;
|
||||||
|
|
||||||
|
@ -572,9 +572,8 @@ static void bcj_flush(struct xz_dec_bcj *s, struct xz_buf *b)
|
|||||||
* data in chunks of 1-16 bytes. To hide this issue, this function does
|
* data in chunks of 1-16 bytes. To hide this issue, this function does
|
||||||
* some buffering.
|
* some buffering.
|
||||||
*/
|
*/
|
||||||
XZ_EXTERN enum xz_ret xz_dec_bcj_run(struct xz_dec_bcj *s,
|
enum xz_ret xz_dec_bcj_run(struct xz_dec_bcj *s, struct xz_dec_lzma2 *lzma2,
|
||||||
struct xz_dec_lzma2 *lzma2,
|
struct xz_buf *b)
|
||||||
struct xz_buf *b)
|
|
||||||
{
|
{
|
||||||
size_t out_start;
|
size_t out_start;
|
||||||
|
|
||||||
@ -682,7 +681,7 @@ XZ_EXTERN enum xz_ret xz_dec_bcj_run(struct xz_dec_bcj *s,
|
|||||||
return s->ret;
|
return s->ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
XZ_EXTERN struct xz_dec_bcj *xz_dec_bcj_create(bool single_call)
|
struct xz_dec_bcj *xz_dec_bcj_create(bool single_call)
|
||||||
{
|
{
|
||||||
struct xz_dec_bcj *s = kmalloc(sizeof(*s), GFP_KERNEL);
|
struct xz_dec_bcj *s = kmalloc(sizeof(*s), GFP_KERNEL);
|
||||||
if (s != NULL)
|
if (s != NULL)
|
||||||
@ -691,7 +690,7 @@ XZ_EXTERN struct xz_dec_bcj *xz_dec_bcj_create(bool single_call)
|
|||||||
return s;
|
return s;
|
||||||
}
|
}
|
||||||
|
|
||||||
XZ_EXTERN enum xz_ret xz_dec_bcj_reset(struct xz_dec_bcj *s, uint8_t id)
|
enum xz_ret xz_dec_bcj_reset(struct xz_dec_bcj *s, uint8_t id)
|
||||||
{
|
{
|
||||||
switch (id) {
|
switch (id) {
|
||||||
#ifdef XZ_DEC_X86
|
#ifdef XZ_DEC_X86
|
||||||
|
@ -960,8 +960,7 @@ static bool lzma2_lzma(struct xz_dec_lzma2 *s, struct xz_buf *b)
|
|||||||
* Take care of the LZMA2 control layer, and forward the job of actual LZMA
|
* Take care of the LZMA2 control layer, and forward the job of actual LZMA
|
||||||
* decoding or copying of uncompressed chunks to other functions.
|
* decoding or copying of uncompressed chunks to other functions.
|
||||||
*/
|
*/
|
||||||
XZ_EXTERN enum xz_ret xz_dec_lzma2_run(struct xz_dec_lzma2 *s,
|
enum xz_ret xz_dec_lzma2_run(struct xz_dec_lzma2 *s, struct xz_buf *b)
|
||||||
struct xz_buf *b)
|
|
||||||
{
|
{
|
||||||
uint32_t tmp;
|
uint32_t tmp;
|
||||||
|
|
||||||
@ -1137,8 +1136,7 @@ XZ_EXTERN enum xz_ret xz_dec_lzma2_run(struct xz_dec_lzma2 *s,
|
|||||||
return XZ_OK;
|
return XZ_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
XZ_EXTERN struct xz_dec_lzma2 *xz_dec_lzma2_create(enum xz_mode mode,
|
struct xz_dec_lzma2 *xz_dec_lzma2_create(enum xz_mode mode, uint32_t dict_max)
|
||||||
uint32_t dict_max)
|
|
||||||
{
|
{
|
||||||
struct xz_dec_lzma2 *s = kmalloc(sizeof(*s), GFP_KERNEL);
|
struct xz_dec_lzma2 *s = kmalloc(sizeof(*s), GFP_KERNEL);
|
||||||
if (s == NULL)
|
if (s == NULL)
|
||||||
@ -1161,7 +1159,7 @@ XZ_EXTERN struct xz_dec_lzma2 *xz_dec_lzma2_create(enum xz_mode mode,
|
|||||||
return s;
|
return s;
|
||||||
}
|
}
|
||||||
|
|
||||||
XZ_EXTERN enum xz_ret xz_dec_lzma2_reset(struct xz_dec_lzma2 *s, uint8_t props)
|
enum xz_ret xz_dec_lzma2_reset(struct xz_dec_lzma2 *s, uint8_t props)
|
||||||
{
|
{
|
||||||
/* This limits dictionary size to 3 GiB to keep parsing simpler. */
|
/* This limits dictionary size to 3 GiB to keep parsing simpler. */
|
||||||
if (props > 39)
|
if (props > 39)
|
||||||
@ -1197,7 +1195,7 @@ XZ_EXTERN enum xz_ret xz_dec_lzma2_reset(struct xz_dec_lzma2 *s, uint8_t props)
|
|||||||
return XZ_OK;
|
return XZ_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
XZ_EXTERN void xz_dec_lzma2_end(struct xz_dec_lzma2 *s)
|
void xz_dec_lzma2_end(struct xz_dec_lzma2 *s)
|
||||||
{
|
{
|
||||||
if (DEC_IS_MULTI(s->dict.mode))
|
if (DEC_IS_MULTI(s->dict.mode))
|
||||||
vfree(s->dict.buf);
|
vfree(s->dict.buf);
|
||||||
|
@ -746,7 +746,7 @@ static enum xz_ret dec_main(struct xz_dec *s, struct xz_buf *b)
|
|||||||
* actually succeeds (that's the price to pay of using the output buffer as
|
* actually succeeds (that's the price to pay of using the output buffer as
|
||||||
* the workspace).
|
* the workspace).
|
||||||
*/
|
*/
|
||||||
XZ_EXTERN enum xz_ret xz_dec_run(struct xz_dec *s, struct xz_buf *b)
|
enum xz_ret xz_dec_run(struct xz_dec *s, struct xz_buf *b)
|
||||||
{
|
{
|
||||||
size_t in_start;
|
size_t in_start;
|
||||||
size_t out_start;
|
size_t out_start;
|
||||||
@ -782,7 +782,7 @@ XZ_EXTERN enum xz_ret xz_dec_run(struct xz_dec *s, struct xz_buf *b)
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
XZ_EXTERN struct xz_dec *xz_dec_init(enum xz_mode mode, uint32_t dict_max)
|
struct xz_dec *xz_dec_init(enum xz_mode mode, uint32_t dict_max)
|
||||||
{
|
{
|
||||||
struct xz_dec *s = kmalloc(sizeof(*s), GFP_KERNEL);
|
struct xz_dec *s = kmalloc(sizeof(*s), GFP_KERNEL);
|
||||||
if (s == NULL)
|
if (s == NULL)
|
||||||
@ -812,7 +812,7 @@ error_bcj:
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
XZ_EXTERN void xz_dec_reset(struct xz_dec *s)
|
void xz_dec_reset(struct xz_dec *s)
|
||||||
{
|
{
|
||||||
s->sequence = SEQ_STREAM_HEADER;
|
s->sequence = SEQ_STREAM_HEADER;
|
||||||
s->allow_buf_error = false;
|
s->allow_buf_error = false;
|
||||||
@ -824,7 +824,7 @@ XZ_EXTERN void xz_dec_reset(struct xz_dec *s)
|
|||||||
s->temp.size = STREAM_HEADER_SIZE;
|
s->temp.size = STREAM_HEADER_SIZE;
|
||||||
}
|
}
|
||||||
|
|
||||||
XZ_EXTERN void xz_dec_end(struct xz_dec *s)
|
void xz_dec_end(struct xz_dec *s)
|
||||||
{
|
{
|
||||||
if (s != NULL) {
|
if (s != NULL) {
|
||||||
xz_dec_lzma2_end(s->lzma2);
|
xz_dec_lzma2_end(s->lzma2);
|
||||||
|
@ -115,8 +115,7 @@
|
|||||||
* Allocate memory for LZMA2 decoder. xz_dec_lzma2_reset() must be used
|
* Allocate memory for LZMA2 decoder. xz_dec_lzma2_reset() must be used
|
||||||
* before calling xz_dec_lzma2_run().
|
* before calling xz_dec_lzma2_run().
|
||||||
*/
|
*/
|
||||||
XZ_EXTERN struct xz_dec_lzma2 *xz_dec_lzma2_create(enum xz_mode mode,
|
struct xz_dec_lzma2 *xz_dec_lzma2_create(enum xz_mode mode, uint32_t dict_max);
|
||||||
uint32_t dict_max);
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Decode the LZMA2 properties (one byte) and reset the decoder. Return
|
* Decode the LZMA2 properties (one byte) and reset the decoder. Return
|
||||||
@ -124,22 +123,20 @@ XZ_EXTERN struct xz_dec_lzma2 *xz_dec_lzma2_create(enum xz_mode mode,
|
|||||||
* big enough, and XZ_OPTIONS_ERROR if props indicates something that this
|
* big enough, and XZ_OPTIONS_ERROR if props indicates something that this
|
||||||
* decoder doesn't support.
|
* decoder doesn't support.
|
||||||
*/
|
*/
|
||||||
XZ_EXTERN enum xz_ret xz_dec_lzma2_reset(struct xz_dec_lzma2 *s,
|
enum xz_ret xz_dec_lzma2_reset(struct xz_dec_lzma2 *s, uint8_t props);
|
||||||
uint8_t props);
|
|
||||||
|
|
||||||
/* Decode raw LZMA2 stream from b->in to b->out. */
|
/* Decode raw LZMA2 stream from b->in to b->out. */
|
||||||
XZ_EXTERN enum xz_ret xz_dec_lzma2_run(struct xz_dec_lzma2 *s,
|
enum xz_ret xz_dec_lzma2_run(struct xz_dec_lzma2 *s, struct xz_buf *b);
|
||||||
struct xz_buf *b);
|
|
||||||
|
|
||||||
/* Free the memory allocated for the LZMA2 decoder. */
|
/* Free the memory allocated for the LZMA2 decoder. */
|
||||||
XZ_EXTERN void xz_dec_lzma2_end(struct xz_dec_lzma2 *s);
|
void xz_dec_lzma2_end(struct xz_dec_lzma2 *s);
|
||||||
|
|
||||||
#ifdef XZ_DEC_BCJ
|
#ifdef XZ_DEC_BCJ
|
||||||
/*
|
/*
|
||||||
* Allocate memory for BCJ decoders. xz_dec_bcj_reset() must be used before
|
* Allocate memory for BCJ decoders. xz_dec_bcj_reset() must be used before
|
||||||
* calling xz_dec_bcj_run().
|
* calling xz_dec_bcj_run().
|
||||||
*/
|
*/
|
||||||
XZ_EXTERN struct xz_dec_bcj *xz_dec_bcj_create(bool single_call);
|
struct xz_dec_bcj *xz_dec_bcj_create(bool single_call);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Decode the Filter ID of a BCJ filter. This implementation doesn't
|
* Decode the Filter ID of a BCJ filter. This implementation doesn't
|
||||||
@ -147,16 +144,15 @@ XZ_EXTERN struct xz_dec_bcj *xz_dec_bcj_create(bool single_call);
|
|||||||
* is needed. Returns XZ_OK if the given Filter ID is supported.
|
* is needed. Returns XZ_OK if the given Filter ID is supported.
|
||||||
* Otherwise XZ_OPTIONS_ERROR is returned.
|
* Otherwise XZ_OPTIONS_ERROR is returned.
|
||||||
*/
|
*/
|
||||||
XZ_EXTERN enum xz_ret xz_dec_bcj_reset(struct xz_dec_bcj *s, uint8_t id);
|
enum xz_ret xz_dec_bcj_reset(struct xz_dec_bcj *s, uint8_t id);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Decode raw BCJ + LZMA2 stream. This must be used only if there actually is
|
* Decode raw BCJ + LZMA2 stream. This must be used only if there actually is
|
||||||
* a BCJ filter in the chain. If the chain has only LZMA2, xz_dec_lzma2_run()
|
* a BCJ filter in the chain. If the chain has only LZMA2, xz_dec_lzma2_run()
|
||||||
* must be called directly.
|
* must be called directly.
|
||||||
*/
|
*/
|
||||||
XZ_EXTERN enum xz_ret xz_dec_bcj_run(struct xz_dec_bcj *s,
|
enum xz_ret xz_dec_bcj_run(struct xz_dec_bcj *s, struct xz_dec_lzma2 *lzma2,
|
||||||
struct xz_dec_lzma2 *lzma2,
|
struct xz_buf *b);
|
||||||
struct xz_buf *b);
|
|
||||||
|
|
||||||
/* Free the memory allocated for the BCJ filters. */
|
/* Free the memory allocated for the BCJ filters. */
|
||||||
#define xz_dec_bcj_end(s) kfree(s)
|
#define xz_dec_bcj_end(s) kfree(s)
|
||||||
|
Loading…
Reference in New Issue
Block a user