Commit Graph

17 Commits

Author SHA1 Message Date
Bahadir Balban
276b4643c6 Removed linux linked list dependency. 2009-06-02 13:19:17 +03:00
Bahadir Balban
44bf1db573 Removed the BUG() check on a legitimate l4_unmap return case
When vmas are unmapped before being touched, l4_unmap may return a negative
value if the unmapped area was already faulted. This is normal behaviour
2009-05-12 18:24:31 +03:00
Bahadir Balban
8528e2e1ba Modified the kernel and all tasks with well-formatted printout messages. 2009-05-12 11:25:14 +03:00
Bahadir Balban
cada0f8f18 New UTCB implementation almost working.
- KIP's pointer to UTCB seems to work with existing l4lib ipc functions.
- Works up to clone()
- In clone we mmap() the same UTCB on each new thread - excessive.
- Generally during page fault handling, cloned threads may fault on the same page
  multiple times even though a single handling would be enough for all of them.
  Need to detect and handle this.
2009-05-01 10:11:47 +03:00
Bahadir Balban
63fb907cd0 Made changes to have shared tcb parts in fs0 in preparation for clone()
fs_data and files structures can now be shared in the vfs task.
Currently no means to free shared structures in tcb destruction. Need to add that.
2008-11-09 10:07:24 +02:00
Bahadir Balban
94daebd0c5 Mapping precision fixes on l4_unmap and do_munmap()
l4_unmap now returns -1 if given range was only partially unmapped.

do_munmap() now only unmaps address ranges that have correspondence in
the unmapped vmas. Trying to unmap regions with no correspondent vmas
causes problems in corner cases, e.g. mm0 that tries to mmap its own
address space during initialisation would unmap its whole address space
and fail to execute.
2008-11-08 10:18:35 +02:00
Bahadir Balban
99b7cf2274 for sys_mmap(), added unmapping of existing vmas for the area that is soon to be mmap'ed. 2008-11-07 21:22:50 +02:00
Bahadir Balban
daffc1d084 Split vmas had no objects. Now fixed.
When sys_munmap() splits a vma, the new vma had no copy of the objects
in the original vma. Now we fixed that using a vma_copy_links() function
which can also be used as part of fork().
2008-11-07 20:39:11 +02:00
Bahadir Balban
61751a896b vma_intersect() was erroneous, replaced by a nice and simple set_intersection() routine.
Still testing sys_munmap(). It now correctly spots and unmaps the overlapping vma.
The issue now is that if a split occurs, we forgot to add same objects to new vma.
2008-11-07 20:13:28 +02:00
Bahadir Balban
40ccc642f9 Removed find_vma_byrange completely. It was buggy and useless. 2008-11-07 16:12:44 +02:00
Bahadir Balban
f0348cc356 Fixed an msync() issue.
msync used find_vma_byrange() instead of traversing each vma. Fixed now.
2008-11-07 15:10:19 +02:00
Bahadir Balban
a2d2574eac Added VM_DIRTY flag for file-backed objects and their pages.
Now file flushing in both munmap() and fsync() caters for VM_DIRTY.
Also write_cache_pages() and write faults set this bit on pages and their objects.
2008-10-30 11:09:15 +02:00
Bahadir Balban
4046ad9e3f Added msync(), added handling of munmap/msync to pager main.c 2008-10-29 19:22:01 +02:00
Bahadir Balban
51af9968c2 Added flushing of file pages to do_munmap() for file-backed mappings. 2008-10-29 19:03:19 +02:00
Bahadir Balban
94a126dcde munmap compiling.
do_munmap currently shrinks, splits, destroys vmas and unmaps the given
virtual address range from the task. Unmapped pages may go completely unused
but page reclamation will be done in another part of the pager rather than
directly on the munmap instance.
2008-10-29 16:59:06 +02:00
Bahadir Balban
3421a29693 Few undecided changes on munmap.c 2008-10-29 14:02:21 +02:00
Bahadir Balban
d5b5560bfa Moved munmap functions to munmap.c yet to be modified. 2008-10-27 15:07:06 +02:00