diff options
Diffstat (limited to 'community/procfs.mdwn')
-rw-r--r-- | community/procfs.mdwn | 395 |
1 files changed, 0 insertions, 395 deletions
diff --git a/community/procfs.mdwn b/community/procfs.mdwn deleted file mode 100644 index 1139c718..00000000 --- a/community/procfs.mdwn +++ /dev/null @@ -1,395 +0,0 @@ -[[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/<pid>/exe in the features list. - -##### 4. Coding Stage II (June 23rd – July 13th) - - Involves coding of the features from /proc/<pid>/environ, up to - /proc/<pid>/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 Status Now - - 1. Finish Defining the necessary netfs call backs 25-05-2008 Completed - 2. Create Directories for each process with pid directory name 27-05-2008 Completed - 3. Create stat file for each process within this directory and<br/> - put atleast 1 information into it 31-05-2008 In Progress - -**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/) -4. ftpfs (In Hurd main) -5. cvsfs (In Hurd extras) -6. xmlfs (In Hurd extras) -7. httpfs (In Hurd extras) -8. gopherfs (In Hurd extras) -9. libfuse (In Hurd extras) -10. procfs (libtrivfs based, In Hurd extras) - ------- - - Post Mid-Term Road Map ----- - - -####Already Implemented - -#####File - /proc/<PID>/stat - -* pid - -* comm - -* state - -* ppid - -* pgrp - -* session - -* tty_nr - -* tpgid - -* minflt -> The number of minor faults the process has made which have not required loading a memory page -> from disk. - -* majflt -> The number of major faults the process has made which have required loading a memory page from -> disk. - -* utime -> The number of jiffies that this process has been scheduled in user mode. - -* stime -> The number of jiffies that this process has been scheduled in kernel mode. - -* priority -> The standard nice value, plus fifteen. The value is never negative in the kernel. - -* num_threads -> Number of threads in this process. - -* starttime -> The time in jiffies the process started after system boot. - -* vsize -> Virtual memory size in bytes. - -* rss -> Resident Set Size: number of pages the process has in real memory, minus 3 for administrative -> purposes. This is just the pages which count towards text, data, or stack space. This does not -> include pages which have not been demand-loaded in, or which are swapped out. - -* itrealvalue -> The time in jiffies before the next SIGALRM is sent to the process due to an interval timer. - -* nswap -> Number of pages swapped (not maintained). - -* cnswap -> Cumulative nswap for child processes (not maintained). - -* flags -> PF_* fields defined in (Not Linux compatible, but nearly says the something Linux says) - -* nice -> The nice value ranges from 19 to -19. - -* cutime -> The number of jiffies that this process’s waited-for children have been scheduled in user -> mode. - -* cstime -> The number of jiffies that this process’s waited-for children have been scheduled in kernel mode. - -#####File - /proc/<PID>/statm - -* size -> total program size - -* resident -> resident set size - -* lib -> library - -* dt -> dirty pages - -####I already know the where the information is exactly available. - -#####Other Per-PID Files - -#####* /proc/<PID>/exe - -#####* /proc/<PID>/environ - -#####Non Per-PID Files - -#####* /proc/version - - -####I know where the information is available roughly, but need to look in detail to extract the exact information. - -* cminflt -> The number of minor faults that the process’s waited-for children have made. - -* cmajflt -> The number of major faults that the process’s waited-for children have made. - -* signal -> The bitmap of pending signals. - -* blocked -> The bitmap of blocked signals. - -* sigignore -> The bitmap of ignored signals. - -* sigcatch -> The bitmap of caught signals. - -* policy -> Scheduling policy. - -#####File - /proc/<PID>/statm - -* text -> text (code) - -#####Other Per-PID Files - -#####* /proc/<PID>/cwd - -####The information may be available, but needs to be searched to know where it will be. - -#####File - /proc/<PID>/stat - -* rlim -> Current limit in bytes on the rss of the process (usually 4294967295 on i386). - -* startcode -> The address above which program text can run. - -* endcode -> The address below which program text can run. - -* startstack -> The address of the start of the stack. - -* kstkesp -> The current value of esp (stack pointer), as found in the kernel stack page for the process. - -* kstkeip -> The current EIP (instruction pointer). - -* exit_signal -> Signal to be sent to parent when we die. - -#####File - /proc/<PID>/statm - -* share -> shared pages - -* data -> data/stack - -#####Other Per-PID File - -#####* /proc/<PID>/root - -#####Non Per-PID Files - -#####* /proc/stat - -#####* /proc/meminfo - -####I fear information may not be available. - -#####File - /proc/<PID>/stat - -* wchan -> This is the "channel" in which the process is waiting. It is the address of a system call, and -> can be looked up in a namelist if you need a textual name. (If you have an up-to-date -> /etc/psdatabase, - -* processor -> CPU number last executed on. - -* rt_priority -> Real-time scheduling priority - -* delayacct_blkio_ticks -> Aggregated block I/O delays, measured in clock ticks (centiseconds). - - -###Newly added to Roadmap(but these were the original goals of the project) - -#### procps tools need to be ported so that they run on top of the procfs - -> ##### pgrep - Done -> ##### pkill - Done -> ##### killall - Done -> ##### pstree - Done -> ##### top - Mostly Done (except per-PID shared memory field, and non per-PID caches and buffers field) -> ##### free - Mostly Done (Ditto from above) -> ##### htop - Mostly Done (Ditto again) -> ##### watch - Done -> ##### tload - I think it is done. (Need someone to test it) -> ##### libgtop - In progress -> ##### gnome-system-moitor - In progress - - - ------- - - 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 (3 commits, 00:30 HRS, 02:30 HRS, 11:15HRS, all in IST) -8. June, 9, 2008 -9. June, 19, 2008 (Targets 1 and 2 successfully accomplished. Duration between the commits became inevitably longer because of the large amount of time spent on debugging the code.) - ------- - - 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) - - |