Change ZealBooter library files to verifiably Public Domain implementations.

This commit is contained in:
TomAwezome 2022-09-08 01:57:22 -04:00
parent c58fa6561d
commit 0bfb500c16
7 changed files with 1977 additions and 132 deletions

View file

@ -1,105 +1,13 @@
#include <stdint.h>
#include <stddef.h>
#include <lib.h>
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];
uint64_t div_roundup_u64(uint64_t a, uint64_t b)
{
return (a + (b - 1)) / b;
}
return dest;
uint64_t align_up_u64(uint64_t a, uint64_t b)
{
return div_roundup_u64(a, b) * b;
}
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;
}
char *strcpy(char *dest, const char *src) {
size_t i;
for (i = 0; src[i]; i++)
dest[i] = src[i];
dest[i] = 0;
return dest;
}
char *strncpy(char *dest, const char *src, size_t n) {
size_t i;
for (i = 0; i < n && src[i]; i++)
dest[i] = src[i];
for ( ; i < n; i++)
dest[i] = 0;
return dest;
}
int strcmp(const char *s1, const char *s2) {
for (size_t i = 0; ; i++) {
char c1 = s1[i], c2 = s2[i];
if (c1 != c2)
return c1 - c2;
if (!c1)
return 0;
}
}
int strncmp(const char *s1, const char *s2, size_t n) {
for (size_t i = 0; i < n; i++) {
char c1 = s1[i], c2 = s2[i];
if (c1 != c2)
return c1 - c2;
if (!c1)
return 0;
}
return 0;
}
size_t strlen(const char *str) {
size_t len;
for (len = 0; str[len]; len++);
return len;
}

View file

@ -1,37 +1,8 @@
#ifndef __LIB_H__
#define __LIB_H__
#include <stdint.h>
#include <memcpy.h>
#include <print.h>
#include <stddef.h>
#define DIV_ROUNDUP(A, B) ({ \
typeof(A) _a_ = A; \
typeof(B) _b_ = B; \
(_a_ + (_b_ - 1)) / _b_; \
})
#define ALIGN_UP(A, B) ({ \
typeof(A) _a__ = A; \
typeof(B) _b__ = B; \
DIV_ROUNDUP(_a__, _b__) * _b__; \
})
#define ALIGN_DOWN(A, B) ({ \
typeof(A) _a_ = A; \
typeof(B) _b_ = B; \
(_a_ / _b_) * _b_; \
})
uint64_t div_roundup_u64(uint64_t a, uint64_t b);
uint64_t align_up_u64(uint64_t a, uint64_t b);
typedef char symbol[];
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);
char *strcpy(char *dest, const char *src);
char *strncpy(char *dest, const char *src, size_t n);
int strcmp(const char *s1, const char *s2);
int strncmp(const char *s1, const char *s2, size_t n);
size_t strlen(const char *str);
#endif

21
zealbooter/memcpy.c Normal file
View file

@ -0,0 +1,21 @@
/* memcpy( void *, const void *, size_t )
This file is part of the Public Domain C Library (PDCLib).
Permission is granted to use, modify, and / or redistribute at will.
*/
#include <stddef.h>
void *memcpy(void *s1, const void *s2, size_t n)
{
char *dest = (char *)s1;
const char *src = (const char *)s2;
while (n--)
{
*dest++ = *src++;
}
return s1;
}

4
zealbooter/memcpy.h Normal file
View file

@ -0,0 +1,4 @@
#include <stddef.h>
void *memcpy(void *s1, const void *s2, size_t n);

31
zealbooter/print.c Normal file
View file

@ -0,0 +1,31 @@
#define STB_SPRINTF_DECORATE(name) name
#define STB_SPRINTF_IMPLEMENTATION 1
#define STB_SPRINTF_NOFLOAT 1
#include <stb_sprintf.h>
#include <limine.h>
static volatile struct limine_terminal_request terminal_request = {
.id = LIMINE_TERMINAL_REQUEST,
.revision = 0
};
#define PRINT_BUFFER_SIZE 8192
int printf(const char *format, ...)
{
va_list args;
char buffer[PRINT_BUFFER_SIZE];
struct limine_terminal *terminal;
size_t length;
va_start(args, format);
length = vsnprintf(buffer, PRINT_BUFFER_SIZE, format, args);
terminal = terminal_request.response->terminals[0];
terminal_request.response->write(terminal, buffer, length);
va_end(args);
return length;
}

3
zealbooter/print.h Normal file
View file

@ -0,0 +1,3 @@
int printf(const char *format, ...);

1907
zealbooter/stb_sprintf.h Normal file

File diff suppressed because it is too large Load diff