Integrate LZ4 library, compress the ramdisk
All checks were successful
Build documentation / build-and-deploy (push) Successful in 1m53s

This commit is contained in:
2026-03-07 02:54:26 +01:00
parent eaec32975a
commit b9e8a8bf1d
234 changed files with 52373 additions and 13 deletions

View File

@@ -13,6 +13,8 @@
#include <libk/std.h>
#include <libk/string.h>
#include <limine/requests.h>
#include <lz4/lz4.h>
#include <lz4/lz4frame.h>
#include <mm/liballoc.h>
#include <status.h>
#include <sync/spin_lock.h>
@@ -102,7 +104,7 @@ void ramdisk_device_init (void) {
struct limine_module_response* module = limine_module_request.response;
const char* ramdisk_path = "/boot/mop3dist.tar";
const char* ramdisk_path = "/boot/mop3dist.tar.lz4";
struct limine_file* file = NULL;
for (size_t i = 0; i < module->module_count; i++) {
@@ -112,12 +114,26 @@ void ramdisk_device_init (void) {
break;
}
const size_t unpack_buffer_size = 1024 * 1024 * 20;
uint8_t* unpack_buffer = malloc (unpack_buffer_size);
LZ4F_decompressionContext_t dctx;
LZ4F_createDecompressionContext (&dctx, LZ4F_VERSION);
size_t consumed = file->size;
size_t produced = unpack_buffer_size;
LZ4F_decompress (dctx, unpack_buffer, &produced, file->address, &consumed, NULL);
struct ramdrv_init init = {
.total_size = file->size,
.total_size = produced,
.sector_size = 512,
.buffer = file->address,
.buffer = unpack_buffer,
};
device_create ("RD", ops, lengthof (ops), &ramdrv_init, &ramdrv_fini, &init);
LZ4F_freeDecompressionContext (dctx);
}
void temp_device_init (void) {