diff options
| author | Miguel <m.i@gmx.at> | 2018-10-01 14:37:18 +0200 |
|---|---|---|
| committer | Miguel <m.i@gmx.at> | 2018-10-01 14:37:18 +0200 |
| commit | b518f39803eaaf0b25b95baf951b12ef4d5a727e (patch) | |
| tree | d595877fd1869b280ba33bc2256a3b3da8eb8c95 /kernel/vmem.c | |
| parent | 75433d155c152b809e9f25b1099fc06d6106308b (diff) | |
struggling with interrupts and scheduler
Diffstat (limited to 'kernel/vmem.c')
| -rw-r--r-- | kernel/vmem.c | 18 |
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; |
