More work on Kernel class, syscalls

This commit is contained in:
Nathan Giddings
2020-12-11 09:19:29 -06:00
parent e8c3de4a63
commit 69c3c8a847
34 changed files with 390 additions and 121 deletions

View File

@@ -6,7 +6,7 @@
#include "../mmap.hpp"
#include "../util.hpp"
using namespace kernel;
using namespace kernelns;
extern int _kernelEnd;

View File

@@ -140,7 +140,7 @@ void syscallHandler(void* frame)
}
kernel::Interrupts::Interrupts()
kernelns::Interrupts::Interrupts()
{
for(unsigned int i = 0; i <= MAX_SYSCALL_ID; i++)
syscalls[i] = (void*) NULL;
@@ -152,17 +152,17 @@ kernel::Interrupts::Interrupts()
lidt();
}
void kernel::Interrupts::enable()
void kernelns::Interrupts::enable()
{
asm("sti");
}
void kernel::Interrupts::disable()
void kernelns::Interrupts::disable()
{
asm("cli");
}
void kernel::Interrupts::addSyscall(unsigned int id, void* function)
void kernelns::Interrupts::addSyscall(unsigned int id, void* function)
{
if(id <= MAX_SYSCALL_ID)
syscalls[id] = function;

View File

@@ -150,7 +150,7 @@ private:
uint32_t physicalAddress : 20;
};
int kernel::mmap(void* start, size_t length, int flags)
int kernelns::mmap(void* start, size_t length, int flags)
{
if((size_t) start % 4096 != 0)
return -1;
@@ -184,7 +184,7 @@ int kernel::mmap(void* start, size_t length, int flags)
return 0;
}
int kernel::mmap(void* start, physaddr_t p_start, size_t length, int flags)
int kernelns::mmap(void* start, physaddr_t p_start, size_t length, int flags)
{
if((size_t) start % 4096 != 0 || p_start % 4096 != 0)
return -1;
@@ -198,7 +198,7 @@ int kernel::mmap(void* start, physaddr_t p_start, size_t length, int flags)
return 0;
}
int kernel::mapPage(void* start, physaddr_t p_start, int flags)
int kernelns::mapPage(void* start, physaddr_t p_start, int flags)
{
if((size_t) start % 4096 != 0 || p_start % 4096 != 0)
return -1;
@@ -228,7 +228,7 @@ int kernel::mapPage(void* start, physaddr_t p_start, int flags)
return 0;
}
int kernel::munmap(void* start, size_t length)
int kernelns::munmap(void* start, size_t length)
{
if((size_t) start % 4096 != 0)
return -1;
@@ -250,7 +250,7 @@ int kernel::munmap(void* start, size_t length)
return 0;
}
bool kernel::isMapped(void* addr)
bool kernelns::isMapped(void* addr)
{
PageTableEntry* pageDirectory = (PageTableEntry*) 0xFFFFF000;
size_t tableIndex = (size_t) addr / 4096;
@@ -263,14 +263,14 @@ bool kernel::isMapped(void* addr)
return false;
}
physaddr_t kernel::getPhysicalAddress(void* addr)
physaddr_t kernelns::getPhysicalAddress(void* addr)
{
PageTableEntry* pageTables = (PageTableEntry*) 0xFFC00000;
size_t tableIndex = (size_t) addr / 4096;
return pageTables[tableIndex].getPhysicalAddress() + ((size_t) addr & 0xFFF);
}
int kernel::createAddressSpace(void* table)
int kernelns::createAddressSpace(void* table)
{
if(((size_t) table & 0xFFF) != 0)
return -1;
@@ -281,7 +281,7 @@ int kernel::createAddressSpace(void* table)
return 0;
}
int kernel::loadAddressSpace(physaddr_t table)
int kernelns::loadAddressSpace(physaddr_t table)
{
if((table & 0xFFF) != 0)
return -1;

View File

@@ -1,6 +1,6 @@
#include "multiboot2.hpp"
using namespace kernel;
using namespace kernelns;
Multiboot2Info::Multiboot2Info(void* tableLocation)
{

View File

@@ -4,7 +4,7 @@
#include "../memorymap.hpp"
#include "../module.hpp"
namespace kernel
namespace kernelns
{
class Multiboot2Info

View File

@@ -1,7 +1,7 @@
#include <stdbool.h>
#include "tty.hpp"
kernel::TTY::TTY(char* vga)
kernelns::TTY::TTY(char* vga)
{
this->vga = vga;
this->cursor = 0;
@@ -9,7 +9,7 @@ kernel::TTY::TTY(char* vga)
this->base = 10;
}
kernel::TTY& kernel::TTY::operator<<(kernel::TTY::Format fmt)
kernelns::TTY& kernelns::TTY::operator<<(kernelns::TTY::Format fmt)
{
switch(fmt)
{
@@ -25,42 +25,42 @@ kernel::TTY& kernel::TTY::operator<<(kernel::TTY::Format fmt)
}
}
kernel::TTY& kernel::TTY::operator<<(const char* str)
kernelns::TTY& kernelns::TTY::operator<<(const char* str)
{
return printString(str);
}
kernel::TTY& kernel::TTY::operator<<(unsigned int n)
kernelns::TTY& kernelns::TTY::operator<<(unsigned int n)
{
return printNumber(n, base, width);
}
kernel::TTY& kernel::TTY::operator<<(int n)
kernelns::TTY& kernelns::TTY::operator<<(int n)
{
return printNumber((unsigned int) n, base, width);
}
kernel::TTY& kernel::TTY::operator<<(void* n)
kernelns::TTY& kernelns::TTY::operator<<(void* n)
{
return printNumber((unsigned int) n, 16, 8);
}
kernel::TTY& kernel::TTY::operator<<(char c)
kernelns::TTY& kernelns::TTY::operator<<(char c)
{
return putChar(c);
}
void kernel::TTY::setWidth(size_t width)
void kernelns::TTY::setWidth(size_t width)
{
this->width = width;
}
size_t kernel::TTY::getWidth()
size_t kernelns::TTY::getWidth()
{
return width;
}
void kernel::TTY::clear()
void kernelns::TTY::clear()
{
for(int i = 0; i < 80*25; i++)
{
@@ -69,7 +69,7 @@ void kernel::TTY::clear()
cursor = 0;
}
kernel::TTY& kernel::TTY::printNumber(unsigned int n, size_t base,
kernelns::TTY& kernelns::TTY::printNumber(unsigned int n, size_t base,
size_t width)
{
const char* digits = "0123456789ABCDEF";
@@ -94,7 +94,7 @@ kernel::TTY& kernel::TTY::printNumber(unsigned int n, size_t base,
return *this;
}
kernel::TTY& kernel::TTY::printString(const char* str)
kernelns::TTY& kernelns::TTY::printString(const char* str)
{
while(*str)
{
@@ -104,7 +104,7 @@ kernel::TTY& kernel::TTY::printString(const char* str)
return *this;
}
kernel::TTY& kernel::TTY::putChar(char c)
kernelns::TTY& kernelns::TTY::putChar(char c)
{
switch(c)
{

View File

@@ -3,7 +3,7 @@
#include <stddef.h>
namespace kernel
namespace kernelns
{
class TTY