From 1b8329ec260631ae6e8708271ab4b795888338e4 Mon Sep 17 00:00:00 2001 From: Talha Qamar <qamartalha@proton.me> Date: Sun, 2 Feb 2025 04:48:33 +0500 Subject: [PATCH] Liblily initial commit --- src/liblily/.gitignore | 1 + src/liblily/Makefile | 8 ++++++++ src/liblily/lily.c | 35 +++++++++++++++++++++++++++++++++++ src/liblily/lily.h | 14 ++++++++++++++ 4 files changed, 58 insertions(+) create mode 100644 src/liblily/.gitignore create mode 100644 src/liblily/Makefile create mode 100644 src/liblily/lily.c create mode 100644 src/liblily/lily.h diff --git a/src/liblily/.gitignore b/src/liblily/.gitignore new file mode 100644 index 0000000..a007fea --- /dev/null +++ b/src/liblily/.gitignore @@ -0,0 +1 @@ +build/* diff --git a/src/liblily/Makefile b/src/liblily/Makefile new file mode 100644 index 0000000..c42d082 --- /dev/null +++ b/src/liblily/Makefile @@ -0,0 +1,8 @@ +build/liblily.a: build build/lily.o + ar rcs build/liblily.a build/lily.o + +build/lily.o: build lily.c lily.h + gcc -I. -lc -c lily.c -o ./build/lily.o + +build: + mkdir build diff --git a/src/liblily/lily.c b/src/liblily/lily.c new file mode 100644 index 0000000..4d80869 --- /dev/null +++ b/src/liblily/lily.c @@ -0,0 +1,35 @@ +#define _GNU_SOURCE 1 +#include <sys/mman.h> +#include <string.h> +#include "lily.h" + +void* lily_alloc(uint size){ + return mmap(NULL, size, PROT_READ | PROT_WRITE, MAP_ANONYMOUS, -1, 0); +} +void* lily_alloc_zeroed(uint size){ + return lily_alloc(size); +} +void lily_dealloc(void* ptr, uint size){ + munmap(ptr, size); +} +void* lily_realloc(void* ptr, uint size, uint size_new){ + return mremap(ptr, size, size_new, MREMAP_MAYMOVE); +} +void lily_memset(void* dest, void* src, uint count, uint size){ + uint total_size = count * size; + memcpy(dest, src, size); + + uint copied = size; + + while (copied < total_size) { + uint copy_size; + if(copied > total_size - copied) + copy_size = total_size - copied; + else + copy_size = copied; + memcpy(dest, (dest + copied), copy_size); + copied += copy_size; + } + +} + diff --git a/src/liblily/lily.h b/src/liblily/lily.h new file mode 100644 index 0000000..858a8d8 --- /dev/null +++ b/src/liblily/lily.h @@ -0,0 +1,14 @@ +#ifndef __LILY_H_DEFINED +#define __LILY_H_DEFINED + +#define uint unsigned long long int + +void* lily_alloc(uint size); +void* lily_alloc_zeroed(uint size); +void lily_dealloc(void* ptr, uint size); +void* lily_realloc(void* ptr, uint size, uint size_new); +void lily_memset(void* dest, void* src, uint count, uint size); +void lily_getrandom(void* dest, uint size); + + +#endif // __LILY_H_DEFINED