Compare commits
3 commits
c72bce50ac
...
435b712f25
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
435b712f25 | ||
|
|
9df66792f2 | ||
|
|
323522b03c |
3 changed files with 50 additions and 10 deletions
26
kern/libkern/limits.h
Normal file
26
kern/libkern/limits.h
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
/* Support signed or unsigned plain-char */
|
||||
|
||||
#if '\xff' > 0
|
||||
#define CHAR_MIN 0
|
||||
#define CHAR_MAX 255
|
||||
#else
|
||||
#define CHAR_MIN (-128)
|
||||
#define CHAR_MAX 127
|
||||
#endif
|
||||
|
||||
#define CHAR_BIT 8
|
||||
#define SCHAR_MIN (-128)
|
||||
#define SCHAR_MAX 127
|
||||
#define UCHAR_MAX 255
|
||||
#define SHRT_MIN (-1 - 0x7fff)
|
||||
#define SHRT_MAX 0x7fff
|
||||
#define USHRT_MAX 0xffff
|
||||
#define INT_MIN (-1 - 0x7fffffff)
|
||||
#define INT_MAX 0x7fffffff
|
||||
#define UINT_MAX 0xffffffffU
|
||||
#define LONG_MIN (-LONG_MAX - 1)
|
||||
#define LONG_MAX __LONG_MAX
|
||||
#define ULONG_MAX (2UL * LONG_MAX + 1)
|
||||
#define LLONG_MIN (-LLONG_MAX - 1)
|
||||
#define LLONG_MAX 0x7fffffffffffffffLL
|
||||
#define ULLONG_MAX (2ULL * LLONG_MAX + 1)
|
||||
|
|
@ -154,15 +154,10 @@ char *itoa(int value, char *str, int base) {
|
|||
return str;
|
||||
}
|
||||
|
||||
int memcmp(const void *s1, const void *s2, size_t len) {
|
||||
const u8 *a = (const u8 *)s1;
|
||||
const u8 *b = (const u8 *)s2;
|
||||
for (size_t i = 0; i < len; i++) {
|
||||
if (a[i] != b[i]) {
|
||||
return (int)a[i] - (int)b[i];
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
int memcmp(const void *vl, const void *vr, size_t n) {
|
||||
const unsigned char *l = vl, *r = vr;
|
||||
for (; n && *l == *r; n--, l++, r++);
|
||||
return n ? *l - *r : 0;
|
||||
}
|
||||
|
||||
size_t strlen(const char *s) {
|
||||
|
|
|
|||
21
kern/start.c
21
kern/start.c
|
|
@ -2,6 +2,7 @@
|
|||
#include <banner.h>
|
||||
#include <buddy.h>
|
||||
#include <config.h>
|
||||
#include <freelist.h>
|
||||
#include <memory.h>
|
||||
#include <panic.h>
|
||||
#include <proc.h>
|
||||
|
|
@ -11,6 +12,7 @@
|
|||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <uart.h>
|
||||
#include <util.h>
|
||||
|
||||
/**
|
||||
* Allocate one stack per CPU (hart).
|
||||
|
|
@ -39,7 +41,7 @@ void start() {
|
|||
// cpu (struct Cpu).
|
||||
write_tp(id);
|
||||
|
||||
if (id == 0) {
|
||||
if (unlikely(id == 0)) {
|
||||
/* Here we will do a bunch of initialization steps */
|
||||
memory_sweep(heap_start, heap_end);
|
||||
buddy_init(heap_start, heap_end);
|
||||
|
|
@ -60,6 +62,23 @@ void start() {
|
|||
else
|
||||
PANIC("Some cores seem to have been enumerated incorrectly!\n");
|
||||
|
||||
{
|
||||
FreeList fl;
|
||||
void *mem = buddy_alloc(4096);
|
||||
fl_init(&fl, (uintptr_t)mem, 4096, sizeof(int));
|
||||
|
||||
uint32_t *hello = fl_alloc(&fl);
|
||||
|
||||
*hello = UINT32_MAX;
|
||||
|
||||
int a = fl_available(&fl);
|
||||
assert_msg(fl_check(&fl) > 0, "FreeList checking failed, might be corrupt.");
|
||||
kprintf("Available: %d\n", a);
|
||||
kprintf("Size: %d\n", fl.size);
|
||||
|
||||
buddy_free(mem);
|
||||
}
|
||||
|
||||
kprintf("To exit qemu, press CTRL+a followed by x\n");
|
||||
spin_unlock(&sl);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue