//! 系统时钟定义

/// 设置下一个事件回调别名
pub type SetNextEventFuc = fn(u64) -> bool;
/// 设置当前时钟事件停止回调别名
pub type SetStateStopedFuc = fn();

/// 系统时钟实现
pub trait ClockImpl {
    /// 系统时钟初始化
    fn init(&self);
    /// 系统时钟初始化处理器
    ///
    /// 该回调将在每个处理器上调用
    fn init_cpu(&self);

    /// 获取下一个事件回调函数
    fn get_set_next_event(&self) -> SetNextEventFuc;
    /// 停止当前时钟事件
    fn get_set_state_stoped(&self) -> SetStateStopedFuc;
    /// 时钟事件源频率
    ///
    /// 单位为HZ
    fn rate(&self) -> usize;
    /// 时钟事件源最小tick
    fn min_delta(&self) -> u64;
    /// 时钟事件源最大tick
    fn max_delta(&self) -> u64;
}
