diff -u --recursive --new-file v2.2.0/linux/CREDITS linux/CREDITS --- v2.2.0/linux/CREDITS Wed Jan 20 23:14:03 1999 +++ linux/CREDITS Thu Jan 28 11:25:04 1999 @@ -49,12 +49,12 @@ N: Erik Andersen E: andersee@debian.org -W: http://www.inconnect.com/~andersen +W: http://www.xmission.com/~andersen P: 1024/FC4CFFED 78 3C 6A 19 FA 5D 92 5A FB AC 7B A5 A5 E1 FF 8E D: Maintainer of ide-cd and Uniform CD-ROM driver, D: ATAPI CD-Changer support, Major 2.1.x CD-ROM update. S: 4538 South Carnegie Tech Street -S: West Valley City, Utah 84120 +S: Salt Lake City, Utah 84120 S: USA N: H. Peter Anvin diff -u --recursive --new-file v2.2.0/linux/Documentation/proc.txt linux/Documentation/proc.txt --- v2.2.0/linux/Documentation/proc.txt Wed Dec 31 16:00:00 1969 +++ linux/Documentation/proc.txt Thu Jan 28 12:16:40 1999 @@ -0,0 +1,1353 @@ + +----------------------------------------------------------------------- + + T H E /proc F I L E S Y S T E M + +----------------------------------------------------------------------- +/proc/sys Terrehon Bowden January 27 1999 + Bodo Bauer +----------------------------------------------------------------------- +Version 1.1 Kernel version 2.2 +----------------------------------------------------------------------- +Contents + +1 Introduction/Credits + +1.1 Legal Issues + +2 The /proc file system + +2.1 Process specific subdirectories +2.2 Kernel data +2.3 IDE devices in /proc/ide +2.4 Networking info in /proc/net +2.5 SCSI info +2.6 Parallel port info in /proc/parport +2.7 TTY info in /proc/tty + +3 Reading and modifying kernel parameters + +3.1 /proc/sys/debug and /proc/sys/proc +3.2 /proc/fs - File system data +3.3 /proc/fs/binfmt_misc - Miscellaneous binary formats +3.4 /proc/sys/kernel - General kernel parameters +3.5 /proc/sys/vm - The virtual memory subsystem +3.6 /proc/sys/dev - Device specific parameters +3.7 /proc/sys/sunrpc - Remote procedure calls +3.8 /proc/sys/net - Networking stuff +3.9 /proc/sys/net/ipv4 - IPV4 settings=20 +3.10 Appletalk +3.11 IPX + +----------------------------------------------------------------------- + +1 Introduction/Credits + +This documentation is part of a soon to be released book published by +IDG Books on the SuSE Linux distribution. As there is no complete +documentation for the /proc file system and we've used many freely +available sources to write this chapter, it seems only fair to give +the work back to the Linux community. This work is based on the +2.1.132 and 2.2.0-pre-kernel versions. I'm afraid it's still far from +complete, but we hope it will be useful. As far as we know, it is the +first 'all-in-one’ document about the /proc file system. It is +focused on the Intel x86 hardware, so if you are looking for PPC, ARM, +SPARC, APX, etc., features, you probably won't find what you are +looking for. It also only covers IPv4 networking, not IPv6 nor other +protocols - sorry. + +We'd like to thank Alan Cox, Rik van Riel, and Alexey Kuznetsov. We'd +also like to extend a special thank you to Andi Kleen for +documentation, which we relied on heavily to create this document, as +well as the additional information he provided. Thanks to everybody +else who contributed source or docs to the Linux kernel and helped +create a great piece of software... :) + +If you have any comments, corrections or additions, please don't +hesitate to contact Bodo Bauer at bb@ricochet.net. We'll be happy to +add them to this document. + +The latest version of this document is available online at +http://www.suse.com/~bb/Docs/proc.html in HTML, ASCII, and as +Postscript file. + +1.1 Legal Stuff + +We don't guarantee the correctness of this document, and if you come +to us complaining about how you screwed up your system because of +incorrect documentation, we won't feel responsible... + +----------------------------------------------------------------------- + +2 The /proc file system + +The proc file system acts as an interface to internal data structures +in the kernel. It can be used to obtain information about the system +and to change certain kernel parameters at runtime. It contains +(among other things) one subdirectory for each process running on the +system which is named after the process id (PID) of the process. The +link self points to the process reading the file system. + +2.1 Process specific subdirectories + +Each process subdirectory has the in table 1.1 listed entries. + + _________________________________________________ + cmdline Command line arguments + environ Values of environment variables + fd Directory, which contains all file descriptors + mem Memory held by this process + stat Process status + status Process status in human readable form + cwd Link to the current working directory + exe Link to the executable of this process + maps Memory maps + root Link to the root directory of this process + statm Process memory status information + _________________________________________________ + Table 1.1: Process specific entries in /proc + +For example, to get the status information of a process, all you have +to do is read the file /proc/PID/status: + +> cat /proc/self/status +Name: cat +State: R (running) +Pid: 5633 +PPid: 5609 +Uid: 501 501 501 501 +Gid: 100 100 100 100 +Groups: 100 16 +VmSize: 804 kB +VmLck: 0 kB +VmRSS: 344 kB +VmData: 68 kB +VmStk: 20 kB +VmExe: 12 kB +VmLib: 660 kB +SigPnd: 0000000000000000 +SigBlk: 0000000000000000 +SigIgn: 0000000000000000 +SigCgt: 0000000000000000 +CapInh: 00000000fffffeff +CapPrm: 0000000000000000 +CapEff: 0000000000000000 + +This shows you almost the same information as you would get if you +viewed it with the ps command. In fact, ps uses the proc file system +to obtain its information. + +The statm file contains more detailed information about the process +memory usage. It contains seven values with the following meanings: + +size total program size +resident size of in memory portions +shared number of the pages that are shared +trs number of pages that are 'code' +drs number of pages of data/stack +lrs number of pages of library +dt number of dirty pages + +The ratio text/data/library is approximate only by heuristics. + +2.2 Kernel data + +Similar to the process entries, these are files which give information +about the running kernel. The files used to obtain this information +are contained in /proc and are listed in table 1.2. Not all of these +will be present in your system. It depends on the kernel configuration +and the loaded modules, which files are there, and which are missing. + + ________________________________________________ + apm Advanced power management info + cmdline Kernel command line + cpuinfo Info about the CPU + devices Available devices (block and character) + dma Used DMS channels + filesystems Supported filesystems + interrupts Interrupt usage + ioports I/O port usage + kcore Kernel core image + kmsg Kernel messages + ksyms Kernel symbol table + loadavg Load average + locks Kernel locks + meminfo Memory info + misc Miscellaneous + modules List of loaded modules + mounts Mounted filesystems + partitions Table of partitions known to the system + rtc Real time clock + slabinfo Slab pool info + stat Overall statistics + swaps Swap space utilization + uptime System uptime + version Kernel version + ________________________________________________ + Table 1.2: Kernel info in /proc + +You can, for example, check which interrupts are currently in use and +what they are used for by looking in the file /proc/interrupts: + +> cat /proc/interrupts + CPU0 + 0: 8728810 XT-PIC timer + 1: 895 XT-PIC keyboard + 2: 0 XT-PIC cascade + 3: 531695 XT-PIC aha152x + 4: 2014133 XT-PIC serial + 5: 44401 XT-PIC pcnet_cs + 8: 2 XT-PIC rtc + 11: 8 XT-PIC i82365 + 12: 182918 XT-PIC PS/2 Mouse + 13: 1 XT-PIC fpu + 14: 1232265 XT-PIC ide0 + 15: 7 XT-PIC ide1 +NMI: 0 + +There three more important subdirectories in /proc: net, scsi and +sys. The general rule is that the contents, or even the existence of +these directories, depends on your kernel configuration. If SCSI is +not enabled, the directory scsi may not exist. The same is true with +the net, which is only there when networking support is present in the +running kernel. + +The slabinfo file gives information about memory usage on the slab +level. Linux uses slab pools for memory management above page level +in version 2.2. Commonly used objects have their own slab pool (like +network buffers, directory cache, etc.). + +2.3 IDE devices in /proc/ide + +This subdirectory contains information about all IDE devices that the +kernel is aware of. There is one subdirectory for each device +(i.e. hard disk) containing the following files: + + cache The cache + capacity Capacity of the medium + driver Driver and version + geometry Physical and logical geometry + identify Device identify block + media Media type + model Device identifier + settings Device setup + smart_thresholds IDE disk management thresholds + smart_values IDE disk management values + +2.4 Networking info in /proc/net + +This directory follows the usual pattern. Table 1.3 lists the files +and their meaning. + + ____________________________________________________ + arp Kernel ARP table + dev network devices with statistics + dev_mcast Lists the Layer2 multicast groups a + device is listening to (interface index, + label, number of references, number of + bound addresses). + dev_stat network device status + ip_fwchains Firewall chain linkage + ip_fwnames Firewall chains + ip_masq Directory containing the masquerading + tables. + ip_masquerade Major masquerading table + netstat Network statistics + raw Raw device statistics + route Kernel routing table + rpc Directory containing rpc info + rt_cache Routing cache + snmp SNMP data + sockstat Socket statistics + tcp TCP sockets + tr_rif Token ring RIF routing table + udp UDP sockets + unix UNIX domain sockets + wireless Wireless interface data (Wavelan etc) + igmp IP multicast addresses, which this host joined + psched Global packet scheduler parameters. + netlink List of PF_NETLINK sockets. + ip_mr_vifs List of multicast virtual interfaces. + ip_mr_cache List of multicast routing cache. + udp6 UDP sockets (IPv6) + tcp6 TCP sockets (IPv6) + raw6 Raw device statistics (IPv6) + igmp6 IP multicast addresses, which this host joineed (IPv6) + if_inet6 List of IPv6 interface addresses. + ipv6_route Kernel routing table for IPv6 + rt6_stats global IPv6 routing tables statistics. + sockstat6 Socket statistics (IPv6) + snmp6 Snmp data (IPv6) + ____________________________________________________ + Table 1.3: Network info in /proc/net + +You can use this information to see which network devices are +available in your system and how much traffic was routed over those +devices: + +> cat /proc/net/dev +Inter-|Receive |[... + face |bytes packets errs drop fifo frame compressed multicast|[... + lo: 908188 5596 0 0 0 0 0 0 [... + ppp0:15475140 20721 410 0 0 410 0 0 [... + eth0: 614530 7085 0 0 0 0 0 1 [... + +...] Transmit +...] bytes packets errs drop fifo colls carrier compressed +...] 908188 5596 0 0 0 0 0 0 +...] 1375103 17405 0 0 0 0 0 0 +...] 1703981 5535 0 0 0 3 0 0 + +2.5 SCSI info + +If you have a SCSI host adapter in your system, you'll find a +subdirectory named after the driver for this adapter in /proc/scsi. +You'll also see a list of all recognized SCSI devices in /proc/scsi: + +>cat /proc/scsi/scsi +Attached devices: +Host: scsi0 Channel: 00 Id: 00 Lun: 00 + Vendor: QUANTUM Model: XP34550W Rev: LXY4 + Type: Direct-Access ANSI SCSI revision: 02 +Host: scsi0 Channel: 00 Id: 01 Lun: 00 + Vendor: SEAGATE Model: ST34501W Rev: 0018 + Type: Direct-Access ANSI SCSI revision: 02 +Host: scsi0 Channel: 00 Id: 02 Lun: 00 + Vendor: SEAGATE Model: ST34501W Rev: 0017 + Type: Direct-Access ANSI SCSI revision: 02 +Host: scsi0 Channel: 00 Id: 04 Lun: 00 + Vendor: ARCHIVE Model: Python 04106-XXX Rev: 703b + Type: Sequential-Access ANSI SCSI revision: 02 + +The directory named after the driver has one file for each adapter +found in the system. These files contain information about +the controller, including the used IRQ and the IO address range: + +>cat /proc/scsi/ncr53c8xx/0 +General information: + Chip NCR53C875, device id 0xf, revision id 0x4 + IO port address 0xec00, IRQ number 11 + Synchronous period factor 12, max commands per lun 4 + +2.6 Parallel port info in /proc/parport + +The directory /proc/parport contains information about the parallel +ports of your system. It has one subdirectory for each port, named +after the port number (0,1,2,...). + +This directory contains four files: + + autoprobe Autoprobe results of this port + devices Connected device modules + hardware Hardware info (port type, io-port, DMA, IRQ, etc.) + irq Used interrupt, if any + +2.7 TTY info in /proc/tty + +Information about the available and the actually used tty's can be +found in /proc/tty. You'll find entries for drivers and line +disciplines in this directory, as shown in the table below: + + drivers List of drivers and their usage + ldiscs Registered line disciplines + driver/serial Usage statistic and status of single tty lines + +To see which tty's are currently in use, you can simply look into the +file /proc/tty/drivers: + +>cat /proc/tty/drivers +pty_slave /dev/pts 136 0-255 pty:slave +pty_master /dev/ptm 128 0-255 pty:master +pty_slave /dev/ttyp 3 0-255 pty:slave +pty_master /dev/pty 2 0-255 pty:master +serial /dev/cua 5 64-67 serial:callout +serial /dev/ttyS 4 64-67 serial +/dev/tty0 /dev/tty0 4 0 system:vtmaster +/dev/ptmx /dev/ptmx 5 2 system +/dev/console /dev/console 5 1 system:console +/dev/tty /dev/tty 5 0 system:/dev/tty +unknown /dev/tty 4 1-63 console + +----------------------------------------------------------------------- + +3 Reading and modifying kernel parameters + +A very interesting part of /proc is the directory /proc/sys. This not +only provides information, it also allows you to change parameters +within the kernel. Be very careful when trying this. You can optimize +your system, but you also can crash it. Never play around with kernel +parameters on a production system. Set up a development machine and +test to make sure that everything works the way you want it to. You +may have no alternative but to reboot the machine once an error has +been made. + +To change a value, simply echo the new value into the file. An example +is given below in the section on the file system data. You need to be +root to do this. You can create your own boot script to get this done +every time your system boots. + +The files in /proc/sys can be used to tune and monitor miscellaneous +and general things in the operation of the Linux kernel. Since some +of the files can inadvertently disrupt your system, it is advisable to +read both documentation and source before actually making +adjustments. In any case, be very careful when writing to any of these +files. The entries in /proc may change slightly between the 2.1.* and +the 2.2 kernel, so review the kernel documentation if there is any +doubt. You'll find the documentation in the directory +/usr/src/linux/Documentation/sys. This chapter is heavily based on the +documentation included in the pre 2.2 kernels. Thanks to Rick van Riel +for providing this information. + +3.1 /proc/sys/debug and /proc/sys/proc + +These two subdirectories are empty. + +3.2 /proc/fs - File system data + +This subdirectory contains specific file system, file handle, inode, +dentry and quota information. + +Currently, these files are in /proc/sys/fs: + +dentry-state + Status of the directory cache. Since directory entries are + dynamically allocated and deallocated, this file gives information + about the current status. It holds six values, in which the last + two are not used and are always zero. The other four mean: + + nr_dentry Seems to be zero all the time + nr_unused Number of unused cache entries + age_limit Age in seconds after the entry may be + reclaimed, when memory is short + want_pages internal + +dquot-nr and dquot-max + The file dquot-max shows the maximum number of cached disk quota + entries. + + The file dquot-nr shows the number of allocated disk quota + entries and the number of free disk quota entries. + + If the number of free cached disk quotas is very low and you have + a large number of simultaneous system users, you might want + to raise the limit. + +file-nr and file-max + The kernel allocates file handles dynamically, but as yet + doesn't free them again. + + The value in file-max denotes the maximum number of file handles + that the Linux kernel will allocate. When you get a lot of error + messages about running out of file handles, you might want to raise + this limit. The default value is 4096. To change it, just write the + new number into the file: + + # cat /proc/sys/fs/file-max + 4096 + # echo 8192 > /proc/sys/fs/file-max + # cat /proc/sys/fs/file-max + 8192 + + This method of revision is useful for all customizable parameters + of the kernel - simply echo the new value to the corresponding + file. + + The three values in file-nr denote the number of allocated file + handles, the number of used file handles, and the maximum number of + file handles. When the allocated file handles come close to the + maximum, but the number of actually used ones is far behind, you've + encountered a peak in your usage of file handles and you don't need + to increase the maximum. + + However, there is still a per process limit of open files, which + unfortunatly can't be changed that easily. It is set to 1024 by + default. To change this you have to edit the files limits.h and + fs.h in the directory /usr/src/linux/include/linux. Change the + definition of NR_OPEN and recompile the kernel. + +inode-state, inode-nr and inode-max + As with file handles, the kernel allocates the inode structures + dynamically, but can't free them yet. + + The value in inode-max denotes the maximum number of inode + handlers. This value should be 3 to 4 times larger than the value + in file-max, since stdin, stdout, and network sockets also need an + inode struct to handle them. If you regularly run out of inodes, + you should increase this value. + + The file inode-nr contains the first two items from inode-state, so + we'll skip to that file... + + inode-state contains three actual numbers and four dummy values. The + actual numbers are (in order of appearance) nr_inodes, nr_free_inodes, + and preshrink. + + nr_inodes + Denotes the number of inodes the system has allocated. This can + be slightly more than inode-max because Linux allocates them one + pageful at a time. + + nr_free_inodes + Represents the number of free inodes and pre shrink is nonzero + when the nr_inodes > inode-max and the system needs to prune the + inode list instead of allocating more. + +super-nr and super-max + Again, super block structures are allocated by the kernel, + but not freed. The file super-max contains the maximum number of + super block handlers, where super-nr shows the number of + currently allocated ones. + + Every mounted file system needs a super block, so if you plan to + mount lots of file systems, you may want to increase these + numbers. + +3.3 /proc/fs/binfmt_misc - Miscellaneous binary formats + +Besides these files, there is the subdirectory +/proc/sys/fs/binfmt_misc. This handles the kernel support for +miscellaneous binary formats. + +Binfmt_misc provides the ability to register additional binary formats +to the Kernel without compiling an additional module/kernel. Therefore +binfmt_misc needs to know magic numbers at the beginning or the +filename extension of the binary. + +It works by maintaining a linked list of structs, that contain a +description of a binary format, including a magic with size (or the +filename extension), offset and mask, and the interpreter name. On +request it invokes the given interpreter with the original program as +argument, as binfmt_java and binfmt_em86 and binfmt_mz do. +Since binfmt_misc does not define any default binary-formats, you have to +register an additional binary-format. + +There are two general files in binfmt_misc and one file per registered +format. The two general files are register and status. + +Registering a new binary format + +echo :name:type:offset:magic:mask:interpreter: > /proc/sys/fs/binfmt_misc/register + +with appropriate name (the name for the /proc-dir entry), offset +(defaults to 0, if omitted), magic and mask (which can be omitted, +defaults to all 0xff) and last but not least, the interpreter that is +to be invoked (for example and testing '/bin/echo'). Type can be M for +usual magic matching or E for filename extension matching (give +extension in place of magic). + +To check or reset the status of the binary format handler: + +If you do a cat on the file /proc/sys/fs/binfmt_misc/status, you will +get the current status (enabled/disabled) of binfmt_misc. Change the +status by echoing 0 (disables) or 1 (enables) or -1 (caution: this +clears all previously registered binary formats) to status. For +example echo 0 > status to disable binfmt_misc (temporarily). + +Status of a single handler + +Each registered handler has an entry in /proc/sys/fs/binfmt_misc. +These files perform the same function as status, but their scope is +limited to the actual binary format. By cating this file, you also +receive all related information about the interpreter/magic of the +binfmt. + +Example usage of binfmt_misc (emulate binfmt_java) + +cd /proc/sys/fs/binfmt_misc +echo ':Java:M::\xca\xfe\xba\xbe::/usr/local/java/bin/javawrapper:' > register +echo ':HTML:E::html::/usr/local/java/bin/appletviewer:' > register +echo ':Applet:M::