Orange Pi5 kernel

Deprecated Linux kernel 5.10.110 for OrangePi 5/5B/5+ boards

3 Commits   0 Branches   0 Tags
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  1) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  2)  * Definitions for handling the .xz file format
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  3)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  4)  * Author: Lasse Collin <lasse.collin@tukaani.org>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  5)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  6)  * This file has been put into the public domain.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  7)  * You can do whatever you want with this file.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  8)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  9) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) #ifndef XZ_STREAM_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) #define XZ_STREAM_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) #if defined(__KERNEL__) && !XZ_INTERNAL_CRC32
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) #	include <linux/crc32.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) #	undef crc32
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) #	define xz_crc32(buf, size, crc) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) 		(~crc32_le(~(uint32_t)(crc), buf, size))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21)  * See the .xz file format specification at
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22)  * https://tukaani.org/xz/xz-file-format.txt
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23)  * to understand the container format.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) #define STREAM_HEADER_SIZE 12
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) #define HEADER_MAGIC "\3757zXZ"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) #define HEADER_MAGIC_SIZE 6
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) #define FOOTER_MAGIC "YZ"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) #define FOOTER_MAGIC_SIZE 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35)  * Variable-length integer can hold a 63-bit unsigned integer or a special
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36)  * value indicating that the value is unknown.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38)  * Experimental: vli_type can be defined to uint32_t to save a few bytes
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39)  * in code size (no effect on speed). Doing so limits the uncompressed and
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40)  * compressed size of the file to less than 256 MiB and may also weaken
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41)  * error detection slightly.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) typedef uint64_t vli_type;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) #define VLI_MAX ((vli_type)-1 / 2)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) #define VLI_UNKNOWN ((vli_type)-1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) /* Maximum encoded size of a VLI */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) #define VLI_BYTES_MAX (sizeof(vli_type) * 8 / 7)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) /* Integrity Check types */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) enum xz_check {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53) 	XZ_CHECK_NONE = 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) 	XZ_CHECK_CRC32 = 1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) 	XZ_CHECK_CRC64 = 4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) 	XZ_CHECK_SHA256 = 10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59) /* Maximum possible Check ID */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) #define XZ_CHECK_MAX 15
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62) #endif