Pridana verze v0.1
This commit is contained in:
@@ -0,0 +1,65 @@
|
||||
/*
|
||||
* AsterOS Kernel
|
||||
* Autor: Pavel Kalaš
|
||||
* Rok: 2026
|
||||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* Tento soubor obsahuje vlastni implementace zakladnich utility funkci.
|
||||
* Kernel je pouziva misto standardni knihovny pro strlen, strcmp,
|
||||
* memcpy a memset, aby zustal freestanding a plne pod kontrolou jadra.
|
||||
*/
|
||||
|
||||
#include "string.h"
|
||||
|
||||
usize aster_strlen(const char *s) {
|
||||
usize n = 0;
|
||||
while (s && s[n]) {
|
||||
++n;
|
||||
}
|
||||
return n;
|
||||
}
|
||||
|
||||
int aster_strcmp(const char *a, const char *b) {
|
||||
while (*a && (*a == *b)) {
|
||||
++a;
|
||||
++b;
|
||||
}
|
||||
return (unsigned char)*a - (unsigned char)*b;
|
||||
}
|
||||
|
||||
int aster_strncmp(const char *a, const char *b, usize n) {
|
||||
usize i;
|
||||
|
||||
for (i = 0; i < n; ++i) {
|
||||
if (a[i] != b[i] || a[i] == '\0' || b[i] == '\0') {
|
||||
return (unsigned char)a[i] - (unsigned char)b[i];
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
void *aster_memcpy(void *dst, const void *src, usize n) {
|
||||
usize i;
|
||||
u8 *d = (u8 *)dst;
|
||||
const u8 *s = (const u8 *)src;
|
||||
|
||||
for (i = 0; i < n; ++i) {
|
||||
d[i] = s[i];
|
||||
}
|
||||
|
||||
return dst;
|
||||
}
|
||||
|
||||
void *aster_memset(void *dst, int v, usize n) {
|
||||
usize i;
|
||||
u8 *d = (u8 *)dst;
|
||||
|
||||
for (i = 0; i < n; ++i) {
|
||||
d[i] = (u8)v;
|
||||
}
|
||||
|
||||
return dst;
|
||||
}
|
||||
Reference in New Issue
Block a user