Expand description
This crate provides to an interface into the linux procfs
filesystem, usually mounted at
/proc
.
This is a pseudo-filesystem which is available on most every linux system and provides an interface to kernel data structures.
§Kernel support
Not all fields/data are available in each kernel. Some fields were added in specific kernel
releases, and other fields are only present in certain kernel configuration options are
enabled. These are represented as Option
fields in this crate.
This crate aims to support all 2.6 kernels (and newer). WSL2 is also supported.
§Documentation
In almost all cases, the documentation is taken from the
proc.5
manual page. This means that
sometimes the style of writing is not very “rusty”, or may do things like reference related files
(instead of referencing related structs). Contributions to improve this are welcome.
§Panicing
While previous versions of the library could panic, this current version aims to be panic-free
in a many situations as possible. Whenever the procfs crate encounters a bug in its own
parsing code, it will return an InternalError
error. This should be considered a
bug and should be reported. If you encounter a panic,
please report that as well.
§Cargo features
The following cargo features are available:
chrono
– Default. Optional. This feature enables a few methods that return values asDateTime
objects.flate2
– Default. Optional. This feature enables parsing gzip compressed/proc/config.gz
file via theprocfs::kernel_config
method.backtrace
– Optional. This feature lets you get a stack trace whenever anInternalError
is raised.
§Examples
Examples can be found in the various modules shown below, or in the examples folder of the code repository.
Re-exports§
pub use crate::sys::kernel::BuildInfo as KernelBuildInfo;
pub use crate::sys::kernel::Type as KernelType;
pub use crate::sys::kernel::Version as KernelVersion;
Modules§
- Information about the networking layer.
- Extension traits useful for importing wholesale.
- Functions and structs related to process information
- Sysctl is a means of configuring certain aspects of the kernel at run-time, and the
/proc/sys/
directory is there so that you don’t even need special tools to do it!
Structs§
- A block device entry under
/proc/devices
- Container group controller information.
- Container group controller information.
- A charcter device entry under
/proc/devices
- Represents the data from
/proc/cpuinfo
. - CPU pressure information
- The amount of time, measured in ticks, the CPU has been in specific states
- Format of a crypto implementation represented in /proc/crypto.
- Represents the data from
/proc/crypto
. - Device entries under
/proc/devices
- Disk IO stat information
- A list of disk stats.
- A convenience stuct implementing SystemInfoInterface with explicitly-specified values.
- An internal error in the procfs crate
- IO pressure information
- Parse physical memory references accessing
/proc/kpagecount
- Parse physical memory flags accessing
/proc/kpageflags
. - A list of the arguments passed to the Linux kernel at boot time.
- The kernel configuration.
- Details about a loaded kernel module
- A set of loaded kernel modules
- Kernel/system statistics, from
/proc/stat
- Load average figures.
- A type for accessing data about the currently running machine
- Details about an individual file lock
- Details about file locks
- This struct reports statistics about memory usage on the system, based on the
/proc/meminfo
file. - Memory pressure information
- A mountpoint entry under
/proc/mounts
- A partition entry under
/proc/partitions
- Represents the fields and flags in a page table entry for a memory page.
- Pressure stall information for either CPU, memory, or IO.
- Information about a process cgroup
- Information about process cgroups.
- A set of shared memory segments parsed from
/proc/sysvipc/shm
- A shared memory segment parsed from
/proc/sysvipc/shm
Relation with crate::process::MMapPath::Vsys - The uptime of the system, based on the
/proc/uptime
file. - Various virtual memory statistics
Enums§
- Possible values for a kernel config option
- The kind of a lock (read or write)
- The mode of a lock (advisory or mandatory)
- The type of a file lock
- The various error conditions in the procfs crate.
- Potential results for selftest.
- Enumeration of potential types and their associated data. Unknown at end to catch unrecognised types.
Traits§
- Allows associating a specific file to parse.
- Allows associating a specific file to parse with system information.
- Types which can be parsed from a BufRead implementation.
- Types which can be parsed from a BufRead implementation and system info.
- Types which can be parsed from a Read implementation.
- Types which can be parsed from a Read implementation and system info.
- Extensions for dealing with ProcErrors.
- Auxiliary system information interface.
- Allows
impl WithSystemInfo
to use the current system info. - Values which can provide an output given the SystemInfo.
Functions§
- The boot time of the system, as a
DateTime
object. - The boottime of the system, in seconds since the epoch
- Information about the cgroup controllers that are compiled into the kernel
- Get a list of the arguments passed to the Linux kernel at boot time
- The current SystemInfo.
- Get disk IO stat info from /proc/diskstats
- Reads and parses the
/proc/iomem
, returning an error if there are problems. - Returns a configuration options used to build the currently running kernel
- Get a list of current file locks and leases
- Get a list of loaded kernel modules
- Get a list of mountpoints from
/proc/mounts
- Memory page size, in bytes.
- Get a list of partitions from
/proc/partitions
- Return the number of ticks per second.
- Get various virtual memory statistics
Type Aliases§
- The main error type for the procfs crate.
- Auxiliary system information.