lscpu

Crates.iolscpu
lib.rslscpu
version1.0.9
created_at2025-03-09 14:55:17.262814+00
updated_at2025-08-17 20:25:13.971131+00
descriptionImplementation of lscpu in rust
homepage
repositoryhttps://github.com/mateolafalce/lscpu
max_upload_size
id1585558
size59,554
Mateo Lafalce (mateolafalce)

documentation

README

lscpu

crates.io github docs.rs

A Rust implementation of the lscpu command-line utility for displaying CPU architecture information.

Features

  • Written in pure Rust
  • Fast and lightweight
  • no_std compatible
  • Easy to integrate as a library
  • Cross-platform support (Linux focus)
  • Zero external dependencies

Installation

As a Binary

Install the command-line tool directly from crates.io:

cargo install lscpu

After installation, you can run:

lscpu

As a Library

Add this to your Cargo.toml:

cargo add lscpu

Usage

Command Line

Simply run the installed binary to get CPU information:

$ lscpu
Architecture:             x86_64
CPU op-mode(s):           32-bit, 64-bit
Address sizes:            48 bits physical, 48 bits virtual
Byte Order:               Little Endian
CPU(s):                   2
On-line CPU(s) list:      0,1
Vendor ID:                AuthenticAMD
Model name:               AMD A4-4000 APU with Radeon(tm) HD Graphics    
CPU family:               21
Model:                    19
Is hybrid:                no
Thread(s) per core:       2
Core(s) per socket:       1
Socket(s):                1
Stepping:                 1
Frequency boost:          enabled

As a Library

use lscpu::Cpu;

fn main() {
    let cpu = Cpu::new();
    
    println!("Architecture: {}", cpu.architecture);
    println!("Model name: {}", cpu.model_name);
    println!("CPU count: {}", cpu.cpu_count);
    println!("Vendor ID: {}", cpu.vendor_id);
}

Development

Building from Source

git clone https://github.com/mateolafalce/lscpu.git
cd lscpu
cargo build --release

Running Examples

Run the standard example:

cargo run --example std

This demonstrates basic usage and can also be run in a no-std environment.

CPU Data Structure

The main Cpu struct provides comprehensive CPU information:

pub struct Cpu {
    pub architecture: &'static str,
    pub cpu_op_modes: &'static str,
    pub address_sizes: String,
    pub byte_order: &'static str,
    pub cpu_count: u32,
    pub on_line_cpu: u32,
    pub vendor_id: String,
    pub model_name: String,
    pub cpu_family: u32,
    pub cpu_model: u32,
    pub is_hybrid: &'static str,
    pub threads_per_core: u32,
    pub cores_per_socket: u32,
    pub sockets: u32,
    pub stepping: u32,
    pub boost_enabled: &'static str,
}

Platform Support

Currently supports:

  • Linux (primary target)
  • Other Unix-like systems (limited support)
  • Windows (not supported yet)

License

This project is licensed under the GPL-3.0 License - see the LICENSE file for details.

Acknowledgments

  • Inspired by the original lscpu utility from util-linux
  • Built with ❤️ in Rust
Commit count: 25

cargo fmt