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 "[gnu_src]/kern/sched_prim.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/tumblr_l5ie1bb2u91qbjipvo1_500.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 posix_madvise(), posix_fadvise, and readahead() in glibc.
Update the documentation of GNU Mach with the new interfaces.
Revise and finish the code related to default_memory_manager 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