diff --git a/Makefile b/Makefile
index e8d5967..15b8781 100644
--- a/Makefile
+++ b/Makefile
@@ -33,7 +33,7 @@ ASMFLAGS=-f elf64
LDFLAGS=-melf_x86_64
COPTIM=-O2
CWARNS=-Wall -Wextra -Werror=implicit-function-declaration
-CINCLUDES=-Ikaleid/include
+CINCLUDES=-Iinclude
CFLAGS1=-nostdlib -ffreestanding -mcmodel=large -std=gnu11
CFLAGS2= -c -g -mno-red-zone -mno-mmx -mno-sse -mno-sse2 -fno-strict-aliasing
CFLAGS=$(CFLAGS1) $(CFLAGS2)
@@ -42,7 +42,8 @@ KCC=$(CCNAME) $(COPTIM) $(CWARNS) $(CFLAGS) $(CINCLUDES) -D_OSK_SOURCE -D_KALEID
#Folders
MBRDIR=boot/grub
LOADERDIR=boot/loader
-KERNELDIR=kaleid
+KALEIDDIR=kaleid
+INCLUDEDIR=include
OBJDIR=build/obj
KOBJDIR=build/obj/kaleid
LOBJDIR=build/obj/boot
@@ -55,7 +56,6 @@ CL2='\033[1;36m'
CL3='\033[0m'
NC='\033[1;37m'
-
.PHONY: all
all : OS/K
@@ -72,55 +72,66 @@ kal_com_obj= $(KOBJDIR)/atoi.o $(KOBJDIR)/ctype.o \
$(KOBJDIR)/utoa.o $(KOBJDIR)/ltoa.o \
$(KOBJDIR)/ultoa.o
-$(KOBJDIR)/atoi.o: $(KERNELDIR)/crtlib/atoi.c $(KERNELDIR)/include/*/*.h
+$(KOBJDIR)/atoi.o: $(KALEIDDIR)/libc/atoi.c $(INCLUDEDIR)/*/*.h
@$(KCC) -D_NEED_ATOI $< -o $@
@echo ${CL2}[$@] ${CL}Compiled.${CL3}
-$(KOBJDIR)/atol.o: $(KERNELDIR)/crtlib/atoi.c $(KERNELDIR)/include/*/*.h
+$(KOBJDIR)/atol.o: $(KALEIDDIR)/libc/atoi.c $(INCLUDEDIR)/*/*.h
@$(KCC) -D_NEED_ATOL $< -o $@
@echo ${CL2}[$@] ${CL}Compiled.${CL3}
-$(KOBJDIR)/atou.o: $(KERNELDIR)/crtlib/atoi.c $(KERNELDIR)/include/*/*.h
+$(KOBJDIR)/atou.o: $(KALEIDDIR)/libc/atoi.c $(INCLUDEDIR)/*/*.h
@$(KCC) -D_NEED_ATOU $< -o $@
@echo ${CL2}[$@] ${CL}Compiled.${CL3}
-$(KOBJDIR)/atoul.o: $(KERNELDIR)/crtlib/atoi.c $(KERNELDIR)/include/*/*.h
+$(KOBJDIR)/atoul.o: $(KALEIDDIR)/libc/atoi.c $(INCLUDEDIR)/*/*.h
@$(KCC) -D_NEED_ATOUL $< -o $@
@echo ${CL2}[$@] ${CL}Compiled.${CL3}
-$(KOBJDIR)/ctype.o: $(KERNELDIR)/crtlib/ctype.c $(KERNELDIR)/include/*/*.h
+$(KOBJDIR)/ctype.o: $(KALEIDDIR)/libc/ctype.c $(INCLUDEDIR)/*/*.h
@$(KCC) $< -o $@
@echo ${CL2}[$@] ${CL}Compiled.${CL3}
-$(KOBJDIR)/itoa.o: $(KERNELDIR)/crtlib/itoa.c $(KERNELDIR)/include/*/*.h
+$(KOBJDIR)/itoa.o: $(KALEIDDIR)/libc/itoa.c $(INCLUDEDIR)/*/*.h
@$(KCC) -D_NEED_ITOA $< -o $@
@echo ${CL2}[$@] ${CL}Compiled.${CL3}
-$(KOBJDIR)/ltoa.o: $(KERNELDIR)/crtlib/itoa.c $(KERNELDIR)/include/*/*.h
+$(KOBJDIR)/ltoa.o: $(KALEIDDIR)/libc/itoa.c $(INCLUDEDIR)/*/*.h
@$(KCC) -D_NEED_LTOA $< -o $@
@echo ${CL2}[$@] ${CL}Compiled.${CL3}
-$(KOBJDIR)/utoa.o: $(KERNELDIR)/crtlib/itoa.c $(KERNELDIR)/include/*/*.h
+$(KOBJDIR)/utoa.o: $(KALEIDDIR)/libc/itoa.c $(INCLUDEDIR)/*/*.h
@$(KCC) -D_NEED_UTOA $< -o $@
@echo ${CL2}[$@] ${CL}Compiled.${CL3}
-$(KOBJDIR)/ultoa.o: $(KERNELDIR)/crtlib/itoa.c $(KERNELDIR)/include/*/*.h
+$(KOBJDIR)/ultoa.o: $(KALEIDDIR)/libc/itoa.c $(INCLUDEDIR)/*/*.h
@$(KCC) -D_NEED_ULTOA $< -o $@
@echo ${CL2}[$@] ${CL}Compiled.${CL3}
-$(KOBJDIR)/mem.o: $(KERNELDIR)/crtlib/mem.c $(KERNELDIR)/include/*/*.h
+$(KOBJDIR)/mem.o: $(KALEIDDIR)/libc/mem.c $(INCLUDEDIR)/*/*.h
@$(KCC) -fno-strict-aliasing $< -o $@
@echo ${CL2}[$@] ${CL}Compiled.${CL3}
-$(KOBJDIR)/rand.o: $(KERNELDIR)/crtlib/rand.c $(KERNELDIR)/include/*/*.h
+$(KOBJDIR)/rand.o: $(KALEIDDIR)/libc/rand.c $(INCLUDEDIR)/*/*.h
@$(KCC) $< -o $@
@echo ${CL2}[$@] ${CL}Compiled.${CL3}
-$(KOBJDIR)/sprintf.o: $(KERNELDIR)/crtlib/sprintf.c $(KERNELDIR)/include/*/*.h
+$(KOBJDIR)/sprintf.o: $(KALEIDDIR)/libc/sprintf.c $(INCLUDEDIR)/*/*.h
@$(KCC) $< -o $@
@echo ${CL2}[$@] ${CL}Compiled.${CL3}
-$(KOBJDIR)/status.o: $(KERNELDIR)/crtlib/status.c $(KERNELDIR)/include/*/*.h
+$(KOBJDIR)/status.o: $(KALEIDDIR)/libc/status.c $(INCLUDEDIR)/*/*.h
@$(KCC) $< -o $@
@echo ${CL2}[$@] ${CL}Compiled.${CL3}
-$(KOBJDIR)/string.o: $(KERNELDIR)/crtlib/string.c $(KERNELDIR)/include/*/*.h
+$(KOBJDIR)/string.o: $(KALEIDDIR)/libc/string.c $(INCLUDEDIR)/*/*.h
@$(KCC) $< -o $@
@echo ${CL2}[$@] ${CL}Compiled.${CL3}
-$(KOBJDIR)/strtol.o: $(KERNELDIR)/crtlib/strtol.c $(KERNELDIR)/include/*/*.h
+$(KOBJDIR)/strtol.o: $(KALEIDDIR)/libc/strtol.c $(INCLUDEDIR)/*/*.h
@$(KCC) $< -o $@
@echo ${CL2}[$@] ${CL}Compiled.${CL3}
-$(KOBJDIR)/argv.o: $(KERNELDIR)/extras/argv.c $(KERNELDIR)/include/*/*.h
+
+$(KOBJDIR)/argv.o: $(KALEIDDIR)/extras/argv.c $(INCLUDEDIR)/*/*.h
@$(KCC) $< -o $@
@echo ${CL2}[$@] ${CL}Compiled.${CL3}
-$(KOBJDIR)/prog.o: $(KERNELDIR)/extras/prog.c $(KERNELDIR)/include/*/*.h
+$(KOBJDIR)/prog.o: $(KALEIDDIR)/extras/prog.c $(INCLUDEDIR)/*/*.h
+ @$(KCC) $< -o $@
+ @echo ${CL2}[$@] ${CL}Compiled.${CL3}
+
+$(KOBJDIR)/kernel/buf.o: $(KALEIDDIR)/libbuf/buf.c $(INCLUDEDIR)/*/*.h
+ @$(KCC) $< -o $@
+ @echo ${CL2}[$@] ${CL}Compiled.${CL3}
+$(KOBJDIR)/kernel/bput.o: $(KALEIDDIR)/libbuf/bput.c $(INCLUDEDIR)/*/*.h
+ @$(KCC) $< -o $@
+ @echo ${CL2}[$@] ${CL}Compiled.${CL3}
+$(KOBJDIR)/kernel/bprint.o: $(KALEIDDIR)/libbuf/bprint.c $(INCLUDEDIR)/*/*.h
@$(KCC) $< -o $@
@echo ${CL2}[$@] ${CL}Compiled.${CL3}
@@ -134,51 +145,42 @@ kal_kern_obj= $(KOBJDIR)/kernel/cpuid.o $(KOBJDIR)/kernel/init.o \
$(KOBJDIR)/kernel/bput.o $(KOBJDIR)/kernel/bprint.o \
$(KOBJDIR)/kernel/gdt.o
-$(KOBJDIR)/kernel/cpuid.o: $(KERNELDIR)/kernel/cpu/cpuid.c $(KERNELDIR)/include/*/*.h
+$(KOBJDIR)/kernel/cpuid.o: $(KALEIDDIR)/kernel/cpu/cpuid.c $(INCLUDEDIR)/*/*.h
@$(KCC) $< -o $@
@echo ${CL2}[$@] ${CL}Compiled.${CL3}
-$(KOBJDIR)/kernel/idt.o: $(KERNELDIR)/kernel/cpu/idt.c $(KERNELDIR)/include/*/*.h
+$(KOBJDIR)/kernel/idt.o: $(KALEIDDIR)/kernel/cpu/idt.c $(INCLUDEDIR)/*/*.h
@$(KCC) $< -o $@
@echo ${CL2}[$@] ${CL}Compiled.${CL3}
-$(KOBJDIR)/kernel/init.o: $(KERNELDIR)/kernel/init/init.c $(KERNELDIR)/include/*/*.h
+$(KOBJDIR)/kernel/init.o: $(KALEIDDIR)/kernel/init/init.c $(INCLUDEDIR)/*/*.h
@$(KCC) $< -o $@
@echo ${CL2}[$@] ${CL}Compiled.${CL3}
-$(KOBJDIR)/kernel/table.o: $(KERNELDIR)/kernel/init/table.c $(KERNELDIR)/include/*/*.h
+$(KOBJDIR)/kernel/table.o: $(KALEIDDIR)/kernel/init/table.c $(INCLUDEDIR)/*/*.h
@$(KCC) $< -o $@
@echo ${CL2}[$@] ${CL}Compiled.${CL3}
-$(KOBJDIR)/kernel/cursor.o: $(KERNELDIR)/kernel/io/cursor.c $(KERNELDIR)/include/*/*.h
+$(KOBJDIR)/kernel/cursor.o: $(KALEIDDIR)/kernel/io/cursor.c $(INCLUDEDIR)/*/*.h
@$(KCC) $< -o $@
@echo ${CL2}[$@] ${CL}Compiled.${CL3}
-$(KOBJDIR)/kernel/log.o: $(KERNELDIR)/kernel/ke/log.c $(KERNELDIR)/include/*/*.h
+$(KOBJDIR)/kernel/log.o: $(KALEIDDIR)/kernel/ke/log.c $(INCLUDEDIR)/*/*.h
@$(KCC) $< -o $@
@echo ${CL2}[$@] ${CL}Compiled.${CL3}
-$(KOBJDIR)/kernel/vga.o: $(KERNELDIR)/kernel/io/vga.c $(KERNELDIR)/include/*/*.h
+$(KOBJDIR)/kernel/vga.o: $(KALEIDDIR)/kernel/io/vga.c $(INCLUDEDIR)/*/*.h
@$(KCC) $< -o $@
@echo ${CL2}[$@] ${CL}Compiled.${CL3}
-$(KOBJDIR)/kernel/panic.o: $(KERNELDIR)/kernel/ke/panic.c $(KERNELDIR)/include/*/*.h
+$(KOBJDIR)/kernel/panic.o: $(KALEIDDIR)/kernel/ke/panic.c $(INCLUDEDIR)/*/*.h
@$(KCC) $< -o $@
@echo ${CL2}[$@] ${CL}Compiled.${CL3}
-$(KOBJDIR)/kernel/map.o: $(KERNELDIR)/kernel/mm/map.c $(KERNELDIR)/include/*/*.h
+$(KOBJDIR)/kernel/map.o: $(KALEIDDIR)/kernel/mm/map.c $(INCLUDEDIR)/*/*.h
@$(KCC) $< -o $@
@echo ${CL2}[$@] ${CL}Compiled.${CL3}
-$(KOBJDIR)/kernel/heap.o: $(KERNELDIR)/kernel/mm/heap.c $(KERNELDIR)/include/*/*.h
+$(KOBJDIR)/kernel/heap.o: $(KALEIDDIR)/kernel/mm/heap.c $(INCLUDEDIR)/*/*.h
@$(KCC) $< -o $@
@echo ${CL2}[$@] ${CL}Compiled.${CL3}
-$(KOBJDIR)/kernel/malloc.o: $(KERNELDIR)/kernel/mm/malloc.c $(KERNELDIR)/include/*/*.h
+$(KOBJDIR)/kernel/malloc.o: $(KALEIDDIR)/kernel/mm/malloc.c $(INCLUDEDIR)/*/*.h
@$(KCC) $< -o $@
-$(KOBJDIR)/kernel/gdt.o: $(KERNELDIR)/kernel/mm/gdt.c $(KERNELDIR)/include/*/*.h
+$(KOBJDIR)/kernel/gdt.o: $(KALEIDDIR)/kernel/mm/gdt.c $(INCLUDEDIR)/*/*.h
@$(KCC) $< -o $@
@echo ${CL2}[$@] ${CL}Compiled.${CL3}
-$(KOBJDIR)/kernel/buf.o: $(KERNELDIR)/kernel/buf/buf.c $(KERNELDIR)/include/*/*.h
- @$(KCC) $< -o $@
- @echo ${CL2}[$@] ${CL}Compiled.${CL3}
-$(KOBJDIR)/kernel/bput.o: $(KERNELDIR)/kernel/buf/bput.c $(KERNELDIR)/include/*/*.h
- @$(KCC) $< -o $@
- @echo ${CL2}[$@] ${CL}Compiled.${CL3}
-$(KOBJDIR)/kernel/bprint.o: $(KERNELDIR)/kernel/buf/bprint.c $(KERNELDIR)/include/*/*.h
- @$(KCC) $< -o $@
- @echo ${CL2}[$@] ${CL}Compiled.${CL3}
-$(KOBJDIR)/kernel/sched.o: $(KERNELDIR)/kernel/ps/sched.c $(KERNELDIR)/include/*/*.h
+$(KOBJDIR)/kernel/sched.o: $(KALEIDDIR)/kernel/ps/sched.c $(INCLUDEDIR)/*/*.h
@$(KCC) $< -o $@
@echo ${CL2}[$@] ${CL}Compiled.${CL3}
@@ -189,6 +191,7 @@ $(KOBJDIR)/kernel/sched.o: $(KERNELDIR)/kernel/ps/sched.c $(KERNELDIR)/include/*
@echo "\n" >> ./ProjectTree
@tree --dirsfirst >> ./ProjectTree
@echo ${CL2}[$@] ${CL}Generated.${CL3}
+
## MAIN MAKEFILE ------------------------------------------------------------- #
.PHONY: test
diff --git a/ProjectTree b/ProjectTree
index 9daa4e3..41c126d 100644
--- a/ProjectTree
+++ b/ProjectTree
@@ -89,82 +89,82 @@
│ │ ├── ultoa.o
│ │ └── utoa.o
│ ├── grub.log
-│ └── kernel.ld
+│ ├── kernel.ld
+│ └── qemu.log
+├── include
+│ ├── base
+│ │ ├── assert.h
+│ │ ├── bdefs.h
+│ │ ├── crtlib.h
+│ │ ├── errno.h
+│ │ ├── limits.h
+│ │ ├── masks.h
+│ │ └── types.h
+│ ├── extras
+│ │ ├── argv.h
+│ │ ├── buf.h
+│ │ ├── list.h
+│ │ ├── locks.h
+│ │ ├── malloc.h
+│ │ └── prog.h
+│ ├── kernel
+│ │ ├── base.h
+│ │ ├── boot.h
+│ │ ├── cpu.h
+│ │ ├── heap.h
+│ │ ├── iomisc.h
+│ │ ├── mboot.h
+│ │ ├── mm.h
+│ │ ├── panic.h
+│ │ ├── proc.h
+│ │ └── sched.h
+│ ├── kalbase.h
+│ ├── kaleid.h
+│ └── kalext.h
├── kaleid
-│ ├── crtlib
-│ │ ├── atoi.c
-│ │ ├── ctype.c
-│ │ ├── itoa.c
-│ │ ├── mem.c
-│ │ ├── rand.c
-│ │ ├── sprintf.c
-│ │ ├── status.c
-│ │ ├── string.c
-│ │ └── strtol.c
│ ├── extras
│ │ ├── argv.c
│ │ └── prog.c
-│ ├── include
-│ │ ├── base
-│ │ │ ├── assert.h
-│ │ │ ├── bdefs.h
-│ │ │ ├── crtlib.h
-│ │ │ ├── errno.h
-│ │ │ ├── limits.h
-│ │ │ ├── masks.h
-│ │ │ └── types.h
-│ │ ├── extras
-│ │ │ ├── argv.h
-│ │ │ ├── list.h
-│ │ │ ├── locks.h
-│ │ │ ├── malloc.h
-│ │ │ └── prog.h
-│ │ ├── kernel
-│ │ │ ├── base.h
-│ │ │ ├── buf.h
-│ │ │ ├── cpu.h
-│ │ │ ├── heap.h
-│ │ │ ├── iomisc.h
-│ │ │ ├── log.h
-│ │ │ ├── mboot.h
-│ │ │ ├── mm.h
-│ │ │ ├── panic.h
-│ │ │ ├── proc.h
-│ │ │ └── sched.h
-│ │ ├── kalbase.h
-│ │ ├── kaleid.h
-│ │ └── kalext.h
-│ └── kernel
-│ ├── buf
-│ │ ├── bprint.c
-│ │ ├── bput.c
-│ │ └── buf.c
-│ ├── cpu
-│ │ ├── cpuid.c
-│ │ └── idt.c
-│ ├── init
-│ │ ├── init.c
-│ │ └── table.c
-│ ├── io
-│ │ ├── ata.inc
-│ │ ├── cursor.c
-│ │ └── vga.c
-│ ├── ke
-│ │ ├── log.c
-│ │ └── panic.c
-│ ├── mm
-│ │ ├── gdt.c
-│ │ ├── heap.c
-│ │ ├── malloc.c
-│ │ └── map.c
-│ └── proc
-│ ├── Makefile
-│ └── sched.c
+│ ├── kernel
+│ │ ├── cpu
+│ │ │ ├── cpuid.c
+│ │ │ └── idt.c
+│ │ ├── init
+│ │ │ ├── init.c
+│ │ │ └── table.c
+│ │ ├── io
+│ │ │ ├── ata.inc
+│ │ │ ├── cursor.c
+│ │ │ └── vga.c
+│ │ ├── ke
+│ │ │ ├── log.c
+│ │ │ └── panic.c
+│ │ ├── mm
+│ │ │ ├── gdt.c
+│ │ │ ├── heap.c
+│ │ │ ├── malloc.c
+│ │ │ └── map.c
+│ │ └── ps
+│ │ └── sched.c
+│ ├── libbuf
+│ │ ├── bprint.c
+│ │ ├── bput.c
+│ │ └── buf.c
+│ └── libc
+│ ├── atoi.c
+│ ├── ctype.c
+│ ├── itoa.c
+│ ├── mem.c
+│ ├── rand.c
+│ ├── sprintf.c
+│ ├── status.c
+│ ├── string.c
+│ └── strtol.c
├── AUTHORS
├── ChangeLog
├── COPYING
├── Makefile
├── ProjectTree
-└── Readme.md
+└── README.md
28 directories, 114 files
diff --git a/kaleid/include/base/assert.h b/include/base/assert.h
similarity index 100%
rename from kaleid/include/base/assert.h
rename to include/base/assert.h
diff --git a/kaleid/include/base/bdefs.h b/include/base/bdefs.h
similarity index 100%
rename from kaleid/include/base/bdefs.h
rename to include/base/bdefs.h
diff --git a/kaleid/include/base/crtlib.h b/include/base/crtlib.h
similarity index 100%
rename from kaleid/include/base/crtlib.h
rename to include/base/crtlib.h
diff --git a/kaleid/include/base/errno.h b/include/base/errno.h
similarity index 100%
rename from kaleid/include/base/errno.h
rename to include/base/errno.h
diff --git a/kaleid/include/base/limits.h b/include/base/limits.h
similarity index 100%
rename from kaleid/include/base/limits.h
rename to include/base/limits.h
diff --git a/kaleid/include/base/masks.h b/include/base/masks.h
similarity index 100%
rename from kaleid/include/base/masks.h
rename to include/base/masks.h
diff --git a/kaleid/include/base/types.h b/include/base/types.h
similarity index 100%
rename from kaleid/include/base/types.h
rename to include/base/types.h
diff --git a/kaleid/include/extras/argv.h b/include/extras/argv.h
similarity index 100%
rename from kaleid/include/extras/argv.h
rename to include/extras/argv.h
diff --git a/kaleid/include/kernel/buf.h b/include/extras/buf.h
similarity index 96%
rename from kaleid/include/kernel/buf.h
rename to include/extras/buf.h
index 05c876f..bc9c2c9 100644
--- a/kaleid/include/kernel/buf.h
+++ b/include/extras/buf.h
@@ -22,12 +22,12 @@
// along with OS/K. If not, see . //
//----------------------------------------------------------------------------//
-#ifndef _KALKERN_BASE_H
-#include
+#ifndef _KALEXTRAS_LOCKS_H
+#include
#endif
-#ifndef _KALKERN_BUF_H
-#define _KALKERN_BUF_H
+#ifndef _KALEXTRAS_BUF_H
+#define _KALEXTRAS_BUF_H
//
// Buffer flags
@@ -55,6 +55,7 @@ enum
BS_WRONLY, // Only for writing
};
+typedef struct Buffer_t Buffer_t;
typedef error_t (*BFlusher_t)(Buffer_t *);
struct Buffer_t
diff --git a/kaleid/include/extras/list.h b/include/extras/list.h
similarity index 100%
rename from kaleid/include/extras/list.h
rename to include/extras/list.h
diff --git a/kaleid/include/extras/locks.h b/include/extras/locks.h
similarity index 100%
rename from kaleid/include/extras/locks.h
rename to include/extras/locks.h
diff --git a/kaleid/include/extras/malloc.h b/include/extras/malloc.h
similarity index 91%
rename from kaleid/include/extras/malloc.h
rename to include/extras/malloc.h
index 6c478c9..9d69f35 100644
--- a/kaleid/include/extras/malloc.h
+++ b/include/extras/malloc.h
@@ -35,7 +35,7 @@ extern "C" {
//------------------------------------------//
-// Flags for KalAllocMemory
+// Flags for KalAllocMemoryEx
enum
{
// Return zeroed-out memory
@@ -51,17 +51,18 @@ enum
enum
{
// Default memory allocation alignment (in bytes)
- // Asking KalAllocMemory for an alignment of 0
+ // Asking KalAllocMemoryEx for an alignment of 0
// will cause it to use this value
M_DEFAULT_ALIGNMENT = alignof(QWORD),
// Minimal memory allocation alignment (in bytes)
- // Asking KalAllocMemory for an nonzero alignment
+ // Asking KalAllocMemoryEx for an nonzero alignment
// lower than this value will cause a EALIGN error
M_MINIMAL_ALIGNMENT = M_DEFAULT_ALIGNMENT
};
-error_t KalAllocMemory(void **ptr, size_t req, int flags, size_t align);
+error_t KalAllocMemoryEx(void **ptr, size_t req, int flags, size_t align);
+error_t KalAllocMemory(void **ptr, size_t req);
error_t KalFreeMemory(void *ptr);
//------------------------------------------//
diff --git a/kaleid/include/extras/prog.h b/include/extras/prog.h
similarity index 100%
rename from kaleid/include/extras/prog.h
rename to include/extras/prog.h
diff --git a/kaleid/include/kalbase.h b/include/kalbase.h
similarity index 100%
rename from kaleid/include/kalbase.h
rename to include/kalbase.h
diff --git a/kaleid/include/kaleid.h b/include/kaleid.h
similarity index 100%
rename from kaleid/include/kaleid.h
rename to include/kaleid.h
diff --git a/kaleid/include/kalext.h b/include/kalext.h
similarity index 100%
rename from kaleid/include/kalext.h
rename to include/kalext.h
diff --git a/kaleid/include/kernel/base.h b/include/kernel/base.h
similarity index 65%
rename from kaleid/include/kernel/base.h
rename to include/kernel/base.h
index 3451936..27b7225 100644
--- a/kaleid/include/kernel/base.h
+++ b/include/kernel/base.h
@@ -39,28 +39,12 @@ typedef struct Lock_t Lock_t;
typedef struct Buffer_t Buffer_t;
typedef struct Thread_t Thread_t;
typedef struct Process_t Process_t;
-typedef struct Terminal_t Terminal_t;
+typedef struct BootInfo_t BootInfo_t;
typedef struct ListHead_t ListHead_t;
typedef struct ListNode_t ListNode_t;
typedef struct Processor_t Processor_t;
-typedef struct BootInfo_t BootInfo_t;
typedef enum ProcState_t ProcState_t;
-typedef enum TermColor_t TermColor_t;
-
-//------------------------------------------//
-// Multiprocessor misc. //
-//------------------------------------------//
-
-#ifndef NCPUS
-#define NCPUS 1
-#endif
-
-// Current CPU number
-#define _KeCurCPU 0
-
-// Process_t structure of current CPU
-//#define KeCurCPU (cpuTable[_KeCurCPU])
//------------------------------------------//
@@ -104,83 +88,18 @@ struct Processor_t
ListHead_t *timeCritProcs;
};
-#define FB_EGA_TEXT 2
-#define FB_INDEXED 0
-#define FB_RGB 1
-#define BINFO_SIZE 4096
-
-struct BootInfo_t
-{
- // The Bootloader infos (GRUB in our case)
- struct {
- ushort valid;
- uint grubFlags; //flags
- uint modulesCount; //mods_count
- void *modulesAddr; //mods_addr
- char *grubName; //boot_loader_name
- void *kernelAddr;
- void *kernelEndAddr;
- } btldr;
-
- // Informations about drives
- struct {
- ushort drvValid;
- ushort bufferValid;
- uint bootDrv; //boot_device
- uint bufferLength; //drives_length
- void *bufferAddr; //drives_addr
- } drives;
-
- // Informations about memory
- struct {
- ushort memValid;
- ushort mapValid;
-
- //BIOS provided low and up memory
- uint lowMemory; //mem_lower
- uint upMemory; //mem_upper
-
- //GRUB provided memory map
- uint mapLength; //mmap_length
- void *mapAddr; //mmap_addr
-
- uint ramSize; //The ram (init by map.c)
- } memory;
-
- // Informations about the video drive
- struct {
- ushort vbeValid;
- ushort fbuValid;
- void *vbeControl; //vbe_control_info
- void *vbeModeInfo; //vbe_mode_info
- ushort vbeMode; //vbe_mode
- ushort vbeInterfaceSeg; //vbe_interface_seg
- ushort vbeInterfaceOff; //vbe_interface_off
- ushort vbeInterfaceLen; //vbe_interface_len
- void *framebufferAddr; //framebuffer_addr
- uint framebufferPitch; //framebuffer_pitch
- uint framebufferWidth; //framebuffer_width
- uint framebufferHeight; //framebuffer_height
- uchar framebufferBpp; //framebuffer_bpp
- uchar framebufferType; //framebuffer_type
- } video;
-
- // Informations about the microcode firmware (BIOS/EFI)
- struct {
- ushort apmValid;
- ushort romValid;
- uint apmTable; //apm_table
- uint romTable; //config_table
- } firmware;
-};
-
//------------------------------------------//
-extern int KeCPUCount;
-extern Processor_t _KeCPUTable[NCPUS];
+#ifndef NCPUS
+#define NCPUS 1
+#endif
+// Current CPU number
+#define _KeCurCPU 0
+
+extern int KeCPUCount;
extern volatile Processor_t *KeCurCPU;
-extern volatile BootInfo_t BtBootTab;
+extern Processor_t _KeCPUTable[NCPUS];
//------------------------------------------//
@@ -197,6 +116,16 @@ extern volatile BootInfo_t BtBootTab;
//------------------------------------------//
+error_t KernLog(const char *, ...);
+
+#ifndef _NO_DEBUG
+void DebugLog(const char *, ...);
+#else
+#define DebugLog(fmt, ...) ((void)0)
+#endif
+
+//------------------------------------------//
+
// Needed by basically everyone
#ifndef _KALEXTRAS_LOCKS_H
#include
diff --git a/include/kernel/boot.h b/include/kernel/boot.h
new file mode 100644
index 0000000..f59f332
--- /dev/null
+++ b/include/kernel/boot.h
@@ -0,0 +1,116 @@
+//----------------------------------------------------------------------------//
+// GNU GPL OS/K //
+// //
+// Desc: Kaleid kernel base include file //
+// //
+// //
+// Copyright © 2018-2019 The OS/K Team //
+// //
+// This file is part of OS/K. //
+// //
+// OS/K is free software: you can redistribute it and/or modify //
+// it under the terms of the GNU General Public License as published by //
+// the Free Software Foundation, either version 3 of the License, or //
+// any later version. //
+// //
+// OS/K is distributed in the hope that it will be useful, //
+// but WITHOUT ANY WARRANTY//without even the implied warranty of //
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
+// GNU General Public License for more details. //
+// //
+// You should have received a copy of the GNU General Public License //
+// along with OS/K. If not, see . //
+//----------------------------------------------------------------------------//
+
+#ifndef _KALKERN_BASE_H
+#include
+#endif
+
+#ifndef _KALKERN_BOOT_H
+#define _KALKERN_BOOT_H
+
+//------------------------------------------//
+
+#define FB_EGA_TEXT 2
+#define FB_INDEXED 0
+#define FB_RGB 1
+#define BINFO_SIZE 4096
+
+struct BootInfo_t
+{
+ // The Bootloader infos
+ struct {
+ ushort valid;
+ uint grubFlags; //flags
+ uint modulesCount; //mods_count
+ void *modulesAddr; //mods_addr
+ char *grubName; //boot_loader_name
+ void *kernelAddr;
+ void *kernelEndAddr;
+ } btldr;
+
+ // Informations about drives
+ struct {
+ ushort drvValid;
+ ushort bufferValid;
+ uint bootDrv; //boot_device
+ uint bufferLength; //drives_length
+ void *bufferAddr; //drives_addr
+ } drives;
+
+ // Informations about memory
+ struct {
+ ushort memValid;
+ ushort mapValid;
+
+ //BIOS provided low and up memory
+ uint lowMemory; //mem_lower
+ uint upMemory; //mem_upper
+
+ //GRUB provided memory map
+ uint mapLength; //mmap_length
+ void *mapAddr; //mmap_addr
+
+ uint ramSize; //The ram (init by map.c)
+ } memory;
+
+ // Informations about the video drive
+ struct {
+ ushort vbeValid;
+ ushort fbuValid;
+ void *vbeControl; //vbe_control_info
+ void *vbeModeInfo; //vbe_mode_info
+ ushort vbeMode; //vbe_mode
+ ushort vbeInterfaceSeg; //vbe_interface_seg
+ ushort vbeInterfaceOff; //vbe_interface_off
+ ushort vbeInterfaceLen; //vbe_interface_len
+ void *framebufferAddr; //framebuffer_addr
+ uint framebufferPitch; //framebuffer_pitch
+ uint framebufferWidth; //framebuffer_width
+ uint framebufferHeight; //framebuffer_height
+ uchar framebufferBpp; //framebuffer_bpp
+ uchar framebufferType; //framebuffer_type
+ } video;
+
+ // Informations about the microcode firmware (BIOS/EFI)
+ struct {
+ ushort apmValid;
+ ushort romValid;
+ uint apmTable; //apm_table
+ uint romTable; //config_table
+ } firmware;
+};
+
+//------------------------------------------//
+
+extern volatile BootInfo_t BtBootTab;
+
+#define BtLoaderInfo (BtBootTab.btldr)
+#define BtDrivesInfo (BtBootTab.drives)
+#define BtMemoryInfo (BtBootTab.memory)
+#define BtVideoInfo (BtBootTab.video)
+#define BtFirmwareInfo (BtBootTab.firmware)
+
+//------------------------------------------//
+
+#endif
diff --git a/kaleid/include/kernel/cpu.h b/include/kernel/cpu.h
similarity index 100%
rename from kaleid/include/kernel/cpu.h
rename to include/kernel/cpu.h
diff --git a/kaleid/include/kernel/heap.h b/include/kernel/heap.h
similarity index 100%
rename from kaleid/include/kernel/heap.h
rename to include/kernel/heap.h
diff --git a/kaleid/include/kernel/iomisc.h b/include/kernel/iomisc.h
similarity index 100%
rename from kaleid/include/kernel/iomisc.h
rename to include/kernel/iomisc.h
diff --git a/kaleid/include/kernel/mboot.h b/include/kernel/mboot.h
similarity index 100%
rename from kaleid/include/kernel/mboot.h
rename to include/kernel/mboot.h
diff --git a/kaleid/include/kernel/mm.h b/include/kernel/mm.h
similarity index 100%
rename from kaleid/include/kernel/mm.h
rename to include/kernel/mm.h
diff --git a/kaleid/include/kernel/panic.h b/include/kernel/panic.h
similarity index 100%
rename from kaleid/include/kernel/panic.h
rename to include/kernel/panic.h
diff --git a/kaleid/include/kernel/proc.h b/include/kernel/proc.h
similarity index 97%
rename from kaleid/include/kernel/proc.h
rename to include/kernel/proc.h
index 6c9f373..a8930e9 100644
--- a/kaleid/include/kernel/proc.h
+++ b/include/kernel/proc.h
@@ -70,9 +70,6 @@ struct Process_t
// Scheduler internals
ListNode_t *schedNode;
-
- // Standard output/debug
- Terminal_t *stdOut, *stdDbg;
};
//------------------------------------------//
diff --git a/kaleid/include/kernel/sched.h b/include/kernel/sched.h
similarity index 100%
rename from kaleid/include/kernel/sched.h
rename to include/kernel/sched.h
diff --git a/kaleid/include/kernel/log.h b/kaleid/include/kernel/log.h
deleted file mode 100644
index fe88a6e..0000000
--- a/kaleid/include/kernel/log.h
+++ /dev/null
@@ -1,40 +0,0 @@
-//----------------------------------------------------------------------------//
-// GNU GPL OS/K //
-// //
-// Desc: KernLog() and DebugLog() //
-// //
-// //
-// Copyright © 2018-2019 The OS/K Team //
-// //
-// This file is part of OS/K. //
-// //
-// OS/K is free software: you can redistribute it and/or modify //
-// it under the terms of the GNU General Public License as published by //
-// the Free Software Foundation, either version 3 of the License, or //
-// any later version. //
-// //
-// OS/K is distributed in the hope that it will be useful, //
-// but WITHOUT ANY WARRANTY//without even the implied warranty of //
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
-// GNU General Public License for more details. //
-// //
-// You should have received a copy of the GNU General Public License //
-// along with OS/K. If not, see . //
-//----------------------------------------------------------------------------//
-
-#ifndef _KALKERN_BASE_H
-#include
-#endif
-
-#ifndef _KALKERN_LOG_H
-#define _KALKERN_LOG_H
-
-error_t KernLog(const char *, ...);
-
-#ifndef _NO_DEBUG
-void DebugLog(const char *, ...);
-#else // _NO_DEBUG
-#define DebugLog(fmt, ...)
-#endif
-
-#endif
diff --git a/kaleid/kernel/init/init.c b/kaleid/kernel/init/init.c
index 9e1bd00..a0e978b 100644
--- a/kaleid/kernel/init/init.c
+++ b/kaleid/kernel/init/init.c
@@ -26,11 +26,9 @@
#include
#include
#include
-#include
-#include
+#include
#include
-
//
// BootInfo_t initialization. It is necessary because grub will potentially be
// wiped since it is below 1MB.... And we must reorganize all that stuff.
@@ -44,69 +42,69 @@ void BtInitBootInfo(multiboot_info_t *mbi)
KalAlwaysAssert(mbi);
//Retrieves the bootloader flags to ensure infos are valid
- BtBootTab.btldr.grubFlags = mbi->flags;
+ BtLoaderInfo.grubFlags = mbi->flags;
- if (BtBootTab.btldr.grubFlags & MULTIBOOT_INFO_BOOT_LOADER_NAME) {
- BtBootTab.btldr.grubName = (char*)(ulong)(mbi->boot_loader_name);
- BtBootTab.btldr.kernelAddr = (void*)&MB_header;
- BtBootTab.btldr.kernelEndAddr = (void*)newKernelEnd;
- BtBootTab.btldr.valid = 1;
+ if (BtLoaderInfo.grubFlags & MULTIBOOT_INFO_BOOT_LOADER_NAME) {
+ BtLoaderInfo.grubName = (char*)(ulong)(mbi->boot_loader_name);
+ BtLoaderInfo.kernelAddr = (void*)&MB_header;
+ BtLoaderInfo.kernelEndAddr = (void*)newKernelEnd;
+ BtLoaderInfo.valid = 1;
}
- if (BtBootTab.btldr.grubFlags & MULTIBOOT_INFO_MODS) {
- BtBootTab.btldr.modulesCount = mbi->mods_count;
- BtBootTab.btldr.modulesAddr = (void*)(ulong)mbi->mods_addr;
+ if (BtLoaderInfo.grubFlags & MULTIBOOT_INFO_MODS) {
+ BtLoaderInfo.modulesCount = mbi->mods_count;
+ BtLoaderInfo.modulesAddr = (void*)(ulong)mbi->mods_addr;
}
//Retrieves the drives informations
- if (BtBootTab.btldr.grubFlags & MULTIBOOT_INFO_DRIVE_INFO) {
+ if (BtLoaderInfo.grubFlags & MULTIBOOT_INFO_DRIVE_INFO) {
BtBootTab.drives.bufferLength = mbi->drives_length;
BtBootTab.drives.bufferAddr = (void*)(ulong)mbi->drives_addr;
BtBootTab.drives.bufferValid = 1;
}
- if (BtBootTab.btldr.grubFlags & MULTIBOOT_INFO_BOOTDEV) {
+ if (BtLoaderInfo.grubFlags & MULTIBOOT_INFO_BOOTDEV) {
BtBootTab.drives.bootDrv = mbi->boot_device;
BtBootTab.drives.drvValid = 1;
}
//Retrieves the memory informations
- if (BtBootTab.btldr.grubFlags & MULTIBOOT_INFO_MEMORY) {
- BtBootTab.memory.lowMemory = mbi->mem_lower;
- BtBootTab.memory.upMemory = mbi->mem_upper;
- BtBootTab.memory.memValid = 1;
+ if (BtLoaderInfo.grubFlags & MULTIBOOT_INFO_MEMORY) {
+ BtMemoryInfo.lowMemory = mbi->mem_lower;
+ BtMemoryInfo.upMemory = mbi->mem_upper;
+ BtMemoryInfo.memValid = 1;
}
- if (BtBootTab.btldr.grubFlags & MULTIBOOT_INFO_MEM_MAP) {
- BtBootTab.memory.mapAddr = (void*)(ulong)mbi->mmap_addr;
- BtBootTab.memory.mapLength = mbi->mmap_length;
- BtBootTab.memory.mapValid = 1;
+ if (BtLoaderInfo.grubFlags & MULTIBOOT_INFO_MEM_MAP) {
+ BtMemoryInfo.mapAddr = (void*)(ulong)mbi->mmap_addr;
+ BtMemoryInfo.mapLength = mbi->mmap_length;
+ BtMemoryInfo.mapValid = 1;
}
// Retrieves video mode informations
- if (BtBootTab.btldr.grubFlags & MULTIBOOT_INFO_VBE_INFO) {
- BtBootTab.video.vbeControl = (void*)(ulong)mbi->vbe_control_info;
- BtBootTab.video.vbeModeInfo = (void*)(ulong)mbi->vbe_mode_info;
- BtBootTab.video.vbeMode = mbi->vbe_mode;
- BtBootTab.video.vbeInterfaceSeg = mbi->vbe_interface_seg;
- BtBootTab.video.vbeInterfaceOff = mbi->vbe_interface_off;
- BtBootTab.video.vbeInterfaceLen = mbi->vbe_interface_len;
- BtBootTab.video.vbeValid = 1;
+ if (BtLoaderInfo.grubFlags & MULTIBOOT_INFO_VBE_INFO) {
+ BtVideoInfo.vbeControl = (void*)(ulong)mbi->vbe_control_info;
+ BtVideoInfo.vbeModeInfo = (void*)(ulong)mbi->vbe_mode_info;
+ BtVideoInfo.vbeMode = mbi->vbe_mode;
+ BtVideoInfo.vbeInterfaceSeg = mbi->vbe_interface_seg;
+ BtVideoInfo.vbeInterfaceOff = mbi->vbe_interface_off;
+ BtVideoInfo.vbeInterfaceLen = mbi->vbe_interface_len;
+ BtVideoInfo.vbeValid = 1;
}
- if (BtBootTab.btldr.grubFlags & MULTIBOOT_INFO_FRAMEBUFFER_INFO) {
- BtBootTab.video.framebufferAddr = (void*)mbi->framebuffer_addr;
- BtBootTab.video.framebufferPitch = mbi->framebuffer_pitch;
- BtBootTab.video.framebufferWidth = mbi->framebuffer_width;
- BtBootTab.video.framebufferHeight= mbi->framebuffer_height;
- BtBootTab.video.framebufferBpp = mbi->framebuffer_bpp;
- BtBootTab.video.framebufferType = mbi->framebuffer_type;
- BtBootTab.video.fbuValid = 1;
+ if (BtLoaderInfo.grubFlags & MULTIBOOT_INFO_FRAMEBUFFER_INFO) {
+ BtVideoInfo.framebufferAddr = (void*)mbi->framebuffer_addr;
+ BtVideoInfo.framebufferPitch = mbi->framebuffer_pitch;
+ BtVideoInfo.framebufferWidth = mbi->framebuffer_width;
+ BtVideoInfo.framebufferHeight= mbi->framebuffer_height;
+ BtVideoInfo.framebufferBpp = mbi->framebuffer_bpp;
+ BtVideoInfo.framebufferType = mbi->framebuffer_type;
+ BtVideoInfo.fbuValid = 1;
}
// Retrieves the firmware infos
- if (BtBootTab.btldr.grubFlags & MULTIBOOT_INFO_CONFIG_TABLE) {
- BtBootTab.firmware.romTable = mbi->config_table;
- BtBootTab.firmware.romValid = 1;
+ if (BtLoaderInfo.grubFlags & MULTIBOOT_INFO_CONFIG_TABLE) {
+ BtFirmwareInfo.romTable = mbi->config_table;
+ BtFirmwareInfo.romValid = 1;
}
- if (BtBootTab.btldr.grubFlags & MULTIBOOT_INFO_APM_TABLE) {
- BtBootTab.firmware.apmTable = mbi->apm_table;
- BtBootTab.firmware.apmValid = 1;
+ if (BtLoaderInfo.grubFlags & MULTIBOOT_INFO_APM_TABLE) {
+ BtFirmwareInfo.apmTable = mbi->apm_table;
+ BtFirmwareInfo.apmValid = 1;
}
}
@@ -118,11 +116,11 @@ void BtInitSanity(uint mbMagic){
if (!(mbMagic == MULTIBOOT_BOOTLOADER_MAGIC))
KeStartPanic("[Init] Magic number %x is incorrect\n", mbMagic);
- tmp = (BtBootTab.btldr.kernelEndAddr
- - BtBootTab.btldr.kernelAddr) / KB;
+ tmp = (BtLoaderInfo.kernelEndAddr
+ - BtLoaderInfo.kernelAddr) / KB;
DebugLog("[Init] Kernel successfully loaded at %p with %x magic\n"
" and it uses %d Kio\n\n",
- BtBootTab.btldr.kernelAddr,
+ BtLoaderInfo.kernelAddr,
mbMagic,tmp);
}
@@ -152,7 +150,7 @@ noreturn void BtStartKern(multiboot_info_t *mbInfo, uint mbMagic)
MmInitHeap();
PsInitSched();
- KeStartPanic("Test Panic %d", 4);
+ KeStartPanic("Test Panic %x", 4);
// End this machine's suffering
KeCrashSystem();
diff --git a/kaleid/kernel/init/table.c b/kaleid/kernel/init/table.c
index 66db3e3..0261a15 100644
--- a/kaleid/kernel/init/table.c
+++ b/kaleid/kernel/init/table.c
@@ -22,7 +22,7 @@
// along with OS/K. If not, see . //
//----------------------------------------------------------------------------//
-#include
+#include
int KeCPUCount = 1;
Processor_t _KeCPUTable[NCPUS] = {0};
diff --git a/kaleid/kernel/io/vga.c b/kaleid/kernel/io/vga.c
index c5bcd92..2500836 100644
--- a/kaleid/kernel/io/vga.c
+++ b/kaleid/kernel/io/vga.c
@@ -22,7 +22,8 @@
// along with OS/K. If not, see . //
//----------------------------------------------------------------------------//
-#include
+#include
+#include
//----------------------------------------------------------//
// Internal functions for VGA terminals //
@@ -41,7 +42,7 @@
//
error_t bvgaflusher(Buffer_t *buf)
{
- ushort *fbp = BtBootTab.video.framebufferAddr;
+ ushort *fbp = BtVideoInfo.framebufferAddr;
const uchar color = 0xf;
uchar *currentLine = buf->wp - buf->lineLen - buf->lastLF;
@@ -54,7 +55,7 @@ error_t bvgaflusher(Buffer_t *buf)
}
const size_t bufSize = buf->nLines * buf->lineLen;
- ushort *fbe = BtBootTab.video.framebufferAddr
+ ushort *fbe = BtVideoInfo.framebufferAddr
+ (bufSize * sizeof(ushort));
if (fbp < fbe) {
@@ -73,8 +74,8 @@ error_t IoInitVGABuffer(void)
static char bvgabuffer[1 * MB];
BStdOut = BOpenLineBuf(bvgabuffer, BS_WRONLY,
- BtBootTab.video.framebufferWidth,
- BtBootTab.video.framebufferHeight,
+ BtVideoInfo.framebufferWidth,
+ BtVideoInfo.framebufferHeight,
8, bvgaflusher);
BStdDbg = BStdOut;
diff --git a/kaleid/kernel/ke/log.c b/kaleid/kernel/ke/log.c
index e590864..0058911 100644
--- a/kaleid/kernel/ke/log.c
+++ b/kaleid/kernel/ke/log.c
@@ -22,7 +22,8 @@
// along with OS/K. If not, see . //
//----------------------------------------------------------------------------//
-#include
+#include
+#include
//
// Prints formatted string on standard output
diff --git a/kaleid/kernel/ke/panic.c b/kaleid/kernel/ke/panic.c
index 04a1ae9..ecc5dd6 100644
--- a/kaleid/kernel/ke/panic.c
+++ b/kaleid/kernel/ke/panic.c
@@ -22,7 +22,7 @@
// along with OS/K. If not, see . //
//----------------------------------------------------------------------------//
-#include
+#include
#include
#include
#include
diff --git a/kaleid/kernel/mm/heap.c b/kaleid/kernel/mm/heap.c
index d79c8dd..8f44142 100644
--- a/kaleid/kernel/mm/heap.c
+++ b/kaleid/kernel/mm/heap.c
@@ -23,7 +23,6 @@
//----------------------------------------------------------------------------//
#include
-#include
#include
// Least address out of the heap
diff --git a/kaleid/kernel/mm/malloc.c b/kaleid/kernel/mm/malloc.c
index 1b7de5c..c6b5730 100644
--- a/kaleid/kernel/mm/malloc.c
+++ b/kaleid/kernel/mm/malloc.c
@@ -25,7 +25,12 @@
#include
#include
-error_t KalAllocMemory(void **ptr, size_t req, int flags, size_t align)
+error_t KalAllocMemory(void **ptr, size_t req)
+{
+ return KalAllocMemoryEx(ptr, req, 0, 0);
+}
+
+error_t KalAllocMemoryEx(void **ptr, size_t req, int flags, size_t align)
{
error_t rc;
size_t brk;
diff --git a/kaleid/kernel/mm/map.c b/kaleid/kernel/mm/map.c
index 9c96699..a833ccb 100644
--- a/kaleid/kernel/mm/map.c
+++ b/kaleid/kernel/mm/map.c
@@ -23,7 +23,7 @@
//----------------------------------------------------------------------------//
#include
-#include
+#include
#include
// Initializes globally the memory map
@@ -52,19 +52,19 @@ static error_t InitMemoryMap(void)
uint i = 0;
// sanity checks
- if (!BtBootTab.memory.memValid && BtBootTab.memory.mapValid)
+ if (!BtMemoryInfo.memValid && BtMemoryInfo.mapValid)
return ENXIO;
- if ((BtBootTab.memory.upMemory / (MB/KB)) <= MINIMUM_RAM_SIZE)
+ if ((BtMemoryInfo.upMemory / (MB/KB)) <= MINIMUM_RAM_SIZE)
return ENOMEM;
// Ok then we can work ------------------------------------------------------ //
// the memory map provided by GRUB via the BIOS
- currentEntry = (multiboot_memory_map_t*)BtBootTab.memory.mapAddr;
+ currentEntry = (multiboot_memory_map_t*)BtMemoryInfo.mapAddr;
// End address of the map
mapEnd = (multiboot_memory_map_t*)
- ((ulong)currentEntry + (ulong)BtBootTab.memory.mapLength);
+ ((ulong)currentEntry + (ulong)BtMemoryInfo.mapLength);
// fill the map
while (currentEntry < mapEnd) {
@@ -112,7 +112,7 @@ size_t MmGetAvailZoneSize(void *start) {
uint i;
// Because the kernel is the kernel
- if (start < BtBootTab.btldr.kernelEndAddr)
+ if (start < BtLoaderInfo.kernelEndAddr)
return 0;
// Search the zone where the start address is
@@ -137,8 +137,8 @@ void *MmGetFirstAvailZone(void *start) {
void *current = 0;
// Because the kernel is the kernel
- if ((ulong)start < (ulong)BtBootTab.btldr.kernelEndAddr) {
- return MmGetFirstAvailZone(BtBootTab.btldr.kernelEndAddr);
+ if ((ulong)start < (ulong)BtLoaderInfo.kernelEndAddr) {
+ return MmGetFirstAvailZone(BtLoaderInfo.kernelEndAddr);
}
// Search the zone where the start address is
diff --git a/kaleid/kernel/ps/sched.c b/kaleid/kernel/ps/sched.c
index 31c9781..4fdf459 100644
--- a/kaleid/kernel/ps/sched.c
+++ b/kaleid/kernel/ps/sched.c
@@ -25,23 +25,22 @@
#include
#include
#include
-#include
//
// For test purpose only
//
int procslen = 10;
Process_t procs[] = {
- { 0, 0, 0, 12, 12, STATE_RUNNABLE, DEF_PROC_TSLICE, DEF_PROC_TSLICE, NULL, NULL, NULL },
- { 1, 2, 2, 16, 16, STATE_RUNNABLE, DEF_PROC_TSLICE, DEF_PROC_TSLICE, NULL, NULL, NULL },
- { 2, 3, 3, 31, 31, STATE_RUNNABLE, DEF_PROC_TSLICE, DEF_PROC_TSLICE, NULL, NULL, NULL },
- { 3, 2, 2, 1, 1, STATE_RUNNABLE, DEF_PROC_TSLICE, DEF_PROC_TSLICE, NULL, NULL, NULL },
- { 4, 3, 3, 5, 5, STATE_RUNNABLE, DEF_PROC_TSLICE, DEF_PROC_TSLICE, NULL, NULL, NULL },
- { 5, 0, 0, 30, 30, STATE_RUNNABLE, DEF_PROC_TSLICE, DEF_PROC_TSLICE, NULL, NULL, NULL },
- { 6, 1, 1, 19, 19, STATE_RUNNABLE, DEF_PROC_TSLICE, DEF_PROC_TSLICE, NULL, NULL, NULL },
- { 7, 1, 1, 0, 0, STATE_RUNNABLE, DEF_PROC_TSLICE, DEF_PROC_TSLICE, NULL, NULL, NULL },
- { 8, 3, 3, 12, 12, STATE_RUNNABLE, DEF_PROC_TSLICE, DEF_PROC_TSLICE, NULL, NULL, NULL },
- { 9, 2, 2, 21, 21, STATE_RUNNABLE, DEF_PROC_TSLICE, DEF_PROC_TSLICE, NULL, NULL, NULL },
+ { 0, 0, 0, 12, 12, STATE_RUNNABLE, DEF_PROC_TSLICE, DEF_PROC_TSLICE, NULL },
+ { 1, 2, 2, 16, 16, STATE_RUNNABLE, DEF_PROC_TSLICE, DEF_PROC_TSLICE, NULL },
+ { 2, 3, 3, 31, 31, STATE_RUNNABLE, DEF_PROC_TSLICE, DEF_PROC_TSLICE, NULL },
+ { 3, 2, 2, 1, 1, STATE_RUNNABLE, DEF_PROC_TSLICE, DEF_PROC_TSLICE, NULL },
+ { 4, 3, 3, 5, 5, STATE_RUNNABLE, DEF_PROC_TSLICE, DEF_PROC_TSLICE, NULL },
+ { 5, 0, 0, 30, 30, STATE_RUNNABLE, DEF_PROC_TSLICE, DEF_PROC_TSLICE, NULL },
+ { 6, 1, 1, 19, 19, STATE_RUNNABLE, DEF_PROC_TSLICE, DEF_PROC_TSLICE, NULL },
+ { 7, 1, 1, 0, 0, STATE_RUNNABLE, DEF_PROC_TSLICE, DEF_PROC_TSLICE, NULL },
+ { 8, 3, 3, 12, 12, STATE_RUNNABLE, DEF_PROC_TSLICE, DEF_PROC_TSLICE, NULL },
+ { 9, 2, 2, 21, 21, STATE_RUNNABLE, DEF_PROC_TSLICE, DEF_PROC_TSLICE, NULL },
};
//------------------------------------------//
diff --git a/kaleid/kernel/buf/bprint.c b/kaleid/libbuf/bprint.c
similarity index 99%
rename from kaleid/kernel/buf/bprint.c
rename to kaleid/libbuf/bprint.c
index 099a968..aeab335 100644
--- a/kaleid/kernel/buf/bprint.c
+++ b/kaleid/libbuf/bprint.c
@@ -22,7 +22,8 @@
// along with OS/K. If not, see . //
//----------------------------------------------------------------------------//
-#include
+#include
+#include
error_t bputc(Buffer_t *buf, uchar ch);
error_t vbprintf(Buffer_t *buf, const char *fmt, va_list ap);
@@ -352,7 +353,7 @@ error_t vbprintf(Buffer_t *buf, const char *fmt, va_list ap)
if (*s == '-') { rc = bputc(buf, '-'); s++, len--; }
else if (sgn && plus) rc = bputc(buf, '+');
else if (sgn && space) rc = bputc(buf, ' ');
- else bprinthash(buf, base, cap);
+ else if (hash) bprinthash(buf, base, cap);
// Deal with padding by zeroes
// The 'minus' flag makes no sense with the 'zero' one
diff --git a/kaleid/kernel/buf/bput.c b/kaleid/libbuf/bput.c
similarity index 99%
rename from kaleid/kernel/buf/bput.c
rename to kaleid/libbuf/bput.c
index 6550af4..9e685df 100644
--- a/kaleid/kernel/buf/bput.c
+++ b/kaleid/libbuf/bput.c
@@ -22,7 +22,8 @@
// along with OS/K. If not, see . //
//----------------------------------------------------------------------------//
-#include
+#include
+#include
error_t bputc(Buffer_t *buf, uchar ch);
diff --git a/kaleid/kernel/buf/buf.c b/kaleid/libbuf/buf.c
similarity index 96%
rename from kaleid/kernel/buf/buf.c
rename to kaleid/libbuf/buf.c
index 63b6c3b..858c129 100644
--- a/kaleid/kernel/buf/buf.c
+++ b/kaleid/libbuf/buf.c
@@ -22,7 +22,8 @@
// along with OS/K. If not, see . //
//----------------------------------------------------------------------------//
-#include
+#include
+#include
#include
Buffer_t *BStdOut, *BStdDbg;
@@ -57,7 +58,7 @@ error_t BCloseBuf(Buffer_t *buf)
}
if (buf->flags & BF_ALLOC) {
- free(buf->buf);
+ KalFreeMemory(buf->buf);
}
buf->buf = buf->rp = buf->wp = NULL;
@@ -110,7 +111,7 @@ Buffer_t *BOpenLineBuf(char *source, int mode,
buf->size = lineLen * nLines * (pbCount + 1);
if (source == NULL) {
- buf->buf = calloc(buf->size, 1);
+ KalAllocMemoryEx((void **)&buf->buf, buf->size, M_ZEROED, 0);
} else {
buf->buf = (uchar *)source;
}
diff --git a/kaleid/crtlib/atoi.c b/kaleid/libc/atoi.c
similarity index 100%
rename from kaleid/crtlib/atoi.c
rename to kaleid/libc/atoi.c
diff --git a/kaleid/crtlib/ctype.c b/kaleid/libc/ctype.c
similarity index 100%
rename from kaleid/crtlib/ctype.c
rename to kaleid/libc/ctype.c
diff --git a/kaleid/crtlib/itoa.c b/kaleid/libc/itoa.c
similarity index 100%
rename from kaleid/crtlib/itoa.c
rename to kaleid/libc/itoa.c
diff --git a/kaleid/crtlib/mem.c b/kaleid/libc/mem.c
similarity index 97%
rename from kaleid/crtlib/mem.c
rename to kaleid/libc/mem.c
index cd158e9..470afd3 100644
--- a/kaleid/crtlib/mem.c
+++ b/kaleid/libc/mem.c
@@ -36,7 +36,7 @@ void *malloc(size_t n)
void *ptr;
error_t rc;
- rc = KalAllocMemory(&ptr, n, 0, 0);
+ rc = KalAllocMemory(&ptr, n);
if (rc > 0) seterrno(rc);
return ptr;
@@ -44,9 +44,13 @@ void *malloc(size_t n)
void *calloc(size_t n, size_t m)
{
- char *mem = malloc(n * m);
- memzero(mem, n * m);
- return mem;
+ void *ptr;
+ error_t rc;
+
+ rc = KalAllocMemoryEx(&ptr, n * m, M_ZEROED, 0);
+ if (rc > 0) seterrno(rc);
+
+ return ptr;
}
void free(void *ptr)
diff --git a/kaleid/crtlib/rand.c b/kaleid/libc/rand.c
similarity index 100%
rename from kaleid/crtlib/rand.c
rename to kaleid/libc/rand.c
diff --git a/kaleid/crtlib/sprintf.c b/kaleid/libc/sprintf.c
similarity index 96%
rename from kaleid/crtlib/sprintf.c
rename to kaleid/libc/sprintf.c
index be93623..f7f3882 100644
--- a/kaleid/crtlib/sprintf.c
+++ b/kaleid/libc/sprintf.c
@@ -31,12 +31,6 @@
//
// Format str according to fmt using ellipsed arguments
//
-// Standard is dumb so we won't follow it:
-// 1) we return a size_t instead of int
-// 2) for (v)snprintf we return the number of characters written
-// instead of the number of characters that would have been written
-// given large enough n
-//
size_t sprintf(char *str, const char *fmt, ...)
{
int ret;
diff --git a/kaleid/crtlib/status.c b/kaleid/libc/status.c
similarity index 100%
rename from kaleid/crtlib/status.c
rename to kaleid/libc/status.c
diff --git a/kaleid/crtlib/string.c b/kaleid/libc/string.c
similarity index 100%
rename from kaleid/crtlib/string.c
rename to kaleid/libc/string.c
diff --git a/kaleid/crtlib/strtol.c b/kaleid/libc/strtol.c
similarity index 100%
rename from kaleid/crtlib/strtol.c
rename to kaleid/libc/strtol.c