2026-06-24 16:47:22 -05:00
|
|
|
#include "lib/memory.h"
|
|
|
|
|
#include "memory/mm.h"
|
|
|
|
|
|
2026-06-24 13:30:23 -05:00
|
|
|
|
|
|
|
|
void memcpy(const void* src, void* dst, size_t sz) {
|
|
|
|
|
for (size_t i = 0; i < sz; i++) {
|
|
|
|
|
((uint8_t*)dst)[i] = ((uint8_t*)src)[i];
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2026-06-24 16:47:22 -05:00
|
|
|
void memset(const uint8_t* dst, uint8_t val, size_t sz) {
|
|
|
|
|
for (size_t i = 0; i < sz; i++) {
|
|
|
|
|
((uint8_t*)dst)[i] = val;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2026-06-24 13:30:23 -05:00
|
|
|
int strcmp(const char* s1, const char* s2) {
|
|
|
|
|
while (*s1 && (*s1 == *s2)) {
|
|
|
|
|
s1++;
|
|
|
|
|
s2++;
|
|
|
|
|
}
|
|
|
|
|
return *(const uint8_t*)s1 - *(const uint8_t*)s2;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
int strlen(const char* str) {
|
|
|
|
|
int len = 0;
|
|
|
|
|
while(*str != 0) {
|
|
|
|
|
str++;
|
|
|
|
|
len++;
|
|
|
|
|
}
|
|
|
|
|
return len;
|
2026-06-24 16:47:22 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static void* kernel_heap = (void*)0xE0000000;
|
|
|
|
|
static size_t kernel_heap_sz = 0;
|
|
|
|
|
|
|
|
|
|
void kheap_init() {
|
|
|
|
|
if (kernel_heap_sz == 0) {
|
|
|
|
|
void* frame = p_alloc_frame();
|
|
|
|
|
map_page((uint32_t)kernel_heap, (uint32_t)frame, PAGE_PRESENT | PAGE_WRITABLE);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void* alloc(size_t sz) {
|
|
|
|
|
|
2026-06-24 13:30:23 -05:00
|
|
|
}
|