From ed84017353c6fc9421b223ff6ec62f8d881d8098 Mon Sep 17 00:00:00 2001 From: Aleksa Vučković Date: Mon, 17 Jan 2022 22:00:14 +0100 Subject: Fixing $(WARNING)s & explicitly declaring function prototypes --- src/include/asm.h | 6 +++--- src/include/heap.h | 11 ---------- src/include/irq.h | 39 ----------------------------------- src/include/source/gdt.h | 25 ++++++++++++++++++++++ src/include/source/heap.h | 30 +++++++++++++++++++++++++++ src/include/source/idt.h | 36 ++++++++++++++++++++++++++++++++ src/include/source/irq.h | 39 +++++++++++++++++++++++++++++++++++ src/include/source/irq_handler.h | 37 +++++++++++++++++++++++++++++++++ src/include/source/kernel.h | 6 ++++++ src/include/source/keyboard.h | 15 ++++++++++++++ src/include/source/keymap.h | 9 ++++++++ src/include/source/paging.h | 10 +++++++++ src/include/source/stack_protector.h | 6 ++++++ src/include/source/stdio.h | 6 ++++++ src/include/source/string.h | 17 +++++++++++++++ src/include/source/timer.h | 9 ++++++++ src/include/source/tty.h | 19 +++++++++++++++++ src/include/source/vga.h | 40 ++++++++++++++++++++++++++++++++++++ src/include/stdio.h | 2 -- src/include/string.h | 11 ---------- src/include/types.h | 4 ++-- src/include/vga.h | 29 -------------------------- 22 files changed, 309 insertions(+), 97 deletions(-) delete mode 100644 src/include/heap.h delete mode 100644 src/include/irq.h create mode 100644 src/include/source/gdt.h create mode 100644 src/include/source/heap.h create mode 100644 src/include/source/idt.h create mode 100644 src/include/source/irq.h create mode 100644 src/include/source/irq_handler.h create mode 100644 src/include/source/kernel.h create mode 100644 src/include/source/keyboard.h create mode 100644 src/include/source/keymap.h create mode 100644 src/include/source/paging.h create mode 100644 src/include/source/stack_protector.h create mode 100644 src/include/source/stdio.h create mode 100644 src/include/source/string.h create mode 100644 src/include/source/timer.h create mode 100644 src/include/source/tty.h create mode 100644 src/include/source/vga.h delete mode 100644 src/include/vga.h (limited to 'src/include') diff --git a/src/include/asm.h b/src/include/asm.h index 9f2a9e6..e57c35b 100644 --- a/src/include/asm.h +++ b/src/include/asm.h @@ -1,9 +1,9 @@ -#ifndef ASM_H -#define ASM_H +#ifndef SOURCE_ASM_H +#define SOURCE_ASM_H #include extern uint8_t ioport_in(uint8_t port); -extern void ioport_out(uint8_t port, char data); +extern void ioport_out(uint8_t port, int data); #endif diff --git a/src/include/heap.h b/src/include/heap.h deleted file mode 100644 index fa32f26..0000000 --- a/src/include/heap.h +++ /dev/null @@ -1,11 +0,0 @@ -#ifndef HEAP_H -#define HEAP_H - -#include - -void kheapinit(); -int kheapaddblock(uintptr_t addr,uint32_t size,uint32_t bsize); -void *kmalloc(uint32_t size); -void kfree(void *ptr); - -#endif diff --git a/src/include/irq.h b/src/include/irq.h deleted file mode 100644 index 58b3cd3..0000000 --- a/src/include/irq.h +++ /dev/null @@ -1,39 +0,0 @@ -#ifndef IRQ_H -#define IRQ_H - -extern void irq0(); -extern void irq1(); -extern void irq2(); -extern void irq3(); -extern void irq4(); -extern void irq5(); -extern void irq6(); -extern void irq7(); -extern void irq8(); -extern void irq9(); -extern void irq10(); -extern void irq11(); -extern void irq12(); -extern void irq13(); -extern void irq14(); -extern void irq15(); -extern void irq16(); -extern void irq17(); -extern void irq18(); -extern void irq19(); -extern void irq20(); -extern void irq21(); -extern void irq22(); -extern void irq23(); -extern void irq24(); -extern void irq25(); -extern void irq26(); -extern void irq27(); -extern void irq28(); -extern void irq29(); -extern void irq30(); -extern void irq31(); -extern void timer_irq(); -extern void keyboard_irq(); - -#endif diff --git a/src/include/source/gdt.h b/src/include/source/gdt.h new file mode 100644 index 0000000..7ed587c --- /dev/null +++ b/src/include/source/gdt.h @@ -0,0 +1,25 @@ +#ifndef SOURCE_GDT_H +#define SOURCE_GDT_H + +#include + +struct gdt_entry +{ + uint16_t limit; + uint16_t base1; + uint8_t base2; + uint8_t access; + uint8_t limit_flags; + uint8_t base3; +} __attribute__((packed)); + +struct gdt_pointer +{ + uint16_t size; + uint32_t offset; +} __attribute__((packed)); + +void init_gdt_entry(size_t num, uint16_t limit, uint32_t base, uint8_t access, uint8_t limit_flags); +void init_gdt_table(void); + +#endif diff --git a/src/include/source/heap.h b/src/include/source/heap.h new file mode 100644 index 0000000..15cba98 --- /dev/null +++ b/src/include/source/heap.h @@ -0,0 +1,30 @@ +#ifndef SOURCE_HEAP_H +#define SOURCE_HEAP_H + +#include + +typedef struct _KHEAPBLOCKBM { + struct _KHEAPBLOCKBM *next; + uint32_t size; + uint32_t used; + uint32_t bsize; + uint32_t lfb; +} KHEAPBLOCKBM; + +typedef struct _KHEAPBM { + KHEAPBLOCKBM *fblock; +} KHEAPBM; + +extern KHEAPBM kheap; + +void k_heapBMInit(KHEAPBM *heap); +int k_heapBMAddBlock(KHEAPBM *heap, uintptr_t addr, uint32_t size, uint32_t bsize); +void *k_heapBMAlloc(KHEAPBM *heap, uint32_t size); +void k_heapBMFree(KHEAPBM *heap, void *ptr); + +void kheapinit(void); +int kheapaddblock(uintptr_t addr,uint32_t size,uint32_t bsize); +void *kmalloc(uint32_t size); +void kfree(void *ptr); + +#endif diff --git a/src/include/source/idt.h b/src/include/source/idt.h new file mode 100644 index 0000000..b150d40 --- /dev/null +++ b/src/include/source/idt.h @@ -0,0 +1,36 @@ +#ifndef SOURCE_IDT_H +#define SOURCE_IDT_H + +#include + +#define INTERRUPT_GATE_32 0x8E + +#define KERNEL_CODE 0x08 +#define KERNEL_DATA 0x10 + +#define PIC1_COMMAND_PORT 0x20 +#define PIC1_DATA_PORT 0x21 +#define PIC2_COMMAND_PORT 0xA0 +#define PIC2_DATA_PORT 0xA1 + +struct idt_entry +{ + uint16_t offset1; + uint16_t selector; + uint8_t zero; + uint8_t type_attr; + uint16_t offset2; +} __attribute__((packed)); + +struct idt_pointer +{ + uint16_t size; + uint32_t offset; +} __attribute__((packed)); + +void init_idt_entry(size_t num, uint32_t offset, uint16_t selector, uint8_t type_attr); +void add_idt_entry(size_t num,uint32_t offset); +void init_pic(void); +void init_idt_table(void); + +#endif diff --git a/src/include/source/irq.h b/src/include/source/irq.h new file mode 100644 index 0000000..febf3e1 --- /dev/null +++ b/src/include/source/irq.h @@ -0,0 +1,39 @@ +#ifndef SOURCE_IRQ_H +#define SOURCE_IRQ_H + +extern void irq0(void); +extern void irq1(void); +extern void irq2(void); +extern void irq3(void); +extern void irq4(void); +extern void irq5(void); +extern void irq6(void); +extern void irq7(void); +extern void irq8(void); +extern void irq9(void); +extern void irq10(void); +extern void irq11(void); +extern void irq12(void); +extern void irq13(void); +extern void irq14(void); +extern void irq15(void); +extern void irq16(void); +extern void irq17(void); +extern void irq18(void); +extern void irq19(void); +extern void irq20(void); +extern void irq21(void); +extern void irq22(void); +extern void irq23(void); +extern void irq24(void); +extern void irq25(void); +extern void irq26(void); +extern void irq27(void); +extern void irq28(void); +extern void irq29(void); +extern void irq30(void); +extern void irq31(void); +extern void timer_irq(void); +extern void keyboard_irq(void); + +#endif diff --git a/src/include/source/irq_handler.h b/src/include/source/irq_handler.h new file mode 100644 index 0000000..41b4f8c --- /dev/null +++ b/src/include/source/irq_handler.h @@ -0,0 +1,37 @@ +#ifndef SOURCE_IRQ_HANDLER_H +#define SOURCE_IRQ_HANDLER_H + +void irq0_handler(void); +void irq1_handler(void); +void irq2_handler(void); +void irq3_handler(void); +void irq4_handler(void); +void irq5_handler(void); +void irq6_handler(void); +void irq7_handler(void); +void irq8_handler(void); +void irq9_handler(void); +void irq10_handler(void); +void irq11_handler(void); +void irq12_handler(void); +void irq13_handler(void); +void irq14_handler(void); +void irq15_handler(void); +void irq16_handler(void); +void irq17_handler(void); +void irq18_handler(void); +void irq19_handler(void); +void irq20_handler(void); +void irq21_handler(void); +void irq22_handler(void); +void irq23_handler(void); +void irq24_handler(void); +void irq25_handler(void); +void irq26_handler(void); +void irq27_handler(void); +void irq28_handler(void); +void irq29_handler(void); +void irq30_handler(void); +void irq31_handler(void); + +#endif diff --git a/src/include/source/kernel.h b/src/include/source/kernel.h new file mode 100644 index 0000000..0a3903f --- /dev/null +++ b/src/include/source/kernel.h @@ -0,0 +1,6 @@ +#ifndef SOURCE_KERNEL_H +#define SOURCE_KERNEL_H + +void kernel_main(void); + +#endif diff --git a/src/include/source/keyboard.h b/src/include/source/keyboard.h new file mode 100644 index 0000000..28fa104 --- /dev/null +++ b/src/include/source/keyboard.h @@ -0,0 +1,15 @@ +#ifndef SOURCE_KEYBOARD_H +#define SOURCE_KEYBOARD_H + +void init_keyboard(void); +void deletelast(void); +void backspace(void); +void enter(void); +void space(void); +void keyup(void); +void keydown(void); +void keyleft(void); +void keyright(void); +void keyboard_handler(void); + +#endif diff --git a/src/include/source/keymap.h b/src/include/source/keymap.h new file mode 100644 index 0000000..1c474ae --- /dev/null +++ b/src/include/source/keymap.h @@ -0,0 +1,9 @@ +#ifndef SOURCE_KEYMAP_H +#define SOURCE_KEYMAP_H + +#include + +void us_en(char keymap[]); +void us_en_shift(char keymap[]); + +#endif diff --git a/src/include/source/paging.h b/src/include/source/paging.h new file mode 100644 index 0000000..dc4e357 --- /dev/null +++ b/src/include/source/paging.h @@ -0,0 +1,10 @@ +#ifndef SOURCE_PAGING_H +#define SOURCE_PAGING_H + +#include + +void set_pd(void); +void set_pt(size_t num, uint32_t address); +void set_paging(void); + +#endif diff --git a/src/include/source/stack_protector.h b/src/include/source/stack_protector.h new file mode 100644 index 0000000..d5532e2 --- /dev/null +++ b/src/include/source/stack_protector.h @@ -0,0 +1,6 @@ +#ifndef SOURCE_STACK_PROTECTOR_H +#define SOURCE_STACK_PROTECTOR_H + +void __stack_chk_fail(void); + +#endif diff --git a/src/include/source/stdio.h b/src/include/source/stdio.h new file mode 100644 index 0000000..dbf901a --- /dev/null +++ b/src/include/source/stdio.h @@ -0,0 +1,6 @@ +#ifndef SOURCE_STDIO_H +#define SOURCE_STDIO_H + +void printf(const char *str, ...); + +#endif diff --git a/src/include/source/string.h b/src/include/source/string.h new file mode 100644 index 0000000..98aef4f --- /dev/null +++ b/src/include/source/string.h @@ -0,0 +1,17 @@ +#ifndef SOURCE_STRING_H +#define SOURCE_STRING_H + +#include + +size_t stringlen(char* str); +bool stringcmp(const char* str1, const char* str2); +void stringcat(char* str1, const char* str2); +void stringcpy(char* str1, const char* str2); +void stringrev(char* str); + +void itos(uint32_t num, char *str); +uint32_t stoi(const char* str); +double stof(const char* str); +void ftos(double num, char* str); + +#endif diff --git a/src/include/source/timer.h b/src/include/source/timer.h new file mode 100644 index 0000000..bfdc4cd --- /dev/null +++ b/src/include/source/timer.h @@ -0,0 +1,9 @@ +#ifndef SOURCE_TIMER_H +#define SOURCE_TIMER_H + +#include + +void timer_handler(void); +void init_timer(uint32_t frequency); + +#endif diff --git a/src/include/source/tty.h b/src/include/source/tty.h new file mode 100644 index 0000000..2b22eff --- /dev/null +++ b/src/include/source/tty.h @@ -0,0 +1,19 @@ +#ifndef SOURCE_TTY_H +#define SOURCE_TTY_H + +#include + +#define CMD_LENGTH 20 + +size_t pieces(char pieces[][CMD_LENGTH], char *buffer); +void echo(size_t numberof, char parts[][CMD_LENGTH]); +void merge(char parts[][CMD_LENGTH]); +void ls(void); +void number(size_t numberof, char parts[][CMD_LENGTH]); +void uptime(void); +void prompt(void); +void neofetch(void); +void help(void); +void tty(char *buffer); + +#endif diff --git a/src/include/source/vga.h b/src/include/source/vga.h new file mode 100644 index 0000000..69abc44 --- /dev/null +++ b/src/include/source/vga.h @@ -0,0 +1,40 @@ +#ifndef SOURCE_VGA_H +#define SOURCE_VGA_H + +#include + +static const size_t VGA_WIDTH = 80; +static const size_t VGA_HEIGHT = 25; + +enum vga_color { + VGA_COLOR_BLACK = 0, + VGA_COLOR_DARK_BLUE = 1, + VGA_COLOR_GREEN = 2, + VGA_COLOR_TURQUOISE = 3, + VGA_COLOR_RED = 4, + VGA_COLOR_PURPLE = 5, + VGA_COLOR_BROWN = 6, + VGA_COLOR_LIGHT_GREY = 7, + VGA_COLOR_DARK_GREY = 8, + VGA_COLOR_BLUE = 9, + VGA_COLOR_LIGHT_GREEN = 10, + VGA_COLOR_LIGHT_BLUE = 11, + VGA_COLOR_LIGHT_RED = 12, + VGA_COLOR_PINK = 13, + VGA_COLOR_YELLOW = 14, + VGA_COLOR_WHITE = 15, +}; + +void set_color(enum vga_color fg, enum vga_color bg); +void terminal_initialize(void); +void terminal_putentryat(char c, uint8_t color, size_t x, size_t y); +void movescreen(void); +void next_field(void); +void previous_field(void); +void terminal_putchar(char c); +void terminal_writestring(const char* data); +void terminal_writeint(uint32_t num); +void terminal_writefloat(double num); +void clear(void); + +#endif diff --git a/src/include/stdio.h b/src/include/stdio.h index 6bb87be..88f18cc 100644 --- a/src/include/stdio.h +++ b/src/include/stdio.h @@ -20,6 +20,4 @@ size_t fwrite(const void*, size_t, size_t, FILE*); void setbuf(FILE*, char*); int vfprintf(FILE*, const char*, va_list); -void printf(char *str, ...); - #endif diff --git a/src/include/string.h b/src/include/string.h index 78fa956..16da969 100644 --- a/src/include/string.h +++ b/src/include/string.h @@ -8,15 +8,4 @@ void* memset(void*, int, size_t); char* strcpy(char*, const char*); size_t strlen(const char*); -#include - -size_t stringlen(char *str); -bool stringcmp(char *str1,char *str2); -void stringcat(char *str1,char *str2); -void stringrev(char *str); -void itos(uint32_t num,char *str); -uint32_t stoi(const char *str); -double stof(const char *str); -void ftos(double num, char *str); - #endif diff --git a/src/include/types.h b/src/include/types.h index a6d6530..391284d 100644 --- a/src/include/types.h +++ b/src/include/types.h @@ -1,5 +1,5 @@ -#ifndef TYPES_H -#define TYPES_H +#ifndef SOURCE_TYPES_H +#define SOURCE_TYPES_H #include #include diff --git a/src/include/vga.h b/src/include/vga.h deleted file mode 100644 index eb43644..0000000 --- a/src/include/vga.h +++ /dev/null @@ -1,29 +0,0 @@ -#ifndef VGA_H -#define VGA_H - -#include - -static const size_t VGA_WIDTH = 80; -static const size_t VGA_HEIGHT = 25; - -enum vga_color { - VGA_COLOR_BLACK = 0, - VGA_COLOR_DARK_BLUE = 1, - VGA_COLOR_GREEN = 2, - VGA_COLOR_TURQUOISE = 3, - VGA_COLOR_RED = 4, - VGA_COLOR_PURPLE = 5, - VGA_COLOR_BROWN = 6, - VGA_COLOR_LIGHT_GREY = 7, - VGA_COLOR_DARK_GREY = 8, - VGA_COLOR_BLUE = 9, - VGA_COLOR_LIGHT_GREEN = 10, - VGA_COLOR_LIGHT_BLUE = 11, - VGA_COLOR_LIGHT_RED = 12, - VGA_COLOR_PINK = 13, - VGA_COLOR_YELLOW = 14, - VGA_COLOR_WHITE = 15, -}; -void set_color(enum vga_color fg, enum vga_color bg); - -#endif -- cgit v1.2.3