mirror of
https://github.com/Leonmmcoset/cleonos.git
synced 2026-04-21 18:44:01 +00:00
代码分类
This commit is contained in:
32
clks/kernel/support/libc_compat.c
Normal file
32
clks/kernel/support/libc_compat.c
Normal file
@@ -0,0 +1,32 @@
|
||||
#include <clks/string.h>
|
||||
#include <clks/types.h>
|
||||
|
||||
void *memcpy(void *dst, const void *src, usize count) {
|
||||
return clks_memcpy(dst, src, count);
|
||||
}
|
||||
|
||||
void *memmove(void *dst, const void *src, usize count) {
|
||||
return clks_memmove(dst, src, count);
|
||||
}
|
||||
|
||||
void *memset(void *dst, int value, usize count) {
|
||||
return clks_memset(dst, value, count);
|
||||
}
|
||||
|
||||
int memcmp(const void *left, const void *right, usize count) {
|
||||
const u8 *a = (const u8 *)left;
|
||||
const u8 *b = (const u8 *)right;
|
||||
usize i;
|
||||
|
||||
for (i = 0U; i < count; i++) {
|
||||
if (a[i] != b[i]) {
|
||||
return (a[i] < b[i]) ? -1 : 1;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int bcmp(const void *left, const void *right, usize count) {
|
||||
return memcmp(left, right, count);
|
||||
}
|
||||
70
clks/kernel/support/string.c
Normal file
70
clks/kernel/support/string.c
Normal file
@@ -0,0 +1,70 @@
|
||||
#include <clks/string.h>
|
||||
|
||||
usize clks_strlen(const char *str) {
|
||||
usize len = 0;
|
||||
|
||||
while (str[len] != '\0') {
|
||||
len++;
|
||||
}
|
||||
|
||||
return len;
|
||||
}
|
||||
|
||||
void *clks_memset(void *dst, int value, usize count) {
|
||||
u8 *d = (u8 *)dst;
|
||||
u8 v = (u8)value;
|
||||
usize i;
|
||||
|
||||
for (i = 0; i < count; i++) {
|
||||
d[i] = v;
|
||||
}
|
||||
|
||||
return dst;
|
||||
}
|
||||
|
||||
void *clks_memcpy(void *dst, const void *src, usize count) {
|
||||
u8 *d = (u8 *)dst;
|
||||
const u8 *s = (const u8 *)src;
|
||||
usize i;
|
||||
|
||||
for (i = 0; i < count; i++) {
|
||||
d[i] = s[i];
|
||||
}
|
||||
|
||||
return dst;
|
||||
}
|
||||
|
||||
void *clks_memmove(void *dst, const void *src, usize count) {
|
||||
u8 *d = (u8 *)dst;
|
||||
const u8 *s = (const u8 *)src;
|
||||
usize i;
|
||||
|
||||
if (d == s || count == 0) {
|
||||
return dst;
|
||||
}
|
||||
|
||||
if (d < s) {
|
||||
for (i = 0; i < count; i++) {
|
||||
d[i] = s[i];
|
||||
}
|
||||
} else {
|
||||
for (i = count; i != 0; i--) {
|
||||
d[i - 1] = s[i - 1];
|
||||
}
|
||||
}
|
||||
|
||||
return dst;
|
||||
}
|
||||
|
||||
int clks_strcmp(const char *left, const char *right) {
|
||||
usize i = 0;
|
||||
|
||||
while (left[i] != '\0' && right[i] != '\0') {
|
||||
if (left[i] != right[i]) {
|
||||
return (int)((u8)left[i] - (u8)right[i]);
|
||||
}
|
||||
i++;
|
||||
}
|
||||
|
||||
return (int)((u8)left[i] - (u8)right[i]);
|
||||
}
|
||||
Reference in New Issue
Block a user