rusl 0.5.0

Rust linux interface layer
Documentation
use crate::platform::Fd;
use sc::syscall;

/// Copies from one file-offset to another in-kernel
/// # Errors
/// See the [linux docs for details](https://man7.org/linux/man-pages/man2/copy_file_range.2.html#ERRORS)
pub fn copy_file_range(
    src_fd: Fd,
    src_offset: u64,
    dest_fd: Fd,
    dest_offset: u64,
    len: usize,
) -> crate::Result<usize> {
    let res = unsafe {
        syscall!(
            COPY_FILE_RANGE,
            src_fd.value(),
            src_offset,
            dest_fd.value(),
            dest_offset,
            len,
            0
        )
    };
    bail_on_below_zero!(res, "`COPY_FILE_RANGE` syscall failed");
    Ok(res)
}