summaryrefslogtreecommitdiff
path: root/kernel/include
diff options
context:
space:
mode:
authorTyler Murphy <=>2023-07-22 11:05:30 -0400
committerTyler Murphy <=>2023-07-22 11:05:30 -0400
commitda094d011f52a8f1ce879810cd1a4bbbe34f08d4 (patch)
tree4649b04705b49c2eb5f8691a5d9951351f65df04 /kernel/include
parentrefactoring (diff)
downloadfinix-main.tar.gz
finix-main.tar.bz2
finix-main.zip
paging is not very funHEADmain
Diffstat (limited to '')
-rw-r--r--kernel/include/arch.h (renamed from kernel/include/sys.h)2
-rw-r--r--kernel/include/arch/i686/acpi.h4
-rw-r--r--kernel/include/arch/i686/mboot.h8
-rw-r--r--kernel/include/arch/i686/paging.h33
-rw-r--r--kernel/include/drivers/vga.h1
-rw-r--r--kernel/include/memory.h7
-rw-r--r--kernel/include/time.h5
7 files changed, 54 insertions, 6 deletions
diff --git a/kernel/include/sys.h b/kernel/include/arch.h
index 003f85c..eb233f0 100644
--- a/kernel/include/sys.h
+++ b/kernel/include/arch.h
@@ -1,5 +1,7 @@
#pragma once
+#include <stddef.h>
+
extern void arch_init(void *boot_info);
extern void arch_update(void);
extern void arch_halt(void);
diff --git a/kernel/include/arch/i686/acpi.h b/kernel/include/arch/i686/acpi.h
index bb35010..47bcc88 100644
--- a/kernel/include/arch/i686/acpi.h
+++ b/kernel/include/arch/i686/acpi.h
@@ -102,5 +102,5 @@ struct FixedACPIDescriptionTable {
struct GenericAddressStructure x_gpe1_block;
};
-void acpi_init(void *rsdp);
-void acpi_poweroff(void);
+extern void acpi_init(void);
+extern void acpi_poweroff(void);
diff --git a/kernel/include/arch/i686/mboot.h b/kernel/include/arch/i686/mboot.h
index 394071f..2ebc983 100644
--- a/kernel/include/arch/i686/mboot.h
+++ b/kernel/include/arch/i686/mboot.h
@@ -12,7 +12,7 @@ struct BootTag {
uint32_t type;
uint32_t size;
union {
- char cmdline[CMDLINE_MAX];
+ char cmdline[CMDLINE_MAX + 1];
struct MemoryMap *memory_map;
struct RootSystemDescriptionPointer *rsdp;
} data;
@@ -26,9 +26,9 @@ struct BootInfo {
enum BootTagID {
ID_CMDLINE = 0,
- iD_MEMORYMAP = 6,
+ ID_MEMORYMAP = 6,
ID_RSDP = 14
};
-void load_boot_info(void* boot_info);
-bool get_boot_tag(enum BootTagID id, struct BootTag **tag);
+extern void load_boot_info(void* boot_info);
+extern bool get_boot_tag(enum BootTagID id, struct BootTag **tag);
diff --git a/kernel/include/arch/i686/paging.h b/kernel/include/arch/i686/paging.h
new file mode 100644
index 0000000..3c0c335
--- /dev/null
+++ b/kernel/include/arch/i686/paging.h
@@ -0,0 +1,33 @@
+#pragma once
+
+#include <stddef.h>
+
+struct page_directory_t { // 32 bits
+ unsigned int present : 1;
+ unsigned int rw_flag : 1;
+ unsigned int access_lvl : 1; //0 is for only ring0. 1 is for anybody.
+ unsigned int write_through : 1;
+ unsigned int cache_off : 1;
+ unsigned int accessed : 1;
+ unsigned int zero : 1;
+ unsigned int page_size : 1;
+ unsigned int unused : 4;
+ unsigned int tbl_addr : 20;
+};
+
+struct page_table_t { // 32 bits
+ unsigned int present : 1;
+ unsigned int rw_flag : 1;
+ unsigned int access_lvl : 1; //0 is for only ring0. 1 is for anybody.
+ unsigned int write_through : 1;
+ unsigned int cache_off : 1;
+ unsigned int accessed : 1;
+ unsigned int dirty : 1;
+ unsigned int zero : 1;
+ unsigned int global : 1;
+ unsigned int reserved : 3;
+ unsigned int phys_addr : 20;
+};
+
+extern void ident_map_addr(void *addr, size_t len);
+extern void ident_unmap_addr(void *addr, size_t len);
diff --git a/kernel/include/drivers/vga.h b/kernel/include/drivers/vga.h
index 68e8690..6b3b796 100644
--- a/kernel/include/drivers/vga.h
+++ b/kernel/include/drivers/vga.h
@@ -27,6 +27,7 @@ enum vga_color {
void vgatext_write_char(char c, enum vga_color color, uint8_t x, uint8_t y);
void vgatext_write_data(uint16_t data, uint16_t index);
void vgatext_write_buf(const uint16_t *buffer);
+
void vgatext_cur_mov(uint8_t x, uint8_t y);
void vgatext_cur_resize(uint8_t start, uint8_t end);
void vgatext_cur_visible(bool visible);
diff --git a/kernel/include/memory.h b/kernel/include/memory.h
index 07a55c0..db8b761 100644
--- a/kernel/include/memory.h
+++ b/kernel/include/memory.h
@@ -1,6 +1,13 @@
#pragma once
+#include <stddef.h>
+
extern int memory_lock(void);
extern int memory_unlock(void);
extern void *memory_alloc_page(int);
extern int memory_free_page(void* ,int);
+
+extern void *malloc(size_t size);
+extern void free(void *ptr);
+extern void *calloc(size_t nobj, size_t size);
+extern void *realloc(void *p, size_t size);
diff --git a/kernel/include/time.h b/kernel/include/time.h
index 2e86a69..7cf0aa0 100644
--- a/kernel/include/time.h
+++ b/kernel/include/time.h
@@ -37,6 +37,11 @@ extern struct Time get_utctime(void);
extern struct Time get_localtime(void);
/**
+ * Return the time on the system clock
+ */
+extern size_t get_systemtime(void);
+
+/**
* Converts the time into a string format
* @param time the current time
* @param format see manpage for date