summaryrefslogtreecommitdiff
path: root/kernel
diff options
context:
space:
mode:
authorMiguel <m.i@gmx.at>2018-09-28 19:24:18 +0200
committerMiguel <m.i@gmx.at>2018-09-28 19:24:18 +0200
commitbe3d9f2cf2a8cfe670eac6df255db55ff9205c49 (patch)
treed6479240409398b0cd9de47b3728e7530d94a106 /kernel
parent5f6c2bcf0d2f9c416134aba224d90a605f216818 (diff)
started workin on foolish window composer
Diffstat (limited to 'kernel')
-rw-r--r--kernel/kernel.c15
-rw-r--r--kernel/kernel.h6
-rw-r--r--kernel/syscalls.c2
-rw-r--r--kernel/vmem.c2
4 files changed, 22 insertions, 3 deletions
diff --git a/kernel/kernel.c b/kernel/kernel.c
index e7bef1d..e37f76f 100644
--- a/kernel/kernel.c
+++ b/kernel/kernel.c
@@ -13,6 +13,7 @@
#include "vmem.h"
//-- clean below headers --//
+#include "compositor.h"
#include "sysfs.h"
#include "pci.h"
#include "e1000.h"
@@ -39,6 +40,12 @@
#include "driver/vesa.h"
#include "asm_pit.h"
+//ugly?
+extern uint32_t kernel_end[];
+extern uint32_t kernel_start[];
+
+//TODO: we fear overrun of the initial buffer!
+//
/* F00L 0S Entry point (called directly from asm/multiboot.asm */
void kernel_main(uint32_t eax,uint32_t ebx)
{
@@ -54,6 +61,11 @@ void kernel_main(uint32_t eax,uint32_t ebx)
klog("Version: git-commit: %s",GIT_REVISION);
klog("======================================");
+ uint32_t *top_kernel_vmem=VMEM_KERNEL+VMEM_KERNEL_PAGES*4096;
+ klog("The Kernel was loaded at: 0x%08X - 0x%08X",kernel_start,kernel_end);
+ klog("0x00000000 - 0x%08X will get identity mapped", VMEM_KERNEL_PAGES*4096);
+ if(kernel_end>=top_kernel_vmem)kpanic("kernel to big. increase VMEM_KERNEL_PAGES");
+
// -- DISABLE LEGACY PIC -- //
klog("Remapping & Disabling Programmable Interrupt Controller (PIC) ...");
fixme("io_wait & spurious interrupts");
@@ -122,6 +134,9 @@ void kernel_main(uint32_t eax,uint32_t ebx)
uint32_t addr= ext2_inode_blockstart( VMEM_EXT2_RAMIMAGE,inode,0);
vesa_init(cfg_multiboot,addr);
+ klog("Compositor init ...");
+ compositor_init(cfg_multiboot->framebuffer_width,cfg_multiboot->framebuffer_height,cfg_multiboot->framebuffer_pitch);
+
// -- STD STREAMS -- //
klog("Standard Streams init ...");
fd_init_std_streams(0,cfg_multiboot->framebuffer_type!=2);
diff --git a/kernel/kernel.h b/kernel/kernel.h
index 5546071..1dcfb60 100644
--- a/kernel/kernel.h
+++ b/kernel/kernel.h
@@ -22,6 +22,9 @@ REFERENCES
#ifndef FOOLOS_CONFIG_H
#define FOOLOS_CONFIG_H
+#define VESA_MAX_WIDTH 1920
+#define VESA_MAX_HEIGHT 1080
+
//#define FOOLOS_UNIT_TESTING // Run Unit Tests
//#define FOOLOS_LOG_OFF // Turn off logging (disables serial port alltogether)
//#define FOOLOS_COLORLESS // Turn off colors in log
@@ -57,11 +60,12 @@ REFERENCES
// minimal space between user and kernel pages 1024 pages!
#define VMEM_KERNEL 0x00000000 // 8192 pages (32megs) / identity mapped
+#define VMEM_KERNEL_PAGES (1024*8)
// VMEM_KERNEL END 0x02000000
#define VMEM_USER_ENV 0x07000000 // 1 page / per user process
-#define VMEM_USER_PROG_PAGES 256
+#define VMEM_USER_PROG_PAGES 256*16
#define VMEM_USER_PROG 0x08048000 // ? pages / per user process (usual entry: 0x8048080)
#define VMEM_USER_STACK_PAGES 4 // 4 pages / per thread
diff --git a/kernel/syscalls.c b/kernel/syscalls.c
index 01bc7a5..5bdb76e 100644
--- a/kernel/syscalls.c
+++ b/kernel/syscalls.c
@@ -134,7 +134,7 @@ int syscall_gettimeofday(struct timeval *tv, struct timezone *tz,uint32_t none1,
{
uint64_t t=timer_get_ms();
tv->tv_sec=t/1000+2*3600; // add gmt+2
- tv->tv_usec=0;//t-tv->tv_sec*1000;
+ tv->tv_usec=1000*(t%1000);
}
// tz struct is obsolote
diff --git a/kernel/vmem.c b/kernel/vmem.c
index 4af596d..1eaf291 100644
--- a/kernel/vmem.c
+++ b/kernel/vmem.c
@@ -296,7 +296,7 @@ pdirectory* vmem_kernel_dir()
pdirectory* dir = vmem_clean_dir();
- vmem_add_identity(dir,0,1024*8,false);//identity map first 32 megs...
+ vmem_add_identity(dir,VMEM_KERNEL,VMEM_KERNEL_PAGES,false);//identity map first 32 megs...
vmem_add_identity(dir,e1000_addr,32,false);//identity map 32 pages for e1000
vmem_add_remap(dir,fb_addr,VMEM_FRAMEBUFFER,VMEM_FRAMEBUFFER_PAGES,true);//32megs should be enough for 4k (think about pitch)