/// Set scheduling parameter.
///
/// # Examples
///
/// ```
/// let sched_param = nc::sched_param_t { sched_priority: 12 };
/// let ret = unsafe { nc::sched_setscheduler(0, nc::SCHED_RR, &sched_param) };
/// assert_eq!(ret, Err(nc::EPERM));
/// ```
pub unsafe fn sched_setscheduler(
pid: pid_t,
policy: i32,
param: &sched_param_t,
) -> Result<(), Errno> {
let pid = pid as usize;
let policy = policy as usize;
let param_ptr = core::ptr::from_ref(param) as usize;
unsafe { syscall3(SYS_SCHED_SETSCHEDULER, pid, policy, param_ptr).map(drop) }
}