Pārlūkot izejas kodu

style: kernel_main

greatbridf 2 gadi atpakaļ
vecāks
revīzija
a9e1f08cc6

+ 1 - 2
CMakeLists.txt

@@ -36,7 +36,7 @@ set(BOOTLOADER_SOURCES src/boot.s
                        )
 
 set(KERNEL_MAIN_SOURCES src/fs/fat.cpp
-                        src/kernel_main.cpp
+                        src/kinit.cpp
                         src/kernel/errno.c
                         src/kernel/interrupt.cpp
                         src/kernel/process.cpp
@@ -92,7 +92,6 @@ set(KERNEL_MAIN_SOURCES src/fs/fat.cpp
                         include/types/vector.hpp
                         include/types/function.hpp
                         include/kernel/log.hpp
-                        include/kernel_main.hpp
                         )
 
 add_executable(kernel.out ${KERNEL_MAIN_SOURCES} ${BOOTLOADER_SOURCES})

+ 7 - 6
include/kernel/mem.h

@@ -89,12 +89,11 @@ typedef union pte_t {
 } pte_t;
 typedef pte_t (*pt_t)[1024];
 
-// in kernel_main.c
-extern uint8_t e820_mem_map[1024];
-extern uint32_t e820_mem_map_count;
-extern uint32_t e820_mem_map_entry_size;
-extern size_t kernel_size;
-extern struct mem_size_info mem_size_info;
+inline uint8_t e820_mem_map[1024];
+inline uint32_t e820_mem_map_count;
+inline uint32_t e820_mem_map_entry_size;
+inline size_t kernel_size;
+inline struct mem_size_info mem_size_info;
 
 #define KERNEL_HEAP_START ((void*)0x30000000)
 #define KERNEL_HEAP_LIMIT ((void*)0x40000000)
@@ -136,6 +135,8 @@ typedef struct segment_descriptor_struct {
     uint64_t base_high : 8;
 } segment_descriptor;
 
+inline segment_descriptor gdt[6];
+
 void create_segment_descriptor(
     segment_descriptor* sd,
     uint32_t base,

+ 2 - 0
include/kernel/process.hpp

@@ -31,6 +31,8 @@ inline thread* volatile current_thread;
 inline proclist* procs;
 inline readyqueue* readythds;
 
+inline tss32_t tss;
+
 struct process_attr {
     uint16_t system : 1;
     uint16_t zombie : 1 = 0;

+ 0 - 10
include/kernel_main.hpp

@@ -1,10 +0,0 @@
-#pragma once
-#include <types/types.h>
-
-#define KERNEL_STACK_SIZE (16 * 1024)
-#define KERNEL_STACK_SEGMENT (0x10)
-
-#define KERNEL_START_ADDR (0x00100000)
-
-// in kernel_main.cpp
-extern struct tss32_t tss;

+ 0 - 1
src/kernel/interrupt.cpp

@@ -13,7 +13,6 @@
 #include <kernel/syscall.hpp>
 #include <kernel/vfs.hpp>
 #include <kernel/vga.hpp>
-#include <kernel_main.hpp>
 #include <stdint.h>
 #include <stdio.h>
 #include <types/size.h>

+ 0 - 1
src/kernel/mem.cpp

@@ -8,7 +8,6 @@
 #include <kernel/process.hpp>
 #include <kernel/task.h>
 #include <kernel/vga.hpp>
-#include <kernel_main.hpp>
 #include <stdint.h>
 #include <stdio.h>
 #include <types/allocator.hpp>

+ 0 - 1
src/kernel/process.cpp

@@ -9,7 +9,6 @@
 #include <kernel/mm.hpp>
 #include <kernel/process.hpp>
 #include <kernel/vfs.hpp>
-#include <kernel_main.hpp>
 #include <stdint.h>
 #include <stdio.h>
 #include <types/allocator.hpp>

+ 0 - 1
src/kernel/syscall.cpp

@@ -10,7 +10,6 @@
 #include <kernel/syscall.hpp>
 #include <kernel/tty.hpp>
 #include <kernel/vfs.hpp>
-#include <kernel_main.hpp>
 #include <stdint.h>
 #include <stdio.h>
 #include <string.h>

+ 8 - 19
src/kernel_main.cpp → src/kinit.cpp

@@ -1,5 +1,3 @@
-#include "kernel_main.hpp"
-
 #include <asm/boot.h>
 #include <asm/port_io.h>
 #include <asm/sys.h>
@@ -37,12 +35,6 @@ void call_constructors_for_cpp(void)
     }
 }
 
-uint8_t e820_mem_map[1024];
-uint32_t e820_mem_map_count;
-uint32_t e820_mem_map_entry_size;
-size_t kernel_size;
-struct mem_size_info mem_size_info;
-
 static inline void save_loader_data(void)
 {
     memcpy(e820_mem_map, asm_e820_mem_map, sizeof(e820_mem_map));
@@ -95,19 +87,16 @@ static inline void show_mem_info(char* buf)
     printkf("kernel size: %x\n", kernel_size);
 }
 
-static segment_descriptor new_gdt[6];
-struct tss32_t tss;
-
 void load_new_gdt(void)
 {
-    create_segment_descriptor(new_gdt + 0, 0, 0, 0, 0);
-    create_segment_descriptor(new_gdt + 1, 0, ~0, 0b1100, SD_TYPE_CODE_SYSTEM);
-    create_segment_descriptor(new_gdt + 2, 0, ~0, 0b1100, SD_TYPE_DATA_SYSTEM);
-    create_segment_descriptor(new_gdt + 3, 0, ~0, 0b1100, SD_TYPE_CODE_USER);
-    create_segment_descriptor(new_gdt + 4, 0, ~0, 0b1100, SD_TYPE_DATA_USER);
-    create_segment_descriptor(new_gdt + 5, (uint32_t)&tss, sizeof(tss), 0b0000, SD_TYPE_TSS);
-
-    asm_load_gdt((6 * 8 - 1) << 16, (pptr_t)new_gdt);
+    create_segment_descriptor(gdt + 0, 0, 0, 0, 0);
+    create_segment_descriptor(gdt + 1, 0, ~0, 0b1100, SD_TYPE_CODE_SYSTEM);
+    create_segment_descriptor(gdt + 2, 0, ~0, 0b1100, SD_TYPE_DATA_SYSTEM);
+    create_segment_descriptor(gdt + 3, 0, ~0, 0b1100, SD_TYPE_CODE_USER);
+    create_segment_descriptor(gdt + 4, 0, ~0, 0b1100, SD_TYPE_DATA_USER);
+    create_segment_descriptor(gdt + 5, (uint32_t)&tss, sizeof(tss), 0b0000, SD_TYPE_TSS);
+
+    asm_load_gdt((6 * 8 - 1) << 16, (pptr_t)gdt);
     asm_load_tr((6 - 1) * 8);
 
     asm_cli();