Add realtime priority scheduling to rust event loop
Change-Id: I57728c299e90a2a1a3f0dd658435fa819b8bea48
Signed-off-by: James Kuszmaul <james.kuszmaul@bluerivertech.com>
diff --git a/aos/events/event_loop_runtime.h b/aos/events/event_loop_runtime.h
index 4d284c2..7c23456 100644
--- a/aos/events/event_loop_runtime.h
+++ b/aos/events/event_loop_runtime.h
@@ -239,6 +239,14 @@
return TimerForRust::Make(this);
}
+ void SetRuntimeRealtimePriority(int priority) const {
+ event_loop_->SetRuntimeRealtimePriority(priority);
+ }
+
+ void SetRuntimeAffinity(const cpu_set_t &cpuset) const {
+ event_loop_->SetRuntimeAffinity(cpuset);
+ }
+
private:
friend class OnRunForRust;
friend class TimerForRust;
diff --git a/aos/events/event_loop_runtime.rs b/aos/events/event_loop_runtime.rs
index 0266517..1f70bf6 100644
--- a/aos/events/event_loop_runtime.rs
+++ b/aos/events/event_loop_runtime.rs
@@ -695,6 +695,11 @@
timer.setup(self.monotonic_now(), Some(duration));
timer
}
+
+ /// Sets the scheduler priority to run the event loop at.
+ pub fn set_realtime_priority(&self, priority: i32) {
+ self.0.SetRuntimeRealtimePriority(priority.into());
+ }
}
/// An event loop primitive that allows sleeping asynchronously.