liblily/lily.c

36 lines
826 B
C
Raw Normal View History

2025-02-09 08:43:54 -06:00
#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;
}
}