summaryrefslogtreecommitdiff
path: root/kernel/vmem.c
diff options
context:
space:
mode:
authorMiguel <m.i@gmx.at>2018-10-01 14:37:18 +0200
committerMiguel <m.i@gmx.at>2018-10-01 14:37:18 +0200
commitb518f39803eaaf0b25b95baf951b12ef4d5a727e (patch)
treed595877fd1869b280ba33bc2256a3b3da8eb8c95 /kernel/vmem.c
parent75433d155c152b809e9f25b1099fc06d6106308b (diff)
struggling with interrupts and scheduler
Diffstat (limited to 'kernel/vmem.c')
-rw-r--r--kernel/vmem.c18
1 files changed, 16 insertions, 2 deletions
diff --git a/kernel/vmem.c b/kernel/vmem.c
index f6592b3..a1ee0e2 100644
--- a/kernel/vmem.c
+++ b/kernel/vmem.c
@@ -343,7 +343,13 @@ void vmem_free_space_dir(pdirectory *dir,bool stack_only)
if(src_pd)
{
+ if(virt>=VMEM_USER_FRAMEBUFFER&&virt<VMEM_USER_FRAMEBUFFER+VMEM_USER_FRAMEBUFFER_PAGES*4096)
+ {
+ }
+ else
+ {
mem_free_block(src_phys);
+ }
}
virt+=4096;
@@ -368,7 +374,7 @@ pdirectory* vmem_new_space_dir(pdirectory *copy_dir,bool stack_only)
if(!stack_only)
{
- vmem_add_alloc(dir,VMEM_USER_FRAMEBUFFER,VMEM_USER_FRAMEBUFFER_PAGES,true); /// each new process gets a 640x480x32 area
+ // temp disable // vmem_add_alloc(dir,VMEM_USER_FRAMEBUFFER,VMEM_USER_FRAMEBUFFER_PAGES,true); /// each new process gets a 640x480x32 area
vmem_add_alloc(dir,VMEM_USER_PROG,VMEM_USER_PROG_PAGES,true);
vmem_add_alloc(dir,VMEM_USER_ENV,1,true);
}
@@ -405,7 +411,7 @@ pdirectory* vmem_new_space_dir(pdirectory *copy_dir,bool stack_only)
(
virt==VMEM_USER_ENV
||(virt>=VMEM_USER_PROG&&virt<VMEM_USER_PROG+VMEM_USER_PROG_PAGES*4096)
- ||(virt>=VMEM_USER_FRAMEBUFFER&&virt<VMEM_USER_FRAMEBUFFER+VMEM_USER_FRAMEBUFFER_PAGES*4096)
+// ||(virt>=VMEM_USER_FRAMEBUFFER&&virt<VMEM_USER_FRAMEBUFFER+VMEM_USER_FRAMEBUFFER_PAGES*4096)
)
)
{
@@ -414,6 +420,13 @@ pdirectory* vmem_new_space_dir(pdirectory *copy_dir,bool stack_only)
}
else
{
+ if(virt>=VMEM_USER_FRAMEBUFFER&&virt<VMEM_USER_FRAMEBUFFER+VMEM_USER_FRAMEBUFFER_PAGES*4096)
+ {
+ // and for now we all share this! //
+ vmem_add_remap(dir,src_phys,virt,1,true);
+ }
+ else{
+
//klog("copy virt: %x / phys: %x -> %x",virt,src_phys,dst_phys);
@@ -427,6 +440,7 @@ pdirectory* vmem_new_space_dir(pdirectory *copy_dir,bool stack_only)
x86_invlpg(VMEM_COPY_PAGE+4096); // refresh TLB
memcpy(VMEM_COPY_PAGE+4096,VMEM_COPY_PAGE,4096);
+ }
}
}
virt+=4096;