#include "string.h" #include "memory.h" void* memset(void *dest, int c, size_t n) { char *destc = (char*)dest; for(size_t i = 0; i < n; i++) destc[i] = c; return dest; } void* memcpy(void *dest, const void *src, size_t n) { char *destc = (char*)dest; const char *srcc = (const char*)src; for(size_t i = 0; i < n; i++) destc[i] = srcc[i]; return dest; } void* memmove(void *dest, const void *src, size_t n) { char *destc = (char*)dest; const char *srcc = (const char*)src; if(destc + n < srcc) return memcpy(dest, src, n); char buffer[n]; memcpy(buffer, src, n); return memcpy(destc, buffer, n); } int memcmp(const void *a, const void *b, size_t n) { const char *ac = (const char*)a; const char *bc = (const char*)b; for(size_t i = 0; i < n; i++) { if(ac[i] != bc[i]) return ac[i] - bc[i]; } return 0; } char* strdup(const char *s) { size_t slen = strlen(s); char *ret = kmalloc(slen); memcpy(ret, s, slen); return ret; }