use core::ffi::c_int;

use super::{sys_time::__ygg_timespec_t, sys_types::pid_t};

#[repr(C)]
pub struct sched_param {
    pub sched_priority: c_int,
    pub sched_ss_low_priority: c_int,
    pub sched_ss_repl_period: __ygg_timespec_t,
    pub sched_ss_init_budget: __ygg_timespec_t,
    pub sched_ss_max_repl: c_int,
}

pub type __ygg_sched_param_t = sched_param;

pub const SCHED_FIFO: c_int = 0;
pub const SCHED_RR: c_int = 1;
pub const SCHED_SPORADIC: c_int = 2;
pub const SCHED_OTHER: c_int = -1;

#[no_mangle]
unsafe extern "C" fn sched_get_priority_max(_policy: c_int) -> c_int {
    todo!()
}

#[no_mangle]
unsafe extern "C" fn sched_get_priority_min(_policy: c_int) -> c_int {
    todo!()
}

#[no_mangle]
unsafe extern "C" fn sched_getparam(_pid: pid_t, _param: *mut sched_param) -> c_int {
    todo!()
}

#[no_mangle]
unsafe extern "C" fn sched_getscheduler(_pid: pid_t) -> c_int {
    todo!()
}

#[no_mangle]
unsafe extern "C" fn sched_rr_get_interval(_pid: pid_t, _timespec: *mut __ygg_timespec_t) -> c_int {
    todo!()
}

#[no_mangle]
unsafe extern "C" fn sched_setparam(_pid: pid_t, _param: *const sched_param) -> c_int {
    todo!()
}

#[no_mangle]
unsafe extern "C" fn sched_setscheduler(
    _pid: pid_t,
    _policy: c_int,
    _param: *const sched_param,
) -> c_int {
    todo!()
}

#[no_mangle]
unsafe extern "C" fn sched_yield() -> c_int {
    todo!()
}
