summaryrefslogtreecommitdiff
path: root/kernel
diff options
context:
space:
mode:
authorMiguel <m.i@gmx.at>2018-09-02 15:47:29 +0200
committerMiguel <m.i@gmx.at>2018-09-02 15:47:29 +0200
commitfd5a9b87e47bc072aa63fcaf5735232a37338303 (patch)
treea4a15617e540af1f77a326875be84164043aa707 /kernel
parent300fb2f088d8530b630e01ef24ce032710a2f8b9 (diff)
cleanup filenames
Diffstat (limited to 'kernel')
-rw-r--r--kernel/acpi.c1
-rw-r--r--kernel/fifo.h2
-rw-r--r--kernel/interrupts.c2
-rw-r--r--kernel/kernel.c3
-rw-r--r--kernel/kernel.h6
-rw-r--r--kernel/log.c4
-rw-r--r--kernel/mem.h2
-rw-r--r--kernel/scheduler.c5
-rw-r--r--kernel/scheduler.h10
-rw-r--r--kernel/smashing.h1
-rw-r--r--kernel/smp.c14
-rw-r--r--kernel/syscalls.c5
-rw-r--r--kernel/types.h3
-rw-r--r--kernel/usermode.c3
14 files changed, 40 insertions, 21 deletions
diff --git a/kernel/acpi.c b/kernel/acpi.c
index c41e91f..6d1fbc8 100644
--- a/kernel/acpi.c
+++ b/kernel/acpi.c
@@ -7,6 +7,7 @@
#include <stdint.h>
#include <stdbool.h>
#include "smp.h"
+#include "lib/string/string.h"
typedef struct acpi_rsdt_struct
diff --git a/kernel/fifo.h b/kernel/fifo.h
index fd9146c..92f3b75 100644
--- a/kernel/fifo.h
+++ b/kernel/fifo.h
@@ -8,7 +8,7 @@
typedef struct fifo_struct
{
- bool (*put)(struct fifo_stuct*,uint8_t);
+ bool (*put)(struct fifo_struct*,uint8_t);
uint8_t (*get)(struct fifo_struct*);
bool (*has)(struct fifo_struct*);
void *data; // opaque data
diff --git a/kernel/interrupts.c b/kernel/interrupts.c
index 3ce33c4..1e209a9 100644
--- a/kernel/interrupts.c
+++ b/kernel/interrupts.c
@@ -39,7 +39,7 @@ static void int_install_ir(int irq, uint16_t flags, uint16_t sel, void *addr)
}
/** Installs the interrupt table */
-static void int_install()
+void int_install()
{
idtd.size=sizeof(struct int_desc)*INT_MAX;
uint32_t addr=(uint32_t)&idt[0];
diff --git a/kernel/kernel.c b/kernel/kernel.c
index 4406ea0..9381091 100644
--- a/kernel/kernel.c
+++ b/kernel/kernel.c
@@ -14,7 +14,6 @@
#include "driver/mouse.h"
#include "syscalls.h"
-#include "types.h"
#include "fifo.h"
#include "mp.h"
#include "interrupts.h"
@@ -59,7 +58,7 @@ void kernel_main(uint32_t eax,uint32_t ebx)
// https://wiki.osdev.org/Symmetric_Multiprocessing
klog("Symmetric Multi Processing (SMP) start ... ");
smp_log_procdata(&procdata);
- //smp_start_aps(&procdata);
+ smp_start_aps(&procdata);
klog("Vritual Memory / Paging init ... ");
pdirectory *dir=vmem_init(kernel_blocks,(uint32_t)info->framebuffer_addr);
diff --git a/kernel/kernel.h b/kernel/kernel.h
index c214c4a..f73c116 100644
--- a/kernel/kernel.h
+++ b/kernel/kernel.h
@@ -2,20 +2,20 @@
* F00l 0S Central Configuration File *
********************************************/
+#include "log.h"
+
#ifndef FOOLOS_CONFIG_H
#define FOOLOS_CONFIG_H
#define BIN_INIT "/bin/init"
-
//#define FOOLOS_LOG_OFF
+
#define FIFO_MAX_RINGBUFFERS 20
#define MAX_FIFOS 20
#define MAX_FD 20
#define MAX_TASKS 10
#define MEM_PRINT_MEMORYMAP
-//#define LOG_SYSCALLS
-
#define KMALLOC_MEM_SIZE 1024*1024*8 // 8MB for in kernel-memory
#define NUMBER_SPINLOCKS 16
diff --git a/kernel/log.c b/kernel/log.c
index 8ab2bf2..c7c1bb7 100644
--- a/kernel/log.c
+++ b/kernel/log.c
@@ -1,4 +1,3 @@
-
#include "log.h"
#include <stdarg.h>
@@ -6,8 +5,11 @@
#include "kernel/kernel.h"
#include "kernel/fifo.h"
+#include "driver/serial.h"
+#include "driver/timer.h"
#include "lib/string/string.h"
+#include "lib/printf/printf.h"
static void log_string(char *str)
{
diff --git a/kernel/mem.h b/kernel/mem.h
index c7e905e..42bf84d 100644
--- a/kernel/mem.h
+++ b/kernel/mem.h
@@ -1,5 +1,5 @@
-#include "types.h"
#include "multiboot.h"
+typedef uint32_t physical_address;
physical_address* pmmngr_alloc_block ();
void pmmngr_free_block (physical_address* p);
uint32_t mem_init(multiboot_information *info);
diff --git a/kernel/scheduler.c b/kernel/scheduler.c
index 2373e36..cfd0fcd 100644
--- a/kernel/scheduler.c
+++ b/kernel/scheduler.c
@@ -1,6 +1,9 @@
+#include "scheduler.h"
#include "kernel.h"
+
#include "mem.h"
#include "asm/x86.h"
+#include "kmalloc.h"
#include "vmem.h"
#include "syscalls.h"
@@ -232,7 +235,7 @@ volatile uint32_t task_clone(uint32_t pid)
}
// init task (root of all other tasks / processes) //
-volatile void scheduler_init(pdirectory *dir)
+volatile void scheduler_init(void *dir)
{
for(int i=0;i<MAX_TASKS;i++)
{
diff --git a/kernel/scheduler.h b/kernel/scheduler.h
index 7a5bea3..e89e8a3 100644
--- a/kernel/scheduler.h
+++ b/kernel/scheduler.h
@@ -1,2 +1,12 @@
+#include <stdint.h>
// http://hosted.cjmovie.net/TutMultitask.htm
void scheduler_init(void *pdirectory_dir);
+volatile int task_get_current_pid();
+volatile void task_set_brk(uint32_t brk);
+void task_syscall_worker();
+volatile uint32_t task_get_brk();
+volatile uint32_t task_exit(uint32_t pid);
+volatile uint32_t task_fork(uint32_t pid);
+volatile uint32_t task_clone(uint32_t pid);
+volatile uint32_t task_wait(uint32_t pid);
+volatile int task_reset(uint32_t pid, uint32_t entry, uint32_t stack);
diff --git a/kernel/smashing.h b/kernel/smashing.h
new file mode 100644
index 0000000..760b7c9
--- /dev/null
+++ b/kernel/smashing.h
@@ -0,0 +1 @@
+/*empty*/
diff --git a/kernel/smp.c b/kernel/smp.c
index e2de6fe..619463a 100644
--- a/kernel/smp.c
+++ b/kernel/smp.c
@@ -24,23 +24,25 @@ uint32_t local_apic_addr;
void smp_main()
{
- x86_cli();
// klog("local apic_addr:0x%08X",local_apic_addr);
- while(1); //TODO!!!
uint32_t *reg=local_apic_addr+FOOLOS_APIC_ID;
- // klog("local apic id: 0x%08X",(*reg));
+ //klog("local apic id: 0x%08X",(*reg));
*reg=local_apic_addr+FOOLOS_APIC_SPUR_INT;
*reg|=0x100;//0xffffffff; // all bits 1 and interrupt 255
// *reg=0;//xffffffff; // all bits 1 and interrupt 255
- //int_install();
+// int_install();
+
+// x86_sti();
- while(1);
- switch_to_user_mode();
+
+ while(1)__asm__("hlt");
+
+// switch_to_user_mode();
// int x=1/0;
while(1);
diff --git a/kernel/syscalls.c b/kernel/syscalls.c
index f92ef4d..67ae48d 100644
--- a/kernel/syscalls.c
+++ b/kernel/syscalls.c
@@ -1,10 +1,12 @@
#include "lib/string/string.h"
+#include "lib/printf/printf.h"
#include "fs/fs.h"
#include "fs/ext2.h"
#include "kernel.h"
#include "driver/vesa.h"
#include "fifo.h"
#include "fd.h"
+#include "fs/elf.h"
#include "driver/terminal.h"
#include "driver/screen.h"
#include <sys/stat.h>
@@ -12,6 +14,7 @@
#include <stdbool.h>
#include <stddef.h>
#include "syscalls.h"
+#include "scheduler.h"
// TODO: use includes!!!
uint64_t timer_get_ms();
@@ -57,9 +60,7 @@ int syscall_gettimeofday(struct timeval *tv, struct timezone *tz)
int syscall_lseek(int file,int ptr,int dir)
{
-
kpanic("unhandled syscall: lseek");
-
return 0;
}
diff --git a/kernel/types.h b/kernel/types.h
deleted file mode 100644
index 30abb43..0000000
--- a/kernel/types.h
+++ /dev/null
@@ -1,3 +0,0 @@
-#include <stdint.h>
-
-typedef uint32_t physical_address;
diff --git a/kernel/usermode.c b/kernel/usermode.c
index 7153e29..ee8b9db 100644
--- a/kernel/usermode.c
+++ b/kernel/usermode.c
@@ -4,7 +4,10 @@
#include "kmalloc.h"
#include "asm/usermode.h"
+#include "asm/x86.h"
+#include "scheduler.h"
#include "kernel.h"
+#include "fs/elf.h"
#include <stddef.h>