From 098330c845b052d5bc89471fbd85264e9dc8889b Mon Sep 17 00:00:00 2001 From: Mathieu Maret Date: Sun, 5 Mar 2023 20:34:24 +0100 Subject: [PATCH] Add memmove to klibc --- core/klibc.c | 10 ++++++++++ core/klibc.h | 8 ++++++++ 2 files changed, 18 insertions(+) diff --git a/core/klibc.c b/core/klibc.c index 6a98c78..fbef3b5 100644 --- a/core/klibc.c +++ b/core/klibc.c @@ -30,6 +30,16 @@ int memcmp(const void *aptr, const void *bptr, size_t size) /* Threshhold for punting to the byte copier. */ #define TOO_SMALL(LEN) ((LEN) < BIGBLOCKSIZE) +void *memmove(void *dst, const void *src, size_t n) +{ + char *dstChar = dst; + const char *srcChar = src; + for (size_t i = 0; i < n; i++) { + *(dstChar++) = *(srcChar++); + } + return dst; +} + void *memcpy(void *dst0, const void *src0, size_t len0) { #if 0 diff --git a/core/klibc.h b/core/klibc.h index d29103a..435282e 100644 --- a/core/klibc.h +++ b/core/klibc.h @@ -11,7 +11,15 @@ ((c) == '\v')) #define isprint(c) ((' ' <= (c)) && ((c) <= '~')) +/** compares the first @param n bytes (each interpreted as + * unsigned char) of the memory areas @param s1 and @param s2. + */ int memcmp(const void *s1, const void *s2, size_t n); + +/** + * copies n bytes from memory area src to memory area dest. The memory areas may overlap + */ +void *memmove(void *dest, const void *src, size_t n); void *memcpy(void *dest, const void *src, size_t n); void *memset(void *s, int c, size_t n); char *itoa(long long int value, char *str, int base);