[Kos-cvs] kos/modules/x86/mm Makefile,1.5,1.6 _vmap.c,1.27,1.28
thomas at kos.enix.org
thomas at kos.enix.org
Wed Dec 29 20:28:53 CET 2004
- Previous message: [Kos-cvs] kos/modules/vmm _vmm.h, 1.19, 1.20 _vmm_as.c, 1.25,
1.26 _vmm_map.c, 1.6, 1.7 vmm.c, 1.19, 1.20 vmm.h, 1.27, 1.28
- Next message: [Kos-cvs] kos/modules/x86/task _thread_cpu_context.c,1.17,1.18
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Update of /home/kos/cvs/kos/modules/x86/mm
In directory the-doors:/tmp/cvs-serv1745/modules/x86/mm
Modified Files:
Makefile _vmap.c
Log Message:
2004-12-29 Thomas Petazzoni <thomas at crazy.kos.nx>
* modules/x86/task/_thread_cpu_context.c
(init_user_thread_context): VMM functions now work with address
spaces.
* modules/x86/mm/_vmap.c (arch_do_unmap_virtual_page): Unmapping a
page that hasn't any corresponding PT is not an error. So, the
ASSERT_FATAL() was removed, and replaced by a test that returns
SUCCESS if there's not PT associated to the page.
* modules/vmm/vmm.h: VMM functions now operate on address space
not on teams.
* modules/vmm/vmm.c: Try to limit the exports only to the modules
that really need them.
* modules/vmm/_vmm_map.c: VMM functions now operate on address space,
not on teams.
* modules/vmm/_vmm_as.c: VMM functions now operate on address space,
not on teams. Check the return of kmutex_lock and kmutex_unlock
for safety.
* modules/vmm/_vmm.h: VMM functions now operate on address space,
not on teams.
* modules/test/vmm_test.c: A couple of updates, whitespaces
cleanup. In the hope of the stress test to pass, one day, maybe
;-)
* modules/test/test.c: Add the new mutex test.
* modules/test/sem_test.c: Semaphore test update. Less kernel
threads are created, less time is spent in usleep() and
create_kernel_thread() return is checked to make sure all kernel
threads are correctly created.
* modules/test/mutex_test.c: New mutex test.
* modules/test/_test.h: New mutex_test() function.
* modules/test/Makefile (OBJS): New mutex_test.c file.
* modules/task/_task_kstack.c (unallocate_cpl0_stack): Update
calls to unmap_virtual_range() according to new prototype.
* modules/pci/_pci.c (_pci_scan_bus): Not initializing pca
(pci_config_address) to 0 is not good ! Now, PCI devices are
correctly detected under Bochs and Qemu. Even a network adapter,
along with its I/O space and IRQ configuration can be detected !
* modules/lib/std/stdlib.h (printk): printk is re-defined as
ktty_printk, and not bochs_printk. By the way, I find this #define
quite ugly.
* modules/kos/wolfgang.c (primary_thread): Testing, testing,
debugging, debugging, testing...
* modules/kitc/_kmutex.c: Changed k_ui32_t to
spinlock_flags_t. Added some debugging messages and assertions.
* MkVars (KOSSYSPATH): The path to the kos-sys CVS module, in
which the hard disk image is stored. The default value is
../kos-sys/, but it can be overriden using the .mkvars file.
* Makefile (qemu): Instead of an hard-coded path to the hard disk
image, we use a KOSSYSPATH variable that can be overriden in the
.mkvars file.
Index: Makefile
===================================================================
RCS file: /home/kos/cvs/kos/modules/x86/mm/Makefile,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -d -r1.5 -r1.6
--- Makefile 28 Dec 2004 18:45:02 -0000 1.5
+++ Makefile 29 Dec 2004 19:28:51 -0000 1.6
@@ -1,5 +1,5 @@
OBJS= _gdt.o _vmap.o _team_mm_context.o _pgflt.o _rmap.o mm.o
-DEBUG_LEVEL=0
+DEBUG_LEVEL=1
all: arch_mm.ro
Index: _vmap.c
===================================================================
RCS file: /home/kos/cvs/kos/modules/x86/mm/_vmap.c,v
retrieving revision 1.27
retrieving revision 1.28
diff -u -d -r1.27 -r1.28
--- _vmap.c 28 Dec 2004 18:45:02 -0000 1.27
+++ _vmap.c 29 Dec 2004 19:28:51 -0000 1.28
@@ -162,6 +162,11 @@
return;
}
+ DEBUG_PRINT1("PD index in PD table : %d => PD 0x%x <=> PD 0x%x ?\n",
+ dest_mm_ctxt->pd_index_in_pd_table,
+ PD_ANY_TEAM(dest_mm_ctxt->pd_index_in_pd_table),
+ dest_mm_ctxt->pd);
+
/* Make sure we are mapping the correct foreign PD */
CONCEPTION_ASSERT((PD_ANY_TEAM(dest_mm_ctxt->pd_index_in_pd_table)
& PAGE_ADDR_MASK) == dest_mm_ctxt->pd);
@@ -593,11 +598,16 @@
ASSERT_FATAL(result == ESUCCESS);
- ASSERT_FATAL(IS_PRESENT(pd[va_to_pde(vaddr)]));
-
DEBUG_PRINT3("[arch_do_unmap_virtual_page] Unmapping with pd_index_in_pd_table = %d (0x%x)\n",
pd_index_in_pd_table, dest_mm_ctxt);
+ /* No PT for this page => page is not present nor swapped, so it's
+ already unmapped */
+ if(! IS_PRESENT(pd[va_to_pde(vaddr)]))
+ {
+ return ESUCCESS;
+ }
+
/* Page is physically present in RAM (aka, not swapped) */
if(IS_PRESENT(pt[va_to_pte(vaddr)]))
{
- Previous message: [Kos-cvs] kos/modules/vmm _vmm.h, 1.19, 1.20 _vmm_as.c, 1.25,
1.26 _vmm_map.c, 1.6, 1.7 vmm.c, 1.19, 1.20 vmm.h, 1.27, 1.28
- Next message: [Kos-cvs] kos/modules/x86/task _thread_cpu_context.c,1.17,1.18
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the Kos-cvs
mailing list