diff options
Diffstat (limited to 'kernel/stdlib.c')
-rw-r--r-- | kernel/stdlib.c | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/kernel/stdlib.c b/kernel/stdlib.c new file mode 100644 index 0000000..92fdec2 --- /dev/null +++ b/kernel/stdlib.c @@ -0,0 +1,33 @@ +#include "stdlib.h" + +void *memset(void *s, int c, size_t n) +{ + char *p = (char *) s; + + for (size_t i = 0; i < n; i++, p++) + *p = (char) c; + + return s; +} + +/* overlap is not handled */ +void *memcpy(void *dest, void *src, size_t n) +{ + char *s = (char *) src; + char *d = (char *) dest; + + for (size_t i = 0; i < n; i++, s++, d++) + *d = *s; + + return dest; +} + +int strncmp(const char *s1, const char *s2, size_t n) +{ + for (size_t i = 0; i < n; i++, s1++, s2++) { + if (*s1 < *s2) return -1; + if (*s1 > *s2) return 1; + } + + return 0; +} |