[[!meta copyright="Copyright © 2008, 2012 Free Software Foundation, Inc."]]

[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no Invariant
Sections, no Front-Cover Texts, and no Back-Cover Texts.  A copy of the license
is included in the section entitled [[GNU Free Documentation
License|/fdl]]."]]"""]]

[[!meta title="Karim Allah Ahmed"]]

<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`|microkernel/mach/interface/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