Crate sysctl

source ·
Expand description

A simplified interface to the sysctl system call.

Currently built for and only tested on FreeBSD.

Example: Get description and value

extern crate sysctl;
#[cfg(not(target_os = "macos"))]
fn main() {
    let ctl = sysctl::Ctl::new("kern.osrevision")
        .expect("could not get sysctl");

    let d = ctl.description()
        .expect("could not get description");

    println!("Description: {:?}", d);

    let val_enum = ctl.value()
        .expect("could not get value");

    if let sysctl::CtlValue::Int(val) = val_enum {
        println!("Value: {}", val);
    }
}

#[cfg(target_os = "macos")]
fn main() {
    let mut ctl = sysctl::Ctl::new("kern.osrevision")
        .expect("could not get sysctl");

    // description is not available on macos

    let val_enum = ctl.value()
        .expect("could not get value");

    if let sysctl::CtlValue::Int(val) = val_enum {
        println!("Value: {}", val);
    }
}

Example: Get value as struct

extern crate sysctl;
extern crate libc;

use libc::c_int;

#[derive(Debug)]
#[repr(C)]
struct ClockInfo {
    hz: c_int, /* clock frequency */
    tick: c_int, /* micro-seconds per hz tick */
    spare: c_int,
    stathz: c_int, /* statistics clock frequency */
    profhz: c_int, /* profiling clock frequency */
}

fn main() {
    println!("{:?}", sysctl::value_as::<ClockInfo>("kern.clockrate"));
}

Structs

This struct represents a system control.
A structure representing control metadata
An iterator over Sysctl entries.
A custom type for temperature sysctls.

Enums

An Enum that represents a sysctl’s type information.
An Enum that holds all values returned by sysctl calls. Extract inner value with if let or match.

Constants

Functions

Returns a result containing the sysctl description if success, or a SysctlError on failure.
Get the next OID.
Sets the value of a sysctl. Fetches and returns the new value if successful, or a SysctlError on failure
Takes the name of the OID as argument and returns a result containing the sysctl value if success, or a SysctlError on failure
A generic function that takes a string as argument and returns a result containing the sysctl value if success, or a SysctlError on failure.
Takes an OID as argument and returns a result containing the sysctl value if success, or a SysctlError on failure
A generic function that takes an OID as argument and returns a result containing the sysctl value if success, or a SysctlError on failure