Kernel: move over the mem* functions from libc

This commit is contained in:
apio 2022-10-22 19:04:35 +02:00
parent 4725538aa7
commit 437f51add7

View File

@ -111,34 +111,32 @@ void* memcpy(void* dest, const void* src, size_t n)
return dest; return dest;
} }
void* memset(void* dest, int c, size_t n) void* memset(void* buf, int c, size_t n)
{ {
for (size_t i = 0; i < n; ++i) { *((char*)dest + i) = (char)c; } for (size_t i = 0; i < n; ++i) { *((char*)buf + i) = (char)c; }
return dest; return buf;
} }
int memcmp(const void* a, const void* b, size_t n) int memcmp(const void* a, const void* b, size_t n)
{ {
const char* _a = (const char*)a;
const char* _b = (const char*)b;
for (; n && _a == _b; n--, _a++, _b++)
;
if (!n) return 0; if (!n) return 0;
if (*_a > *_b) return 1; const unsigned char* ap = (const unsigned char*)a;
return -1; const unsigned char* bp = (const unsigned char*)b;
while (--n && *ap == *bp)
{
ap++;
bp++;
}
return *ap - *bp;
} }
void* memmove(void* dest, void* src, size_t n) void* memmove(void* dest, const void* src, size_t n)
{ {
if (dest == src) return dest; if (dest == src) return dest;
if (dest > src) if (dest > src)
{ for (long i = n - 1; i >= 0; i++) { *((char*)dest + i) = *((const char*)src + i); }
for (long i = n - 1; i >= 0; i++) { *((char*)dest + i) = *((char*)src + i); }
}
else else
{ for (long i = 0; i < (long)n; i++) { *((char*)dest + i) = *((const char*)src + i); }
for (long i = 0; i < (long)n; i++) { *((char*)dest + i) = *((char*)src + i); }
}
return dest; return dest;
} }