diff --git a/docs/DEVELOPERS.md b/docs/DEVELOPERS.md index 999ce5d..18f551b 100644 --- a/docs/DEVELOPERS.md +++ b/docs/DEVELOPERS.md @@ -59,7 +59,7 @@ void program_myprogram(int argc, char* argv[]) ``` Then, code your stuff freely. The entry point function will basically be the "main" function of your program, like in a regular C file. You can make your own header file too, for example `myprogram.h`. -Keep in mind that the standard C library is not available here, so you'll have to use functions from the BlankOS C library, which is located in `src/libc`. Also feel free to look at the header files in `src/drivers` and `src/kernel`, there might be interesting functions in there too (managing input/output devices, the timer, etc..) +Keep in mind that the standard C library is not available here, so you'll have to use functions from the BlankOS C library, which is located in `src/libk`. Also feel free to look at the header files in `src/drivers` and `src/kernel`, there might be interesting functions in there too (managing input/output devices, the timer, etc..) ### Step 2 - Registering the program diff --git a/src/drivers/framebuffer.c b/drivers/framebuffer.c similarity index 100% rename from src/drivers/framebuffer.c rename to drivers/framebuffer.c diff --git a/src/drivers/framebuffer.h b/drivers/framebuffer.h similarity index 100% rename from src/drivers/framebuffer.h rename to drivers/framebuffer.h diff --git a/src/drivers/serial.c b/drivers/serial.c similarity index 99% rename from src/drivers/serial.c rename to drivers/serial.c index ffb6cc6..f2b8ed9 100644 --- a/src/drivers/serial.c +++ b/drivers/serial.c @@ -5,7 +5,7 @@ #include "../kernel/io.h" #include "serial.h" -#include "../libc/stdio.h" +#include "../libk/stdio.h" int init_serial() { diff --git a/src/drivers/serial.h b/drivers/serial.h similarity index 100% rename from src/drivers/serial.h rename to drivers/serial.h diff --git a/src/drivers/timer.c b/drivers/timer.c similarity index 96% rename from src/drivers/timer.c rename to drivers/timer.c index b3b36c1..afb3d0a 100644 --- a/src/drivers/timer.c +++ b/drivers/timer.c @@ -4,7 +4,7 @@ // https://github.com/xamidev/blankos #include "../kernel/system.h" -#include "../libc/stdio.h" +#include "../libk/stdio.h" volatile unsigned long global_ticks = 0; diff --git a/src/initrd/hello.txt b/initrd/hello.txt similarity index 100% rename from src/initrd/hello.txt rename to initrd/hello.txt diff --git a/src/kernel/gdt.c b/kernel/gdt.c similarity index 97% rename from src/kernel/gdt.c rename to kernel/gdt.c index bb9fddd..bd579ee 100644 --- a/src/kernel/gdt.c +++ b/kernel/gdt.c @@ -4,7 +4,7 @@ // https://github.com/xamidev/blankos #include "gdt.h" -#include "../libc/stdio.h" +#include "../libk/stdio.h" struct gdt_entry gdt[3]; struct gdt_ptr gp; diff --git a/src/kernel/gdt.h b/kernel/gdt.h similarity index 100% rename from src/kernel/gdt.h rename to kernel/gdt.h diff --git a/src/kernel/idt.c b/kernel/idt.c similarity index 96% rename from src/kernel/idt.c rename to kernel/idt.c index e5f6f4b..6e3f70b 100644 --- a/src/kernel/idt.c +++ b/kernel/idt.c @@ -5,7 +5,7 @@ #include "idt.h" #include "system.h" -#include "../libc/stdio.h" +#include "../libk/stdio.h" struct idt_entry idt[256]; struct idt_ptr idtp; diff --git a/src/kernel/idt.h b/kernel/idt.h similarity index 100% rename from src/kernel/idt.h rename to kernel/idt.h diff --git a/src/kernel/initrd.c b/kernel/initrd.c similarity index 99% rename from src/kernel/initrd.c rename to kernel/initrd.c index 9aa36bc..6b99686 100644 --- a/src/kernel/initrd.c +++ b/kernel/initrd.c @@ -3,9 +3,9 @@ // Licensed under the Unlicense. See the repo below. // https://github.com/xamidev/blankos -#include "../libc/stdio.h" +#include "../libk/stdio.h" #include -#include "../libc/string.h" +#include "../libk/string.h" #include "initrd.h" #include "system.h" #include "kheap.h" diff --git a/src/kernel/initrd.h b/kernel/initrd.h similarity index 100% rename from src/kernel/initrd.h rename to kernel/initrd.h diff --git a/src/kernel/io.h b/kernel/io.h similarity index 100% rename from src/kernel/io.h rename to kernel/io.h diff --git a/src/kernel/io.s b/kernel/io.s similarity index 100% rename from src/kernel/io.s rename to kernel/io.s diff --git a/src/kernel/irq.c b/kernel/irq.c similarity index 98% rename from src/kernel/irq.c rename to kernel/irq.c index 05f6f6f..863f6fe 100644 --- a/src/kernel/irq.c +++ b/kernel/irq.c @@ -6,7 +6,7 @@ #include "system.h" #include "io.h" #include "idt.h" -#include "../libc/stdio.h" +#include "../libk/stdio.h" extern void irq0(); extern void irq1(); diff --git a/src/kernel/isr.c b/kernel/isr.c similarity index 99% rename from src/kernel/isr.c rename to kernel/isr.c index 1886ff7..e89ac06 100644 --- a/src/kernel/isr.c +++ b/kernel/isr.c @@ -4,7 +4,7 @@ // https://github.com/xamidev/blankos #include "system.h" -#include "../libc/stdio.h" +#include "../libk/stdio.h" #include "idt.h" extern void isr0(); diff --git a/src/kernel/kheap.c b/kernel/kheap.c similarity index 98% rename from src/kernel/kheap.c rename to kernel/kheap.c index e99bdbe..5f146f3 100644 --- a/src/kernel/kheap.c +++ b/kernel/kheap.c @@ -6,7 +6,7 @@ #include "kheap.h" #include #include "system.h" -#include "../libc/stdio.h" +#include "../libk/stdio.h" // Free list allocator diff --git a/src/kernel/kheap.h b/kernel/kheap.h similarity index 100% rename from src/kernel/kheap.h rename to kernel/kheap.h diff --git a/src/kernel/kmain.c b/kernel/kmain.c similarity index 99% rename from src/kernel/kmain.c rename to kernel/kmain.c index 64485de..12a5e9d 100644 --- a/src/kernel/kmain.c +++ b/kernel/kmain.c @@ -3,7 +3,7 @@ // Licensed under the Unlicense. See the repo below. // https://github.com/xamidev/blankos -#include "../libc/stdio.h" +#include "../libk/stdio.h" #include "../drivers/serial.h" #include "gdt.h" #include "idt.h" diff --git a/src/kernel/kmain.h b/kernel/kmain.h similarity index 100% rename from src/kernel/kmain.h rename to kernel/kmain.h diff --git a/src/kernel/loader.s b/kernel/loader.s similarity index 100% rename from src/kernel/loader.s rename to kernel/loader.s diff --git a/src/kernel/multiboot2.h b/kernel/multiboot2.h similarity index 100% rename from src/kernel/multiboot2.h rename to kernel/multiboot2.h diff --git a/src/kernel/system.c b/kernel/system.c similarity index 100% rename from src/kernel/system.c rename to kernel/system.c diff --git a/src/kernel/system.h b/kernel/system.h similarity index 100% rename from src/kernel/system.h rename to kernel/system.h diff --git a/src/libc/ctype.c b/libk/ctype.c similarity index 88% rename from src/libc/ctype.c rename to libk/ctype.c index abf9ce4..9da7f7c 100644 --- a/src/libc/ctype.c +++ b/libk/ctype.c @@ -1,4 +1,4 @@ -// Ctype implementation for blankos/libc +// Ctype implementation for blankos/libk // Author: xamidev // Licensed under the Unlicense. See the repo below. // https://github.com/xamidev/blankos diff --git a/src/libc/ctype.h b/libk/ctype.h similarity index 81% rename from src/libc/ctype.h rename to libk/ctype.h index 810e4fb..46aebd7 100644 --- a/src/libc/ctype.h +++ b/libk/ctype.h @@ -1,4 +1,4 @@ -// Ctype implementation for blankos/libc header +// Ctype implementation for blankos/libk header // Author: xamidev // Licensed under the Unlicense. See the repo below. // https://github.com/xamidev/blankos diff --git a/src/libc/stdio.c b/libk/stdio.c similarity index 99% rename from src/libc/stdio.c rename to libk/stdio.c index bf9428a..c1c32f5 100644 --- a/src/libc/stdio.c +++ b/libk/stdio.c @@ -1,4 +1,4 @@ -// Standard input/output implementation for blankos/libc +// Standard input/output implementation for blankos/libk // Author: xamidev // Licensed under the Unlicense. See the repo below. // https://github.com/xamidev/blankos diff --git a/src/libc/stdio.h b/libk/stdio.h similarity index 97% rename from src/libc/stdio.h rename to libk/stdio.h index d18c3b0..73c5adf 100644 --- a/src/libc/stdio.h +++ b/libk/stdio.h @@ -1,4 +1,4 @@ -// Standard input/output implementation for blankos/libc header +// Standard input/output implementation for blankos/libk header // Author: xamidev // Licensed under the Unlicense. See the repo below. // https://github.com/xamidev/blankos diff --git a/src/libc/string.c b/libk/string.c similarity index 96% rename from src/libc/string.c rename to libk/string.c index fdff71a..e21978d 100644 --- a/src/libc/string.c +++ b/libk/string.c @@ -1,4 +1,4 @@ -// String operations implementation for blankos/libc +// String operations implementation for blankos/libk // Author: xamidev // Licensed under the Unlicense. See the repo below. // https://github.com/xamidev/blankos diff --git a/src/libc/string.h b/libk/string.h similarity index 89% rename from src/libc/string.h rename to libk/string.h index f5a77fc..1fa7afb 100644 --- a/src/libc/string.h +++ b/libk/string.h @@ -1,4 +1,4 @@ -// String operations implementation for blankos/libc header +// String operations implementation for blankos/libk header // Author: xamidev // Licensed under the Unlicense. See the repo below. // https://github.com/xamidev/blankos diff --git a/makefile b/makefile index d703321..bcd144f 100644 --- a/makefile +++ b/makefile @@ -1,23 +1,22 @@ CC = i386-elf-7.5.0-Linux-x86_64/bin/i386-elf-gcc -CFLAGS = -ffreestanding -g -Wall -Wextra -mno-sse -mno-mmx -mno-avx -march=i386 -c -I src/ +CFLAGS = -ffreestanding -g -Wall -Wextra -mno-sse -mno-mmx -mno-avx -march=i386 -c -I . LD = ld LDFLAGS = -T link.ld -melf_i386 AS = nasm ASFLAGS = -f elf AR = i386-elf-7.5.0-Linux-x86_64/bin/i386-elf-ar -SRC_DIR = src -KERNEL_DIR = $(SRC_DIR)/kernel -LIBC_DIR = $(SRC_DIR)/libc -DRIVERS_DIR = $(SRC_DIR)/drivers +KERNEL_DIR = kernel +libk_DIR = libk +DRIVERS_DIR = drivers INCLUDE_DIR = include FONTS_DIR = $(INCLUDE_DIR)/fonts OBJ_DIR = build -C_SOURCES = $(wildcard $(KERNEL_DIR)/*.c) $(wildcard $(LIBC_DIR)/*.c) $(wildcard $(DRIVERS_DIR)/*.c) -ASM_SOURCES = $(wildcard $(KERNEL_DIR)/*.s) $(wildcard $(LIBC_DIR)/*.s) $(wildcard $(DRIVERS_DIR)/*.s) +C_SOURCES = $(wildcard $(KERNEL_DIR)/*.c) $(wildcard $(libk_DIR)/*.c) $(wildcard $(DRIVERS_DIR)/*.c) +ASM_SOURCES = $(wildcard $(KERNEL_DIR)/*.s) $(wildcard $(libk_DIR)/*.s) $(wildcard $(DRIVERS_DIR)/*.s) -OBJECTS = $(patsubst $(SRC_DIR)/%, $(OBJ_DIR)/%, $(C_SOURCES:.c=.o) $(ASM_SOURCES:.s=.o)) +OBJECTS = $(patsubst %, $(OBJ_DIR)/%, $(C_SOURCES:.c=.o) $(ASM_SOURCES:.s=.o)) TOOLCHAIN_SRC = https://newos.org/toolchains/i386-elf-7.5.0-Linux-x86_64.tar.xz TOOLCHAIN_FILE = i386-elf-7.5.0-Linux-x86_64.tar.xz @@ -29,15 +28,15 @@ all: $(OBJ_DIR) kernel.elf $(OBJ_DIR): mkdir -p $(OBJ_DIR) - mkdir -p $(OBJ_DIR)/kernel $(OBJ_DIR)/libc $(OBJ_DIR)/drivers $(OBJ_DIR)/fonts $(OBJ_DIR)/programs + mkdir -p $(OBJ_DIR)/kernel $(OBJ_DIR)/libk $(OBJ_DIR)/drivers $(OBJ_DIR)/fonts $(OBJ_DIR)/programs kernel.elf: $(OBJECTS) $(FONT_OBJ) $(LD) $(LDFLAGS) $(OBJECTS) $(FONT_OBJ) -o kernel.elf -$(OBJ_DIR)/%.o: $(SRC_DIR)/%.c +$(OBJ_DIR)/%.o: %.c $(CC) $(CFLAGS) $< -o $@ -$(OBJ_DIR)/%.o: $(SRC_DIR)/%.s +$(OBJ_DIR)/%.o: %.s $(AS) $(ASFLAGS) $< -o $@ $(FONT_OBJ): $(FONT_SRC) | $(OBJ_DIR)/fonts @@ -57,7 +56,7 @@ iso: kernel.elf initrd initrd: mkdir -p iso/boot/grub - tar -cf $(OBJ_DIR)/initrd.tar -C $(SRC_DIR)/initrd . + tar -cf $(OBJ_DIR)/initrd.tar -C initrd . cp $(OBJ_DIR)/initrd.tar iso/boot run: iso @@ -67,5 +66,4 @@ debug: ./debug.sh clean: - rm -rf $(OBJ_DIR) kernel.elf blankos.iso $(TOOLCHAIN_FILE) $(SRC_DIR)/initrd/*.bin - + rm -rf $(OBJ_DIR) kernel.elf blankos.iso $(TOOLCHAIN_FILE) initrd/*.bin