karim.allah.ahmed@gmail.com

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