iddm / thread-priority

A simple Cross-platform thread schedule and priority library for rust.
MIT License
110 stars 20 forks source link

ThreadExt::set_priority_and_policy errors for deadline policy #42

Open mmasque opened 3 months ago

mmasque commented 3 months ago

Trying to pass a Deadline policy and Deadline priority to ThreadExt::set_priority_and_policy yields an error in the call made to set_thread_priority_and_policy_deadline: "Deadline policy given without deadline priority". This happens because set_priority_and_policy calls set_thread_priority_and_policy with a ThreadPriority::Crossplatform parameter and the passed policy parameter:

use std::time::Duration;
use thread_priority::*;
fn main() {
    let duration = Duration::from_secs(3);
    let thread_priority = ThreadPriority::Deadline {
        deadline: duration.clone(),
        runtime: duration.clone(),
        period: duration.clone(),
        flags: DeadlineFlags::empty(),
    };

    matches!(
        std::thread::current().set_priority_and_policy(
            ThreadSchedulePolicy::Realtime(RealtimeThreadSchedulePolicy::Deadline),
            thread_priority,
        ),
        Err(Error::Priority(
            "Deadline policy given without deadline priority."
        ))
    );
}
iddm commented 3 months ago

Hi again!

Indeed. Thanks for reporting. Should be an easy fix.