• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
20070317 procfs slide
 

20070317 procfs slide

on

  • 1,113 views

 

Statistics

Views

Total Views
1,113
Views on SlideShare
1,107
Embed Views
6

Actions

Likes
0
Downloads
7
Comments
0

1 Embed 6

http://www.slideshare.net 6

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    20070317 procfs slide 20070317 procfs slide Presentation Transcript

    • Using and Programming Proc filesystem from internet ...
    • Content ● What's Procfs ● Basic useness of Procfs ● Programming Procfs ● Example source code ● Conclusion
    • What is Procfs ● In its simplest form procfs provides file-system abstraction for processes, presenting information about processes, their ex ecution environment, resource utilization etc. as files. ● The original design goal of procfs was to make debugger impl ementation easier. ● Systems like Linux have exposed a lot of other system interf aces and information through procfs ● There are Linux system utilities that essentially cat files in procfs!
    • What is Procfs (cont.) ● It is a virtual file system – Is a special file system in the linux kernel. – It exists only in memory. – Is a virtual file system that is not associated with a block device but exists only in memory. – allows programs in the user space to access to certain info rmation from the kernel.
    • What is Procfs (cont.) ● It is an abstraction allowing – access information on – configure the kernel ● It can be mounted by # mount -t proc proc /mnt Now procfs is mounted on /mnt, same to /proc
    • Basic useness of Procfs ● /proc/sys are sysctl files – They do not belong to procfs – Managed by different APIs ● Number named Dirs – PID as name – Appear and disappear as processes are created, finish
    • Basic useness of Procfs (cont.) ● Structure – cmdline : argument list, null-separated strings – cwd : symbolic link to the current working directory – environ : environment for the process – exe : a symbolic link containing the actual path name of the executed command – fd : a subdirectory containing one entry for each file which the process has open (file descriptor), a symbolic link to the actual file) – maps : currently mapped memory regions and their access permissions – root : points to the file system root, e.g / – stat : information about the process (used by ps) – statm : information about memory status in pages – status : much of the information in stat and statm in a more human readable/parsable format
    • Basic useness of Procfs (cont.) ● /proc/self: symbolic link to the current process ● /proc/cpuinfo: a collection of CPU and system architecture depen dent items, for each supported architecture a different list ● /proc/devices: listing of major numbers and device groups ● /proc/pci: listing of all PCI devices found during kernel i nitialization and their configuration (lspci command) ● /proc/tty/driver/serial: information on serial ports ● /proc/version: information on the kernel version – /proc/sys/kernel/ostype – /proc/sys/kernel/osrelease – /proc/sys/kernel/version
    • Basic useness of Procfs (cont.) ● /proc/sys/kernel/hostname: the name of the machine ● /proc/sys/kernel/domainname: the name of the domain ● /proc/meminfo: information on memory usage ● /proc/loadavg: load average numbers give information on the workload: – the number of jobs in the run queue (state R) or waiting for disk I/O (state D) averaged over 1, 5, and 15 minutes – PID of the last process being executed ● /proc/uptime: two pieces of information on the uptime of the system (seconds), and the amount of time spent in idle process (seconds) – Same information as uptime
    • Programming Procfs ● Program as kernel module ● #includeu <linux/proc_fs.h> ● struct proc_dir_entry* proc_mkdir (const char* name,struct proc_dir_entry* parent); ● struct proc_dir_entry* create_proc_entry (const char* name, mode_t mode,struct proc_dir_entry* parent); ● struct proc_dir_entry* proc_symlink (const char* name,struct proc_dir_entry* parent, const char *dest); ● void remove_proc_entry (const char *name, struct proc_dir_entry *parent);
    • Programming Procfs (cont.) ● procfs works with call back functionsfor files: functions that are called when a specific file is being read or written. ● Such functions have to be initialized by setting the file_operations member in the struct proc_dir_entry* that the function create_proc_entry returned. ● For read only proc file, call create_proc_read_entry is enough.
    • Programming Procfs (cont.) ● define read, write, open, release methods for your proc file see example source code. ● Original procfs can not pass data larger than 1 page. In order to pass large data, you should define a sequence method. ● Other detailed example, see the source code.
    • Example source code ● kernel module frame work. ● read the source code for each method of proc fs. ● build it ● insmod into kernel ● cd /proc, see /proc/foo and /proc/foo/foo ● try read/write permission ● be root user ● try read/write permission ● rmmod the kernel module
    • Conclusion ● Its candidate is sysfs. ● But Procfs is still very useful, because it is simple, and lot of legacy software need procfs.
    • Thank you ! Q & A