darwin_libproc_sys/
lib.rs

1//! Native `libproc` bindings for Rust.
2//!
3//! This crate provides the raw `libproc` API exposing kernel data about processes of macOS.
4//!
5//! See [darwin-libproc](https://crates.io/crates/darwin-libproc) crate
6//! for idiomatic and safe wrappers.
7
8#![cfg(target_os = "macos")]
9#![doc(html_root_url = "https://docs.rs/darwin-libproc-sys/0.2.0")]
10#![deny(
11    unused,
12    unused_imports,
13    future_incompatible,
14    dead_code,
15    deprecated,
16    trivial_casts,
17    trivial_numeric_casts,
18    unused_extern_crates,
19    unused_import_braces,
20    unused_results
21)]
22#![allow(missing_docs, nonstandard_style)]
23
24mod listpids;
25mod pidinfo;
26mod rusage;
27
28pub use self::listpids::*;
29pub use self::pidinfo::*;
30pub use self::rusage::*;
31
32// Declared at `bsd/sys/param.h`
33pub const MAXPATHLEN: usize = libc::PATH_MAX as usize;
34// Declared at `bsd/sys/proc_info.h`
35pub const PROC_PIDPATHINFO_MAXSIZE: usize = 4 * MAXPATHLEN;
36
37extern "C" {
38    pub fn proc_listpidspath(
39        r#type: u32,
40        typeinfo: u32,
41        path: *const libc::c_char,
42        pathflags: u32,
43        buffer: *mut libc::c_void,
44        buffersize: libc::c_int,
45    ) -> libc::c_int;
46
47    pub fn proc_pidfdinfo(
48        pid: libc::c_int,
49        fd: libc::c_int,
50        flavor: libc::c_int,
51        buffer: *mut libc::c_void,
52        buffersize: libc::c_int,
53    ) -> libc::c_int;
54
55    pub fn proc_name(
56        pid: libc::c_int,
57        buffer: *mut libc::c_void,
58        buffersize: u32,
59    ) -> libc::c_int;
60
61    pub fn proc_regionfilename(
62        pid: libc::c_int,
63        address: u64,
64        buffer: *mut libc::c_void,
65        buffersize: u32,
66    ) -> libc::c_int;
67
68    pub fn proc_kmsgbuf(
69        buffer: *mut libc::c_void,
70        buffersize: u32,
71    ) -> libc::c_int;
72
73    pub fn proc_pidpath(
74        pid: libc::c_int,
75        buffer: *mut libc::c_void,
76        buffersize: u32,
77    ) -> libc::c_int;
78
79    pub fn proc_libversion(
80        major: *mut libc::c_int,
81        minor: *mut libc::c_int,
82    ) -> libc::c_int;
83}