mirror of
https://github.com/usatiuk/ficus.git
synced 2025-10-29 00:27:52 +01:00
move string things to string.hpp
This commit is contained in:
@@ -8,6 +8,8 @@
|
||||
#include "serial.hpp"
|
||||
#include "task.hpp"
|
||||
|
||||
#include "string.hpp"
|
||||
|
||||
struct HeapEntry *KERN_HeapBegin;
|
||||
uintptr_t KERN_HeapEnd;// Past the end
|
||||
|
||||
@@ -298,70 +300,4 @@ void *krealloc(void *addr, size_t newsize) {
|
||||
kfree(addr);
|
||||
|
||||
return newt;
|
||||
}
|
||||
|
||||
void *memcpy(void *dest, const void *src, size_t n) {
|
||||
uint8_t *pdest = (uint8_t *) dest;
|
||||
const uint8_t *psrc = (const uint8_t *) src;
|
||||
|
||||
for (size_t i = 0; i < n; i++) {
|
||||
pdest[i] = psrc[i];
|
||||
}
|
||||
|
||||
return dest;
|
||||
}
|
||||
|
||||
void *memset(void *s, int c, size_t n) {
|
||||
uint8_t *p = (uint8_t *) s;
|
||||
|
||||
for (size_t i = 0; i < n; i++) {
|
||||
p[i] = (uint8_t) c;
|
||||
}
|
||||
|
||||
return s;
|
||||
}
|
||||
|
||||
void *memmove(void *dest, const void *src, size_t n) {
|
||||
uint8_t *pdest = (uint8_t *) dest;
|
||||
const uint8_t *psrc = (const uint8_t *) src;
|
||||
|
||||
if (src > dest) {
|
||||
for (size_t i = 0; i < n; i++) {
|
||||
pdest[i] = psrc[i];
|
||||
}
|
||||
} else if (src < dest) {
|
||||
for (size_t i = n; i > 0; i--) {
|
||||
pdest[i - 1] = psrc[i - 1];
|
||||
}
|
||||
}
|
||||
|
||||
return dest;
|
||||
}
|
||||
|
||||
int memcmp(const void *s1, const void *s2, size_t n) {
|
||||
const uint8_t *p1 = (const uint8_t *) s1;
|
||||
const uint8_t *p2 = (const uint8_t *) s2;
|
||||
|
||||
for (size_t i = 0; i < n; i++) {
|
||||
if (p1[i] != p2[i]) {
|
||||
return p1[i] < p2[i] ? -1 : 1;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
uint64_t strlen(char *str) {
|
||||
uint64_t res = 0;
|
||||
while (*(str++) != '\0') res++;
|
||||
return res;
|
||||
}
|
||||
|
||||
void strcpy(const char *src, char *dst) {
|
||||
int i = 0;
|
||||
while (src[i] != '\0') {
|
||||
dst[i] = src[i];
|
||||
i++;
|
||||
}
|
||||
dst[i] = '\0';
|
||||
}
|
||||
@@ -4,13 +4,6 @@
|
||||
#include <stddef.h>
|
||||
#include <stdint.h>
|
||||
|
||||
void *memcpy(void *dest, const void *src, size_t n);
|
||||
void *memset(void *s, int c, size_t n);
|
||||
void *memmove(void *dest, const void *src, size_t n);
|
||||
int memcmp(const void *s1, const void *s2, size_t n);
|
||||
uint64_t strlen(char *str);
|
||||
void strcpy(const char *src, char *dst);
|
||||
|
||||
#define KERN_HeapVirtBegin (0xffffc00000000000ULL)
|
||||
#define KERN_HeapMagicFree 0xDEDE
|
||||
#define KERN_HeapMagicTaken 0xADAD
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
|
||||
#include <stddef.h>
|
||||
|
||||
#include "kmem.hpp"
|
||||
#include "string.hpp"
|
||||
|
||||
static volatile struct limine_framebuffer_request framebuffer_request = {
|
||||
.id = LIMINE_FRAMEBUFFER_REQUEST,
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
|
||||
#include "kmem.hpp"
|
||||
#include "limine.h"
|
||||
#include "string.hpp"
|
||||
|
||||
static volatile struct limine_memmap_request memmap_request = {
|
||||
.id = LIMINE_MEMMAP_REQUEST,
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
#include "mutex.hpp"
|
||||
#include "paging.hpp"
|
||||
#include "serial.hpp"
|
||||
#include "string.hpp"
|
||||
#include "timer.hpp"
|
||||
#include "tty.hpp"
|
||||
|
||||
|
||||
101
src/kernel/string.hpp
Normal file
101
src/kernel/string.hpp
Normal file
@@ -0,0 +1,101 @@
|
||||
//
|
||||
// Created by Stepan Usatiuk on 21.10.2023.
|
||||
//
|
||||
|
||||
#ifndef OS2_STRING_HPP
|
||||
#define OS2_STRING_HPP
|
||||
|
||||
#include <cstddef>
|
||||
#include <cstdint>
|
||||
|
||||
inline void *memcpy(void *dest, const void *src, size_t n) {
|
||||
uint8_t *pdest = (uint8_t *) dest;
|
||||
const uint8_t *psrc = (const uint8_t *) src;
|
||||
|
||||
for (size_t i = 0; i < n; i++) {
|
||||
pdest[i] = psrc[i];
|
||||
}
|
||||
|
||||
return dest;
|
||||
}
|
||||
|
||||
inline void *memset(void *s, int c, size_t n) {
|
||||
uint8_t *p = (uint8_t *) s;
|
||||
|
||||
for (size_t i = 0; i < n; i++) {
|
||||
p[i] = (uint8_t) c;
|
||||
}
|
||||
|
||||
return s;
|
||||
}
|
||||
|
||||
inline void *memmove(void *dest, const void *src, size_t n) {
|
||||
uint8_t *pdest = (uint8_t *) dest;
|
||||
const uint8_t *psrc = (const uint8_t *) src;
|
||||
|
||||
if (src > dest) {
|
||||
for (size_t i = 0; i < n; i++) {
|
||||
pdest[i] = psrc[i];
|
||||
}
|
||||
} else if (src < dest) {
|
||||
for (size_t i = n; i > 0; i--) {
|
||||
pdest[i - 1] = psrc[i - 1];
|
||||
}
|
||||
}
|
||||
|
||||
return dest;
|
||||
}
|
||||
|
||||
inline int memcmp(const void *s1, const void *s2, size_t n) {
|
||||
const uint8_t *p1 = (const uint8_t *) s1;
|
||||
const uint8_t *p2 = (const uint8_t *) s2;
|
||||
|
||||
for (size_t i = 0; i < n; i++) {
|
||||
if (p1[i] != p2[i]) {
|
||||
return p1[i] < p2[i] ? -1 : 1;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
inline uint64_t strlen(const char *str) {
|
||||
uint64_t res = 0;
|
||||
while (*(str++) != '\0') res++;
|
||||
return res;
|
||||
}
|
||||
|
||||
inline char *strcat(char *dst, const char *src) {
|
||||
char *dstw = dst;
|
||||
|
||||
while (*(dstw) != '\0')
|
||||
dstw++;
|
||||
|
||||
int i = 0;
|
||||
while (src[i] != '\0') {
|
||||
dstw[i] = src[i];
|
||||
i++;
|
||||
}
|
||||
dstw[i] = '\0';
|
||||
|
||||
return dst;
|
||||
}
|
||||
|
||||
inline int strcmp(const char *s1, const char *s2) {
|
||||
while (*s1 && (*s1 == *s2)) {
|
||||
s1++;
|
||||
s2++;
|
||||
}
|
||||
return *((const unsigned char *) s1) - *((const unsigned char *) s2);
|
||||
}
|
||||
|
||||
inline void strcpy(const char *src, char *dst) {
|
||||
int i = 0;
|
||||
while (src[i] != '\0') {
|
||||
dst[i] = src[i];
|
||||
i++;
|
||||
}
|
||||
dst[i] = '\0';
|
||||
}
|
||||
|
||||
#endif//OS2_STRING_HPP
|
||||
Reference in New Issue
Block a user