Egypt.
GSoC: 2010 Project
Goal:
Roadmap
Progress
Preparation Phase:
Understanding how gnumach ticks [ at least the parts related to the project ]
28th of April - 5th of May:
- Reading the paging in code in gnumach.
- Reading the libpager code, and the multipage patch.
- Reading the translators code, only the part implementing the external pager interface.
5th of May - 12th of May:
- Reading the paging out code in gnumach.
- Understanding IPC in gnumach and reading some code.
- Reading "[gnusrc]/kern/schedprim.c"
12th of May - 19th of May:
- Finishing the leftover code in some of the previous phases.
- Building a big and a more clear picture of how gnumach ticks [ wiring things together ].
19th of May - 23th of May:
- Off [College related-activities].
Coding Phase:
Stage 1:
24th of May - 26th of May:
- Read the freeBSD multipages implementation.
- Basic Modifications of gnumach's code.
- err.. scratch this step. It's easier to work on porting OSF Mach's implementation of multi-pages.
26th of May - 28th of May:
port OSF Mach's clustered pagein during 'page faults' ( [src]/vm/vm_fault.c )
port "cluster_size" attribute of memory objects from OSF Mach.
port "behavior" attribute of
vm map
entries from OSF Mach.
29th of May - 2nd of June:
- Off ( Oral Exams )
2nd of May - 4th of June:
- Finish the port of the previous phase.
4th of June - 4th of July:
- Off ( Final Exams ).
Stage 2:
5th of July - 7th of July:
Add "cluster_size" attribute to Neal Walfield's patch for the pager library.
Stage 3:
8th of July - 15th of July:
Patch the diskfs library to use the new pager library API.
Patch the ext2fs disk paging related routines to use the new pager library API.
16th of July - 19th of July:
- Testing the current patches.
- Stuck in compiling code ( http://30.media.tumblr.com/tumblrl5ie1bb2u91qbjipvo1500.jpg ) , so I started reading some documentation meanwhile ( [0] , [1] ).
Stage 4:
19th of July - 31th of June:
- Check OSF Mach's mach-defpager.
- Patch (or port OSF Mach's default pager) HURD's mach-defpager to use the new gnumach's RPCs.
Stage 5:
1st of August - 10th of August:
- Testing the ported translators.
- Fixing the boot bit-mapped memory allocator patch.
Stage 1:
- clustered_paging.diff patch http://lists.gnu.org/archive/html/bug-hurd/2010-06/msg00024.html
TODO:
Update the headers of the modified files in GNU Mach to reflect the fact that they were ported from OSF Mach.
Implement posixmadvise(), posixfadvise, and readahead() in glibc.
Update the documentation of GNU Mach with the new interfaces.
Revise and finish the code related to defaultmemorymanager management in GNU Mach. [done]
Port the vm_page "clustered" attribute. [ to mark that the page wasn't requested but was paged-in as part of the cluster ].
Readings
[0] http://www.nongnu.org/ext2-doc/ext2.html [1] http://kerneltrap.org/node/452