Added memmove(3).

This commit is contained in:
Jonas 'Sortie' Termansen 2012-03-04 17:10:52 +01:00
parent a52200f4a7
commit 6c6e1091a1
2 changed files with 13 additions and 1 deletions

View File

@ -36,6 +36,7 @@ __BEGIN_DECLS
void* memchr(const void*, int, size_t);
int memcmp(const void*, const void*, size_t);
void* memcpy(void* restrict, const void* restrict, size_t);
void* memmove(void*, const void*, size_t);
void* memset(void*, int, size_t);
char* stpcpy(char* restrict, const char* restrict);
char* strcat(char* restrict, const char* restrict);
@ -57,7 +58,6 @@ char* strtok_r(char* restrict, const char* restrict, char** restrict);
/* TODO: These are not implemented in libmaxsi/sortix yet. */
#if defined(__SORTIX_SHOW_UNIMPLEMENTED)
void* memccpy(void* restrict, const void* restrict, int, size_t);
void* memmove(void*, const void*, size_t);
char* stpncpy(char* restrict, const char* restrict, size_t);
int strcoll_l(const char*, const char*, locale_t);
char* strerror_l(int, locale_t);

View File

@ -52,6 +52,18 @@ namespace Maxsi
{
return SysGetPageSize();
}
// TODO: This is a hacky implementation!
extern "C" void* memmove(void* _dest, const void* _src, size_t n)
{
uint8_t* dest = (uint8_t*) _dest;
const uint8_t* src = (const uint8_t*) _src;
uint8_t* tmp = new uint8_t[n];
Memory::Copy(tmp, src, n);
Memory::Copy(dest, tmp, n);
delete[] tmp;
return _dest;
}
#endif
DUAL_FUNCTION(void*, memcpy, Copy, (void* Dest, const void* Src, size_t Length))