diff options
Diffstat (limited to 'kernel/src/utils/cxx/cxx_stuff.cpp')
| -rw-r--r-- | kernel/src/utils/cxx/cxx_stuff.cpp | 44 |
1 files changed, 5 insertions, 39 deletions
diff --git a/kernel/src/utils/cxx/cxx_stuff.cpp b/kernel/src/utils/cxx/cxx_stuff.cpp index c12546a..54e8b58 100644 --- a/kernel/src/utils/cxx/cxx_stuff.cpp +++ b/kernel/src/utils/cxx/cxx_stuff.cpp @@ -1,56 +1,22 @@ #include <cstdint> +#include <klibc/string.hpp> extern "C" { void *memcpy(void *__restrict dest, const void *__restrict src, std::size_t n) { - std::uint8_t *__restrict pdest = static_cast<std::uint8_t *__restrict>(dest); - const std::uint8_t *__restrict psrc = static_cast<const std::uint8_t *__restrict>(src); - - for (std::size_t i = 0; i < n; i++) { - pdest[i] = psrc[i]; - } - - return dest; + return klibc::memcpy(dest, src, n); } void *memset(void *s, int c, std::size_t n) { - std::uint8_t *p = static_cast<std::uint8_t *>(s); - - for (std::size_t i = 0; i < n; i++) { - p[i] = static_cast<uint8_t>(c); - } - - return s; + return klibc::memset(s, c, n); } void *memmove(void *dest, const void *src, std::size_t n) { - std::uint8_t *pdest = static_cast<std::uint8_t *>(dest); - const std::uint8_t *psrc = static_cast<const std::uint8_t *>(src); - - if (reinterpret_cast<std::uintptr_t>(src) > reinterpret_cast<std::uintptr_t>(dest)) { - for (std::size_t i = 0; i < n; i++) { - pdest[i] = psrc[i]; - } - } else if (reinterpret_cast<std::uintptr_t>(src) < reinterpret_cast<std::uintptr_t>(dest)) { - for (std::size_t i = n; i > 0; i--) { - pdest[i-1] = psrc[i-1]; - } - } - - return dest; + return klibc::memmove(dest, src, n); } int memcmp(const void *s1, const void *s2, std::size_t n) { - const std::uint8_t *p1 = static_cast<const std::uint8_t *>(s1); - const std::uint8_t *p2 = static_cast<const std::uint8_t *>(s2); - - for (std::size_t i = 0; i < n; i++) { - if (p1[i] != p2[i]) { - return p1[i] < p2[i] ? -1 : 1; - } - } - - return 0; + return klibc::memcmp(s1, s2, n); } } |
