summaryrefslogtreecommitdiff
path: root/lib/memcpy.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/memcpy.c')
-rw-r--r--lib/memcpy.c46
1 files changed, 7 insertions, 39 deletions
diff --git a/lib/memcpy.c b/lib/memcpy.c
index 020cc68..ec56537 100644
--- a/lib/memcpy.c
+++ b/lib/memcpy.c
@@ -1,42 +1,10 @@
-/**
-** @file memcpy.c
-**
-** @author Numerous CSCI-452 classes
-**
-** @brief C implementations of common library functions
-*/
+#include <string.h>
-#ifndef MEMCPY_SRC_INC
-#define MEMCPY_SRC_INC
-
-#include <common.h>
-
-#include <lib.h>
-
-/**
-** memcpy(dst,src,len)
-**
-** Copy a block from one place to another
-**
-** May not correctly deal with overlapping buffers
-**
-** @param dst Destination buffer
-** @param src Source buffer
-** @param len Buffer size (in bytes)
-*/
-void memcpy(void *dst, register const void *src, register uint32_t len)
+void *memcpy(void *restrict dest, const void *restrict src, size_t n)
{
- register uint8_t *dest = dst;
- register const uint8_t *source = src;
-
- /*
- ** We could speed this up by unrolling it and copying
- ** words at a time (instead of bytes).
- */
-
- while (len--) {
- *dest++ = *source++;
- }
+ char *d = dest;
+ const char *s = src;
+ for (; n; n--)
+ *d++ = *s++;
+ return dest;
}
-
-#endif