Add support for retrieving the affinity of an EventLoop
Also rename priority to emphasize that it's a realtime priority which
only applies at runtime
Change-Id: I06f24e04d4079248c0e313299103d120842a7537
Signed-off-by: Austin Schuh <austin.schuh@bluerivertech.com>
diff --git a/aos/events/event_loop_param_test.cc b/aos/events/event_loop_param_test.cc
index 0eeecf8..118b9ae 100644
--- a/aos/events/event_loop_param_test.cc
+++ b/aos/events/event_loop_param_test.cc
@@ -781,14 +781,24 @@
// Verify that SetRuntimeRealtimePriority fails while running.
TEST_P(AbstractEventLoopDeathTest, SetRuntimeRealtimePriority) {
auto loop = MakePrimary();
+ EXPECT_EQ(0, loop->runtime_realtime_priority());
// Confirm that runtime priority calls work when not realtime.
loop->SetRuntimeRealtimePriority(5);
+ EXPECT_EQ(5, loop->runtime_realtime_priority());
loop->OnRun([&]() { loop->SetRuntimeRealtimePriority(5); });
EXPECT_DEATH(Run(), "realtime");
}
+namespace {
+
+bool CpuSetEqual(const cpu_set_t &a, const cpu_set_t &b) {
+ return CPU_EQUAL(&a, &b);
+}
+
+} // namespace
+
// Verify that SetRuntimeAffinity fails while running.
TEST_P(AbstractEventLoopDeathTest, SetRuntimeAffinity) {
const cpu_set_t available = GetCurrentThreadAffinity();
@@ -803,8 +813,12 @@
CHECK_NE(first_cpu, -1) << ": Default affinity has no CPUs?";
auto loop = MakePrimary();
+ EXPECT_TRUE(
+ CpuSetEqual(EventLoop::DefaultAffinity(), loop->runtime_affinity()));
+ const cpu_set_t new_affinity = MakeCpusetFromCpus({first_cpu});
// Confirm that runtime priority calls work when not running.
- loop->SetRuntimeAffinity(MakeCpusetFromCpus({first_cpu}));
+ loop->SetRuntimeAffinity(new_affinity);
+ EXPECT_TRUE(CpuSetEqual(new_affinity, loop->runtime_affinity()));
loop->OnRun(
[&]() { loop->SetRuntimeAffinity(MakeCpusetFromCpus({first_cpu})); });