# sysutil-lib
- Linux system information library
## Importation
```rust
use sysutil;
```
## Data structures
### ProcessorUsage
```rust
pub struct ProcessorUsage {
total: f32,
user: f32,
nice: f32,
system: f32,
idle: f32,
iowait: f32,
interrupt: f32,
soft_interrupt: f32
}
```
- data structure which encloses the different parameters relative to processor usage
### CpuUsage
```rust
pub struct CpuUsage {
average: ProcessorUsage,
processors: Vec<ProcessorUsage>
}
```
- contains the average CPU usage, and the specific usage for each processor
### Cpu
```rust
pub struct Cpu {
modelName: String,
cores: usize,
threads: usize,
dies: usize,
governors: Vec<String>,
maxFrequencyMHz: f32,
clockBoost: Option<bool>,
architecture: String,
byteOrder: String
}
```
- contains base information relative to the CPU
### SchedulerPolicy
```rust
pub struct SchedulerPolicy {
name: String,
scalingGovernor: String,
scalingDriver: String,
minimumScalingMHz: f32,
maximumScalingMHz: f32
}
```
- contains scheduler information relative to a processor in your system
### RamSize
```rust
pub struct RamSize {
gb: f32,
gib: f32
}
```
- contains total ram size, both in GB (1000^3 bytes) and GiB (1024^3 bytes)
### NetworkRate
```rust
pub struct NetworkRate {
download: f32,
upload: f32
}
```
- contains total upload and download network rate (in bytes)
### TemperatureSensor
```rust
pub struct TemperatureSensor {
label: String,
temperature: Option<f32>
}
```
- contains sensor name (label) and the recorded temperature
### Battery
```rust
pub struct Battery {
capacity: u8,
status: BatteryStatus,
}
```
- contains capacity and status of battery
### BatteryStatus
```rust
enum BatteryStatus {
Charging,
Discharging,
Full,
}
```
- represents status of battery
### VramSize
```rust
pub struct VramSize {
gb: f32,
gib: f32
}
```
- contains total gpu's vram size, both in GB (1000^3 bytes) and GiB (1024^3 bytes)
## Functions
```rust
pub fn cpuUsage() -> CpuUsage
```
- returns the cpu usage, both average and processor-wise, all the values are percentage
```rust
pub fn cpuFrequency() -> f32
```
- returns CPU frequency in MHz
```rust
pub fn ramUsage() -> f32
```
- returns ram usage percentage
```rust
pub fn networkRate() -> NetworkRate
```
- returns network rate (download and upload), expressed in bytes
```rust
pub fn temperatureSensors() -> Vec<TemperatureSensor>
```
- returns every temperature sensor in `TemperatureSensor` format
```rust
pub fn cpuInfo() -> Cpu
```
- returns the cpu base information, enclosed in the `Cpu` data structure
```rust
pub fn ramSize() -> RamSize
```
- returns ram size as specified in the `RamSize` data structure
```rust
pub fn schedulerInfo() -> Vec<SchedulerPolicy>
```
- returns scheduler information for each processor
```rust
pub fn gpuUsage() -> Option<f32>
```
- returns gpu usage percentage
- yet tested only on AMD 7000 series GPUs, returns `None` in case it's not capable to retrieve information
```rust
pub fn batteryInfo() -> Option<Battery>
```
- returns battery status and capacity
```rust
pub fn vramSize() -> Option<VramSize>
```
- returns vram size as specified in the `VramSize` data structure
```rust
pub fn vramUsage() -> Option<float>
```
- returns vram usage percentage