lib/decompress.c
Source file repositories/reference/linux-study-clean/lib/decompress.c
File Facts
- System
- Linux kernel
- Corpus path
lib/decompress.c- Extension
.c- Size
- 2124 bytes
- Lines
- 84
- Domain
- Kernel Services
- Bucket
- lib
- Inferred role
- Kernel Services: implementation source
- Status
- source implementation candidate
Why This File Exists
Shared kernel service surface used by multiple subsystems, including helpers, cryptography, virtualization support, and async I/O infrastructure.
- Shared kernel service surface used by multiple subsystems, including helpers, cryptography, virtualization support, and async I/O infrastructure.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
linux/decompress/generic.hlinux/decompress/bunzip2.hlinux/decompress/unlzma.hlinux/decompress/unxz.hlinux/decompress/inflate.hlinux/decompress/unlzo.hlinux/decompress/unlz4.hlinux/decompress/unzstd.hlinux/types.hlinux/string.hlinux/init.hlinux/printk.h
Detected Declarations
struct compress_formatfunction decompress_method
Annotated Snippet
struct compress_format {
unsigned char magic[2];
const char *name;
decompress_fn decompressor;
};
static const struct compress_format compressed_formats[] __initconst = {
{ .magic = {0x1f, 0x8b}, .name = "gzip", .decompressor = gunzip },
{ .magic = {0x1f, 0x9e}, .name = "gzip", .decompressor = gunzip },
{ .magic = {0x42, 0x5a}, .name = "bzip2", .decompressor = bunzip2 },
{ .magic = {0x5d, 0x00}, .name = "lzma", .decompressor = unlzma },
{ .magic = {0xfd, 0x37}, .name = "xz", .decompressor = unxz },
{ .magic = {0x89, 0x4c}, .name = "lzo", .decompressor = unlzo },
{ .magic = {0x02, 0x21}, .name = "lz4", .decompressor = unlz4 },
{ .magic = {0x28, 0xb5}, .name = "zstd", .decompressor = unzstd },
{ /* sentinel */ }
};
decompress_fn __init decompress_method(const unsigned char *inbuf, long len,
const char **name)
{
const struct compress_format *cf;
if (len < 2) {
if (name)
*name = NULL;
return NULL; /* Need at least this much... */
}
pr_debug("Compressed data magic: %#.2x %#.2x\n", inbuf[0], inbuf[1]);
for (cf = compressed_formats; cf->name; cf++)
if (!memcmp(inbuf, cf->magic, 2))
break;
if (name)
*name = cf->name;
return cf->decompressor;
}
Annotation
- Immediate include surface: `linux/decompress/generic.h`, `linux/decompress/bunzip2.h`, `linux/decompress/unlzma.h`, `linux/decompress/unxz.h`, `linux/decompress/inflate.h`, `linux/decompress/unlzo.h`, `linux/decompress/unlz4.h`, `linux/decompress/unzstd.h`.
- Detected declarations: `struct compress_format`, `function decompress_method`.
- Atlas domain: Kernel Services / lib.
- Implementation status: source implementation candidate.
Implementation Notes
- This generated page is the file-by-file coverage layer; curated subsystem chapters should link here when they synthesize a multi-file control flow.
- Core OS pages should be promoted from atlas-only to deep-reviewed when they explain data structures, invariants, locking, lifecycle, and C implementation snippets.
- Driver-family pages are intentionally pattern-oriented unless they are part of the selected PCIe/NVMe representative device path.