summaryrefslogtreecommitdiff
path: root/src/include/source
diff options
context:
space:
mode:
authorAleksa Vučković <aleksav013@gmail.com>2022-01-17 22:00:14 +0100
committerAleksa Vučković <aleksav013@gmail.com>2022-01-17 22:00:14 +0100
commited84017353c6fc9421b223ff6ec62f8d881d8098 (patch)
tree6ca1abfc7daca48010d841572d4eb16cda1b7abf /src/include/source
parent85fdaf22994ead86a43b4880cb4875094612bd72 (diff)
Fixing $(WARNING)s & explicitly declaring function prototypes
Diffstat (limited to 'src/include/source')
-rw-r--r--src/include/source/gdt.h25
-rw-r--r--src/include/source/heap.h30
-rw-r--r--src/include/source/idt.h36
-rw-r--r--src/include/source/irq.h39
-rw-r--r--src/include/source/irq_handler.h37
-rw-r--r--src/include/source/kernel.h6
-rw-r--r--src/include/source/keyboard.h15
-rw-r--r--src/include/source/keymap.h9
-rw-r--r--src/include/source/paging.h10
-rw-r--r--src/include/source/stack_protector.h6
-rw-r--r--src/include/source/stdio.h6
-rw-r--r--src/include/source/string.h17
-rw-r--r--src/include/source/timer.h9
-rw-r--r--src/include/source/tty.h19
-rw-r--r--src/include/source/vga.h40
15 files changed, 304 insertions, 0 deletions
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<types.h>
+
+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<types.h>
+
+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<types.h>
+
+#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<types.h>
+
+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<types.h>
+
+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<types.h>
+
+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<types.h>
+
+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<types.h>
+
+#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<types.h>
+
+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