summaryrefslogtreecommitdiff
path: root/user/ulib.c
diff options
context:
space:
mode:
authorFrans Kaashoek <[email protected]>2020-08-10 13:05:17 -0400
committerGitHub <[email protected]>2020-08-10 13:05:17 -0400
commitc31d35d8031c88b7e1ea8657cc9806dfdd4c3ef9 (patch)
treea6c903e1c61c08f4cb87700c320752a737081dcb /user/ulib.c
parent90eb90b5e203299427c3fde8c996a48835fc93cf (diff)
parentd8fe1773b26758c7c7b8f36724cd822555b33612 (diff)
downloadxv6-labs-c31d35d8031c88b7e1ea8657cc9806dfdd4c3ef9.tar.gz
xv6-labs-c31d35d8031c88b7e1ea8657cc9806dfdd4c3ef9.tar.bz2
xv6-labs-c31d35d8031c88b7e1ea8657cc9806dfdd4c3ef9.zip
Merge branch 'riscv' into riscv
Diffstat (limited to 'user/ulib.c')
-rw-r--r--user/ulib.c31
1 files changed, 29 insertions, 2 deletions
diff --git a/user/ulib.c b/user/ulib.c
index ddda0f5..4775939 100644
--- a/user/ulib.c
+++ b/user/ulib.c
@@ -103,7 +103,34 @@ memmove(void *vdst, const void *vsrc, int n)
dst = vdst;
src = vsrc;
- while(n-- > 0)
- *dst++ = *src++;
+ if (src > dst) {
+ while(n-- > 0)
+ *dst++ = *src++;
+ } else {
+ dst += n;
+ src += n;
+ while(n-- > 0)
+ *--dst = *--src;
+ }
return vdst;
}
+
+int
+memcmp(const void *s1, const void *s2, uint n)
+{
+ const char *p1 = s1, *p2 = s2;
+ while (n-- > 0) {
+ if (*p1 != *p2) {
+ return *p1 - *p2;
+ }
+ p1++;
+ p2++;
+ }
+ return 0;
+}
+
+void *
+memcpy(void *dst, const void *src, uint n)
+{
+ return memmove(dst, src, n);
+}