Crate procfs

Source
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 as DateTime objects.
  • flate2 – Default. Optional. This feature enables parsing gzip compressed /proc/config.gz file via the procfs::kernel_config method.
  • backtrace – Optional. This feature lets you get a stack trace whenever an InternalError 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§

keyring
net
Information about the networking layer.
prelude
Extension traits useful for importing wholesale.
process
Functions and structs related to process information
sys
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§

Aead
Ahash
BlockDeviceEntry
A block device entry under /proc/devices
CGroupController
Container group controller information.
CGroupControllers
Container group controller information.
CharDeviceEntry
A charcter device entry under /proc/devices
Cipher
CpuInfo
Represents the data from /proc/cpuinfo.
CpuPressure
CPU pressure information
CpuTime
The amount of time, measured in ticks, the CPU has been in specific states
CryptoBlock
Format of a crypto implementation represented in /proc/crypto.
CryptoTable
Represents the data from /proc/crypto.
Devices
Device entries under /proc/devices
DiskStat
Disk IO stat information
DiskStats
A list of disk stats.
ExplicitSystemInfo
A convenience stuct implementing SystemInfoInterface with explicitly-specified values.
InternalError
An internal error in the procfs crate
IoPressure
IO pressure information
Iomem
KPageCount
Parse physical memory references accessing /proc/kpagecount
KPageFlags
Parse physical memory flags accessing /proc/kpageflags.
KernelCmdline
A list of the arguments passed to the Linux kernel at boot time.
KernelConfig
The kernel configuration.
KernelModule
Details about a loaded kernel module
KernelModules
A set of loaded kernel modules
KernelStats
Kernel/system statistics, from /proc/stat
Larval
LoadAverage
Load average figures.
LocalSystemInfo
A type for accessing data about the currently running machine
Lock
Details about an individual file lock
Locks
Details about file locks
Meminfo
This struct reports statistics about memory usage on the system, based on the /proc/meminfo file.
MemoryPressure
Memory pressure information
MountEntry
A mountpoint entry under /proc/mounts
PartitionEntry
A partition entry under /proc/partitions
PhysicalMemoryMap
PhysicalPageFlags
Represents the fields and flags in a page table entry for a memory page.
PressureRecord
Pressure stall information for either CPU, memory, or IO.
ProcessCGroup
Information about a process cgroup
ProcessCGroups
Information about process cgroups.
Rng
SharedMemorySegments
A set of shared memory segments parsed from /proc/sysvipc/shm
Shash
Shm
A shared memory segment parsed from /proc/sysvipc/shm Relation with crate::process::MMapPath::Vsys
Skcipher
Unknown
Uptime
The uptime of the system, based on the /proc/uptime file.
VmStat
Various virtual memory statistics

Enums§

ConfigSetting
Possible values for a kernel config option
LockKind
The kind of a lock (read or write)
LockMode
The mode of a lock (advisory or mandatory)
LockType
The type of a file lock
ProcError
The various error conditions in the procfs crate.
SelfTest
Potential results for selftest.
Type
Enumeration of potential types and their associated data. Unknown at end to catch unrecognised types.

Traits§

Current
Allows associating a specific file to parse.
CurrentSI
Allows associating a specific file to parse with system information.
FromBufRead
Types which can be parsed from a BufRead implementation.
FromBufReadSI
Types which can be parsed from a BufRead implementation and system info.
FromRead
Types which can be parsed from a Read implementation.
FromReadSI
Types which can be parsed from a Read implementation and system info.
FromStrRadix
ProcErrorExt
Extensions for dealing with ProcErrors.
SystemInfoInterface
Auxiliary system information interface.
WithCurrentSystemInfo
Allows impl WithSystemInfo to use the current system info.
WithSystemInfo
Values which can provide an output given the SystemInfo.

Functions§

boot_time
The boot time of the system, as a DateTime object.
boot_time_secs
The boottime of the system, in seconds since the epoch
cgroups
Information about the cgroup controllers that are compiled into the kernel
cmdline
Get a list of the arguments passed to the Linux kernel at boot time
crypto
current_system_info
The current SystemInfo.
diskstats
Get disk IO stat info from /proc/diskstats
iomem
Reads and parses the /proc/iomem, returning an error if there are problems.
kernel_config
Returns a configuration options used to build the currently running kernel
locks
Get a list of current file locks and leases
modules
Get a list of loaded kernel modules
mounts
Get a list of mountpoints from /proc/mounts
page_size
Memory page size, in bytes.
partitions
Get a list of partitions from /proc/partitions
ticks_per_second
Return the number of ticks per second.
vmstat
Get various virtual memory statistics

Type Aliases§

ProcResult
The main error type for the procfs crate.
SystemInfo
Auxiliary system information.