Integrate LZ4 library, compress the ramdisk
All checks were successful
Build documentation / build-and-deploy (push) Successful in 1m53s
All checks were successful
Build documentation / build-and-deploy (push) Successful in 1m53s
This commit is contained in:
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user