taskstats 0.1.1

high-level encapsulation of Linux's per-task statistics interface
Documentation
# taskstats-rs

This crate provides a high-level encapsulation of Linux's
[per-task statistics interface](https://www.kernel.org/doc/html/latest/accounting/taskstats.html).

Currently only limited information is exposed in `Taskstats` struct,
but new field can be easily added for future version.
If there are any other fields in `taskstats` struct useful to you,
feel free to submit PR to add them.

## Examples

Query aggregated taskstats of a task:
```rust
let mut conn = TaskstatsConnection::new()?;
let stats = conn.get_pid_stats(1)?;
// ...
```

Listen to taskstats of exited tasks:
```rust
let conn = TaskstatsConnection::new()?;
let cpu_mask = CString::new("0-7\0".to_owned()).unwrap().into_boxed_c_str();
let mut listener = TaskstatsListener::register(conn, cpu_mask)?;
loop {
    let (pid, stats) = listener.get_next()?;
    // ...
}
```

## Development

`raw.rs` files in `src`, `src/netlink`, and `src/genetlink` are generated from corresponding headers,
then manually adjusted to fit the needs.

## Note

This crate only exposes stats for pid / task, but not tgid / process,
because the kernel doesn't really pass much useful information for tgid.
It is recommended that you rely on pid stats and aggregate for process manually.