diff options
| author | Franklin Wei <frankhwei536@gmail.com> | 2015-03-01 14:20:47 -0500 |
|---|---|---|
| committer | Franklin Wei <frankhwei536@gmail.com> | 2015-03-01 14:20:47 -0500 |
| commit | c7252588ebb95f97631e9470778c69afa00c35b5 (patch) | |
| tree | 06d760878e18f6cddbe4305cddd4d5dfa74529f8 /include/kernel | |
| parent | b8f54e63d2b8f8007c580adf2a6034c98a0f2eaa (diff) | |
| download | kappa-c7252588ebb95f97631e9470778c69afa00c35b5.zip kappa-c7252588ebb95f97631e9470778c69afa00c35b5.tar.gz kappa-c7252588ebb95f97631e9470778c69afa00c35b5.tar.bz2 kappa-c7252588ebb95f97631e9470778c69afa00c35b5.tar.xz | |
Huge restructure
Diffstat (limited to 'include/kernel')
| -rw-r--r-- | include/kernel/heap.h | 5 | ||||
| -rw-r--r-- | include/kernel/io.h | 5 | ||||
| -rw-r--r-- | include/kernel/log.h | 3 | ||||
| -rw-r--r-- | include/kernel/multiboot.h | 90 | ||||
| -rw-r--r-- | include/kernel/panic.h | 1 | ||||
| -rw-r--r-- | include/kernel/task.c | 16 | ||||
| -rw-r--r-- | include/kernel/task.h | 10 | ||||
| -rw-r--r-- | include/kernel/version.h | 2 |
8 files changed, 132 insertions, 0 deletions
diff --git a/include/kernel/heap.h b/include/kernel/heap.h new file mode 100644 index 0000000..dfadf36 --- /dev/null +++ b/include/kernel/heap.h @@ -0,0 +1,5 @@ +#include <stddef.h> +void *kmalloc(size_t); +void *kmalloc_a(size_t); +void *kmalloc_p(size_t, void**); +void *kmalloc_ap(size_t, void**); diff --git a/include/kernel/io.h b/include/kernel/io.h new file mode 100644 index 0000000..d1177ac --- /dev/null +++ b/include/kernel/io.h @@ -0,0 +1,5 @@ +#include <stdint.h> +void outb(uint16_t port, uint8_t val); +void outw(uint16_t port, uint16_t val); +uint8_t inb(uint16_t port); +uint16_t inw(uint16_t port); diff --git a/include/kernel/log.h b/include/kernel/log.h new file mode 100644 index 0000000..1a28c0d --- /dev/null +++ b/include/kernel/log.h @@ -0,0 +1,3 @@ +void log_putchar(int); +void log_puts(const char*); +void log(const char*, ...); diff --git a/include/kernel/multiboot.h b/include/kernel/multiboot.h new file mode 100644 index 0000000..e1f7cf0 --- /dev/null +++ b/include/kernel/multiboot.h @@ -0,0 +1,90 @@ +#include <stdint.h> + +struct multiboot_aout_symbol_table_t +{ + uint32_t tabsize; + uint32_t strsize; + uint32_t addr; + uint32_t reserved; +} __attribute__((packed)); + +struct multiboot_elf_section_header_table_t +{ + uint32_t num; + uint32_t size; + uint32_t addr; + uint32_t shndx; +} __attribute__((packed)); + +struct vbe_info_t { + uint16_t attributes; + uint8_t winA, winB; + uint16_t granularity; + uint16_t winsize; + uint16_t segmentA, segmentB; + uint32_t realFctPtr; + uint16_t pitch; + uint16_t Xres, Yres; + uint8_t Wchar, Ychar, planes, bpp, banks; + uint8_t memory_model, bank_size, image_pages; + uint8_t reserved0; + uint8_t red_mask, red_position; + uint8_t green_mask, green_position; + uint8_t blue_mask, blue_position; + uint8_t rsv_mask, rsv_position; + uint8_t directcolor_attributes; + uint32_t physbase; + uint32_t reserved1; + uint16_t reserved2; +} __attribute__((packed)); + +struct multiboot_info_t +{ + /* Multiboot info version number */ + uint32_t flags; + + /* Available memory from BIOS */ + uint32_t mem_lower; + uint32_t mem_upper; + + /* "root" partition */ + uint32_t boot_device; + + /* Kernel command line */ + uint32_t cmdline; + + /* Boot-Module list */ + uint32_t mods_count; + uint32_t mods_addr; + + union + { + struct multiboot_aout_symbol_table_t aout_sym; + struct multiboot_elf_section_header_table_t elf_sec; + } u; + + /* Memory Mapping buffer */ + uint32_t mmap_length; + uint32_t mmap_addr; + + /* Drive Info buffer */ + uint32_t drives_length; + uint32_t drives_addr; + + /* ROM configuration table */ + uint32_t config_table; + + /* Boot Loader Name */ + uint32_t boot_loader_name; + + /* APM table */ + uint32_t apm_table; + + /* Video */ + uint32_t vbe_control_info; + uint32_t vbe_mode_info; + uint16_t vbe_mode; + uint16_t vbe_interface_seg; + uint16_t vbe_interface_off; + uint16_t vbe_interface_len; +} __attribute__((packed)); diff --git a/include/kernel/panic.h b/include/kernel/panic.h new file mode 100644 index 0000000..db53e8e --- /dev/null +++ b/include/kernel/panic.h @@ -0,0 +1 @@ +void panic(const char*, ...); diff --git a/include/kernel/task.c b/include/kernel/task.c new file mode 100644 index 0000000..ecc0042 --- /dev/null +++ b/include/kernel/task.c @@ -0,0 +1,16 @@ +#include "task.h" + +void task_create(struct task_t *task, void (*func)(void), uint32_t flags, uint32_t *pagedir) +{ + task->regs.eax = 0; + task->regs.ebx = 0; + task->regs.ecx = 0; + task->regs.edx = 0; + task->regs.esi = 0; + task->regs.edi = 0; + task->regs.eflags = flags; + task->regs.eip = (uint32_t)main; + task->regs.cr3 = (uint32_t)pagedir; + task->regs.esp = kmalloc(0x1000) + 0x1000; + task->next = NULL; +} diff --git a/include/kernel/task.h b/include/kernel/task.h new file mode 100644 index 0000000..86beed3 --- /dev/null +++ b/include/kernel/task.h @@ -0,0 +1,10 @@ +#include <stdint.h> + +struct taskregs_t { + uint32_t eax, ebx, ecx, edx, esi, edi, esp, ebp, eip, eflags, cr3; +}; + +struct task_t { + struct taskregs_t regs; + struct task_t *next; +}; diff --git a/include/kernel/version.h b/include/kernel/version.h new file mode 100644 index 0000000..8fff367 --- /dev/null +++ b/include/kernel/version.h @@ -0,0 +1,2 @@ +#define KAPPA_KERNEL_VERSION "0.0.1-alpha" +#define KAPPA_KERNEL_CODENAME "Ayatollah's Buybacks" |