Prioritize imu_can_logger properly

This makes CAN packets more important than random interrupts...

Change-Id: I62579d9f3cce62b49af4db291ba01f8dbd1f4e2d
Signed-off-by: Austin Schuh <austin.linux@gmail.com>
diff --git a/frc971/can_logger/can_logger.cc b/frc971/can_logger/can_logger.cc
index 380410f..d020f6a 100644
--- a/frc971/can_logger/can_logger.cc
+++ b/frc971/can_logger/can_logger.cc
@@ -4,6 +4,10 @@
             "If true, poll the CAN bus every 100ms.  If false, wake up for "
             "each frame and publish it.");
 
+DEFINE_int32(priority, 10,
+             "If --poll is not set, set the realtime priority to this.");
+DEFINE_int32(affinity, -1, "If positive, pin to this core.");
+
 namespace frc971::can_logger {
 
 CanLogger::CanLogger(aos::ShmEventLoop *event_loop,
@@ -14,7 +18,11 @@
       frames_sender_(shm_event_loop_->MakeSender<CanFrame>(channel_name)) {
   // TODO(max): Figure out a proper priority
   if (!FLAGS_poll) {
-    shm_event_loop_->SetRuntimeRealtimePriority(10);
+    shm_event_loop_->SetRuntimeRealtimePriority(FLAGS_priority);
+  }
+  if (FLAGS_affinity >= 0) {
+    shm_event_loop_->SetRuntimeAffinity(
+        aos::MakeCpusetFromCpus({FLAGS_affinity}));
   }
   struct ifreq ifr;
   strcpy(ifr.ifr_name, interface_name.data());
diff --git a/y2024/y2024_imu.json b/y2024/y2024_imu.json
index 6beb1f9..32dadbf 100644
--- a/y2024/y2024_imu.json
+++ b/y2024/y2024_imu.json
@@ -399,6 +399,10 @@
     {
       "name": "imu_can_logger",
       "executable_name": "can_logger",
+      "args": [
+        "--priority=55",
+        "--affinity=5"
+      ],
       "nodes": [
         "imu"
       ]