nc 0.9.7

Access system calls directly
Documentation
/// Read and/or clear kernel message ring buffer.
///
/// # Examples
///
/// ```
/// let mut buf = vec![0_u8; 4096];
/// let ret = unsafe { nc::syslog(nc::SYSLOG_ACTION_READ_ALL, &mut buf) };
/// if let Ok(nread) = ret {
///     if let Ok(msg) = std::str::from_utf8(&buf[..nread as usize]) {
///         println!("msg: {msg}");
///     }
/// } else {
///     assert_eq!(ret, Err(nc::EPERM));
/// }
/// ```
pub unsafe fn syslog(action: i32, buf: &mut [u8]) -> Result<ssize_t, Errno> {
    let action = action as usize;
    let buf_ptr = buf.as_mut_ptr() as usize;
    let buf_len = buf.len();
    syscall3(SYS_SYSLOG, action, buf_ptr, buf_len).map(|ret| ret as ssize_t)
}