summaryrefslogtreecommitdiff
path: root/src/include
diff options
context:
space:
mode:
Diffstat (limited to 'src/include')
-rw-r--r--src/include/asm.h6
-rw-r--r--src/include/heap.h11
-rw-r--r--src/include/irq.h39
-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.h (renamed from src/include/vga.h)15
-rw-r--r--src/include/stdio.h2
-rw-r--r--src/include/string.h11
-rw-r--r--src/include/types.h4
21 files changed, 282 insertions, 70 deletions
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<types.h>
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<types.h>
-
-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<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/vga.h b/src/include/source/vga.h
index eb43644..69abc44 100644
--- a/src/include/vga.h
+++ b/src/include/source/vga.h
@@ -1,5 +1,5 @@
-#ifndef VGA_H
-#define VGA_H
+#ifndef SOURCE_VGA_H
+#define SOURCE_VGA_H
#include<types.h>
@@ -24,6 +24,17 @@ enum vga_color {
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<types.h>
-
-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<stdbool.h>
#include<stddef.h>