36 lines
826 B
C
36 lines
826 B
C
|
#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;
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|