[[meta copyright="Copyright © 2008 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="GNU/Linux compatible procfs"]] [[!toc ]] ---- Project Name ---- GNU/Linux compatible procfs pseudo-filesystem ------ Project Description ---- I wish to provide a sophisticated procfs pseudo-filesystem to “the Hurd”. An implementation of /proc pseudo-filesystem already exists in hurdextras repository. After skimming through the code it is clear that it needs a lot of rework and tuning. Experiences from GNU/Linux have proven procfs to be a very useful facility in implementing many of the process management tools. So the goal of this project is to rework on the existing procfs on “the Hurd” so that its not only reliable and robust but also more importantly it is fully compatible with the GNU/Linux procfs. The project thus aims at making the GNU/Linux process management tools like top, sysctl, kill, skill, nice, snice, pgrep, free, tload, uptime, fuser, killall, pidof, pstree, etc., to run out of the box. ------ Mentor ---- Olaf Buddenhagen ------ Project Schedule ---- #####     1. Initial preparation and migration (Community Bonding Period: has already started – May 25th) This phase involves improving my translator programming skills by gaining hands-on experience in it and becoming well versed in it. I will also go through the Hurd code to understand its architecture in depth and will read documentations related to obtaining process related information in Hurd. This phase also involves the migration of existing procfs to use libnetfs. #####     2. Analysis and Design (May 26th – June 11th ) This phase involves the analysis of previous migration. Also involves interacting with the mentor, the Hurd community and other people involved in development of ps. tools to draw the exact design of the proposed procfs including the algorithms required for coding. #####     3.  Coding Stage I (June 12th – June 22nd ) Finishing up the migration to libnetfs based on the finalized design and making necessary changes to the existing procfs. Coding up to /proc//exe in the features list. #####     4. Coding Stage II (June 23rd – July 13th) Involves coding of the features from /proc//environ, up to /proc//maps. These contain most of the information required for ps. tools and hence form the heart of the project. Will be completed by mid-term evaluation deadline. #####     5.  Coding Stage III (July 14th – July 26th ) Coding the rest of the features in the list including any necessary features that may be added in the analysis phase. #####     6.  Final Testing and evaluation (July 27th – August 8th ) Closely interacting with the community and requesting them to help me in overall testing and reviewing and making changes as per their suggestions. Also involves testing with the ps. tools and consolidating the documentation. #####     7.  Packaging and Wrap-up (August 9th - August 18th ) Final phase of testing and fixing remaining bugs. Working with the community to merge the project with the CVS HEAD of Hurd. Documentation reviews, making necessary changes as per the suggestions and wrapping up the documentation. ------ Deliverables ---- 1. /proc filesystem that uses libnetfs. Using this library makes it easier for implementing a large set of functionalities and hence makes the implementation robust. 2. The core GNU/Linux compatible /proc filesystem with functionalities to support and provide information for ps. tools like procps, psmisc etc. Non-code deliverables include an exhaustive Documentation. This documents the code of the Hurd's procfs which explains in detail the implementation of each of the functionalities of procfs implemented during the course of this project. ------ Code Repository ---- [http://github.com/madhusudancs/procfs/tree/master](http://github.com/madhusudancs/procfs/tree/master) Clone URL: [git://github.com/madhusudancs/procfs.git](git://github.com/madhusudancs/procfs.git) ------ Progress ---- 1. Packages Ported: [http://www.madhusudancs.info/parted-hurdi386 parted-1.7.1] 2. Packages Porting in progress: autogen_1:5.9.4-1. Error installing texlive-bin. Error tracked to some post installation scripts of texlive-bin. Problem seems to be in fmutil. Trying to debug. 3. Have to start coding libnetfs skeleton for procfs translator. **Target for next week** Task To be completed by 1. Finish Defining the necessary netfs call backs                                 25-05-2008 2. Create Directories for each process with pid directory name         27-05-2008 3. Create stat file for each process within this directory and
put atleast 1 information into it                                                          31-05-2008 **Documentations Read/Reading** 1. [Hurd Hacking Guide](http://www.gnu.org/software/hurd/hacking-guide/hhg.html) (Have Concentrated mainly on Translator part) 2. [Linux Kernel Implementation of procfs](http://users.sosdg.org/~qiyong/lxr/source/Documentation/filesystems/proc.txt) **Code Being Read** 1. libps 2. libnetfs 3. [procfs implementation in Linux kernel](http://users.sosdg.org/~qiyong/lxr/source/fs/proc/) ------ Code Updates ---- 1. May, 14, 2008 2. May, 18, 2008 3. May, 28, 2008 4. June, 1, 2008 5. June, 2, 2008 6. June, 4, 2008 7. June, 5, 2008 ------ Contact Details ---- Name : Madhusudan.C.S Email : [madhusudancs@gmail.com](mailto:madhusudancs@gmail.com) Blog : [http://www.madhusudancs.info](http://www.madhusudancs.info/) Detailed proposal: [http://www.madhusudancs.info/gnu-hurd-procfs-proposal](http://www.madhusudancs.info/gnu-hurd-procfs-proposal) Google Summer of Code Site Link: [Abstract](http://code.google.com/soc/2008/hurd/appinfo.html?csaid=D2E9266819D2EEF9)