This commit is contained in:
Talha Qamar 2025-02-09 19:43:54 +05:00
parent 619295cef2
commit f16d003bff
3 changed files with 62 additions and 0 deletions

13
Makefile Normal file
View file

@ -0,0 +1,13 @@
.PHONY: clean
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
clean:
rm -rf build/

35
lily.c Normal file
View file

@ -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;
}
}

14
lily.h Normal file
View file

@ -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