From 34c4a90794e78b97e4bd24f09c457d5e171e53f4 Mon Sep 17 00:00:00 2001 From: Miguel Date: Sat, 29 Sep 2018 01:51:16 +0200 Subject: first prototype of compositing window manager --- kernel/vmem.c | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) (limited to 'kernel/vmem.c') diff --git a/kernel/vmem.c b/kernel/vmem.c index 1eaf291..883d56d 100644 --- a/kernel/vmem.c +++ b/kernel/vmem.c @@ -299,7 +299,7 @@ pdirectory* vmem_kernel_dir() 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) + vmem_add_remap(dir,fb_addr,VMEM_FRAMEBUFFER,VMEM_FRAMEBUFFER_PAGES,false);//32megs should be enough for 4k (think about pitch) vmem_add_remap(dir,local_apic_addr,VMEM_LAPIC,1,false); //apic addr should be at pagestart, right? TODO: check. vmem_add_remap(dir,io_apic_addr,VMEM_IOAPIC,1,false); @@ -312,6 +312,7 @@ pdirectory* vmem_kernel_dir() vmem_add_alloc(dir,VMEM_USER_ENV,1,true); vmem_add_alloc(dir,VMEM_USER_NEWLIB,1,true); vmem_add_alloc(dir,VMEM_USER_STACK_TOP-4096*VMEM_USER_STACK_PAGES,VMEM_USER_STACK_PAGES,true); + vmem_add_alloc(dir,VMEM_USER_FRAMEBUFFER,VMEM_USER_FRAMEBUFFER_PAGES,true); /// each new process gets a 640x480x32 area return dir; } @@ -336,7 +337,6 @@ void vmem_free_space_dir(pdirectory *dir,bool stack_only) for(int j=0;j<1024;j++) { - if(virt>=VMEM_FRAMEBUFFER&&virtm_entries[j]; uint32_t src_phys=pd_entry_get_frame(&src_pd); @@ -367,6 +367,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 vmem_add_alloc(dir,VMEM_USER_PROG,VMEM_USER_PROG_PAGES,true); vmem_add_alloc(dir,VMEM_USER_ENV,1,true); } @@ -391,8 +392,6 @@ pdirectory* vmem_new_space_dir(pdirectory *copy_dir,bool stack_only) for(int j=0;j<1024;j++) { - if(virt>=VMEM_FRAMEBUFFER&&virtm_entries[j]; uint32_t dst_pd=dst_table->m_entries[j]; @@ -401,7 +400,13 @@ pdirectory* vmem_new_space_dir(pdirectory *copy_dir,bool stack_only) if(src_pd) { - if(stack_only&&(virt==VMEM_USER_ENV||(virt>=VMEM_USER_PROG&&virt=VMEM_USER_PROG&&virt=VMEM_USER_FRAMEBUFFER&&virt