summaryrefslogtreecommitdiff
path: root/community/procfs.mdwn
diff options
context:
space:
mode:
Diffstat (limited to 'community/procfs.mdwn')
-rw-r--r--community/procfs.mdwn395
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.
-
-#####&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;4.&nbsp;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.
-
-#####&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;5. &nbsp;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.
-
-#####&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;6. &nbsp;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.
-
-#####&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;7. &nbsp;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&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;25-05-2008&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Completed
- 2. Create Directories for each process with pid directory name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;27-05-2008&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Completed
- 3. Create stat file for each process within this directory and<br/>
- put atleast 1 information into it&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 31-05-2008&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;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/&lt;PID&gt;/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/&lt;PID&gt;/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/&lt;PID&gt;/exe
-
-#####* /proc/&lt;PID&gt;/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/&lt;PID&gt;/statm
-
-* text
-> text (code)
-
-#####Other Per-PID Files
-
-#####* /proc/&lt;PID&gt;/cwd
-
-####The information may be available, but needs to be searched to know where it will be.
-
-#####File - /proc/&lt;PID&gt;/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/&lt;PID&gt;/statm
-
-* share
-> shared pages
-
-* data
-> data/stack
-
-#####Other Per-PID File
-
-#####* /proc/&lt;PID&gt;/root
-
-#####Non Per-PID Files
-
-#####* /proc/stat
-
-#####* /proc/meminfo
-
-####I fear information may not be available.
-
-#####File - /proc/&lt;PID&gt;/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&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;&nbsp;Done
-> ##### pkill&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;&nbsp;Done
-> ##### killall&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;&nbsp;Done
-> ##### pstree&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;&nbsp;Done
-> ##### top&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;&nbsp;Mostly Done (except per-PID shared memory field, and non per-PID caches and buffers field)
-> ##### free&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;&nbsp;Mostly Done (Ditto from above)
-> ##### htop&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;&nbsp;Mostly Done (Ditto again)
-> ##### watch&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;&nbsp;Done
-> ##### tload&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;&nbsp;I think it is done. (Need someone to test it)
-> ##### libgtop&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;&nbsp;In progress
-> ##### gnome-system-moitor&nbsp;&nbsp;&nbsp;-&nbsp;&nbsp;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)
-
-