Refactor MakeCpusetFromCpus into realtime.h

It works without event_loop.  Also reuse it for some things in ipc_lib.

Change-Id: I520d254b6b27180b5e45bb43d63d425ca1db9e38
diff --git a/aos/events/event_loop.h b/aos/events/event_loop.h
index 5b699aa..74f26e4 100644
--- a/aos/events/event_loop.h
+++ b/aos/events/event_loop.h
@@ -466,15 +466,6 @@
   Ftrace ftrace_;
 };
 
-inline cpu_set_t MakeCpusetFromCpus(std::initializer_list<int> cpus) {
-  cpu_set_t result;
-  CPU_ZERO(&result);
-  for (int cpu : cpus) {
-    CPU_SET(cpu, &result);
-  }
-  return result;
-}
-
 class EventLoop {
  public:
   EventLoop(const Configuration *configuration);
diff --git a/aos/ipc_lib/eventfd_latency.cc b/aos/ipc_lib/eventfd_latency.cc
index 47f6528..d1f6bcb 100644
--- a/aos/ipc_lib/eventfd_latency.cc
+++ b/aos/ipc_lib/eventfd_latency.cc
@@ -43,13 +43,7 @@
   // Sleep between 1 and 15 ms.
   ::std::uniform_int_distribution<> distribution(1000, 15000);
 
-  {
-    cpu_set_t cpuset;
-    CPU_ZERO(&cpuset);
-    CPU_SET(FLAGS_core, &cpuset);
-
-    SetCurrentThreadAffinity(cpuset);
-  }
+  SetCurrentThreadAffinity(MakeCpusetFromCpus({FLAGS_core}));
   SetCurrentThreadRealtimePriority(FLAGS_sender_priority);
   while (true) {
     const monotonic_clock::time_point wakeup_time =
@@ -123,13 +117,7 @@
     }
   });
 
-  {
-    cpu_set_t cpuset;
-    CPU_ZERO(&cpuset);
-    CPU_SET(FLAGS_core, &cpuset);
-
-    SetCurrentThreadAffinity(cpuset);
-  }
+  SetCurrentThreadAffinity(MakeCpusetFromCpus({FLAGS_core}));
   SetCurrentThreadRealtimePriority(FLAGS_receiver_priority);
   epoll.Run();
   UnsetCurrentThreadRealtimePriority();
diff --git a/aos/ipc_lib/futex_latency.cc b/aos/ipc_lib/futex_latency.cc
index 3d609f8..5761d40 100644
--- a/aos/ipc_lib/futex_latency.cc
+++ b/aos/ipc_lib/futex_latency.cc
@@ -54,13 +54,7 @@
   // Sleep between 1 and 15 ms.
   ::std::uniform_int_distribution<> distribution(1000, 15000);
 
-  {
-    cpu_set_t cpuset;
-    CPU_ZERO(&cpuset);
-    CPU_SET(FLAGS_core, &cpuset);
-
-    SetCurrentThreadAffinity(cpuset);
-  }
+  SetCurrentThreadAffinity(MakeCpusetFromCpus({FLAGS_core}));
   SetCurrentThreadRealtimePriority(FLAGS_sender_priority);
   while (true) {
     const monotonic_clock::time_point wakeup_time =
@@ -97,13 +91,7 @@
   chrono::nanoseconds sum_latency = chrono::nanoseconds(0);
   int latency_count = 0;
 
-  {
-    cpu_set_t cpuset;
-    CPU_ZERO(&cpuset);
-    CPU_SET(FLAGS_core, &cpuset);
-
-    SetCurrentThreadAffinity(cpuset);
-  }
+  SetCurrentThreadAffinity(MakeCpusetFromCpus({FLAGS_core}));
   SetCurrentThreadRealtimePriority(FLAGS_receiver_priority);
   while (true) {
     chrono::nanoseconds wakeup_latency;
diff --git a/aos/ipc_lib/ipc_comparison.cc b/aos/ipc_lib/ipc_comparison.cc
index f5614a6..cf19b20 100644
--- a/aos/ipc_lib/ipc_comparison.cc
+++ b/aos/ipc_lib/ipc_comparison.cc
@@ -811,13 +811,7 @@
     if (FLAGS_server_priority > 0) {
       SetCurrentThreadRealtimePriority(FLAGS_server_priority);
     }
-    {
-      cpu_set_t cpuset;
-      CPU_ZERO(&cpuset);
-      CPU_SET(FLAGS_server_cpu, &cpuset);
-
-      SetCurrentThreadAffinity(cpuset);
-    }
+    SetCurrentThreadAffinity(MakeCpusetFromCpus({FLAGS_server_cpu}));
 
     while (!done) {
       const PingPongerInterface::Data *data = ping_ponger->Wait();
@@ -832,13 +826,7 @@
   if (FLAGS_client_priority > 0) {
     SetCurrentThreadRealtimePriority(FLAGS_client_priority);
   }
-  {
-    cpu_set_t cpuset;
-    CPU_ZERO(&cpuset);
-    CPU_SET(FLAGS_client_cpu, &cpuset);
-
-    SetCurrentThreadAffinity(cpuset);
-  }
+  SetCurrentThreadAffinity(MakeCpusetFromCpus({FLAGS_client_cpu}));
 
   // Warm everything up.
   for (int i = 0; i < 1000; ++i) {
diff --git a/aos/ipc_lib/named_pipe_latency.cc b/aos/ipc_lib/named_pipe_latency.cc
index 030852c..c333850 100644
--- a/aos/ipc_lib/named_pipe_latency.cc
+++ b/aos/ipc_lib/named_pipe_latency.cc
@@ -47,13 +47,7 @@
   // Sleep between 1 and 15 ms.
   ::std::uniform_int_distribution<> distribution(1000, 15000);
 
-  {
-    cpu_set_t cpuset;
-    CPU_ZERO(&cpuset);
-    CPU_SET(FLAGS_core, &cpuset);
-
-    SetCurrentThreadAffinity(cpuset);
-  }
+  SetCurrentThreadAffinity(MakeCpusetFromCpus({FLAGS_core}));
   SetCurrentThreadRealtimePriority(FLAGS_sender_priority);
   while (true) {
     const monotonic_clock::time_point wakeup_time =
@@ -131,13 +125,7 @@
     }
   });
 
-  {
-    cpu_set_t cpuset;
-    CPU_ZERO(&cpuset);
-    CPU_SET(FLAGS_core, &cpuset);
-
-    SetCurrentThreadAffinity(cpuset);
-  }
+  SetCurrentThreadAffinity(MakeCpusetFromCpus({FLAGS_core}));
   SetCurrentThreadRealtimePriority(FLAGS_receiver_priority);
   epoll.Run();
   UnsetCurrentThreadRealtimePriority();
diff --git a/aos/ipc_lib/signal_stress.cc b/aos/ipc_lib/signal_stress.cc
index a9fdb94..2f2ca41 100644
--- a/aos/ipc_lib/signal_stress.cc
+++ b/aos/ipc_lib/signal_stress.cc
@@ -56,13 +56,7 @@
   }
   AOS_LOG(INFO, "Current PID: %d\n", pid);
 
-  {
-    cpu_set_t cpuset;
-    CPU_ZERO(&cpuset);
-    CPU_SET(FLAGS_core, &cpuset);
-
-    SetCurrentThreadAffinity(cpuset);
-  }
+  SetCurrentThreadAffinity(MakeCpusetFromCpus({FLAGS_core}));
   SetCurrentThreadRealtimePriority(FLAGS_sender_priority);
   while (true) {
     const monotonic_clock::time_point wakeup_time =
@@ -151,13 +145,7 @@
     }
   });
 
-  {
-    cpu_set_t cpuset;
-    CPU_ZERO(&cpuset);
-    CPU_SET(FLAGS_core, &cpuset);
-
-    SetCurrentThreadAffinity(cpuset);
-  }
+  SetCurrentThreadAffinity(MakeCpusetFromCpus({FLAGS_core}));
   SetCurrentThreadRealtimePriority(FLAGS_receiver_priority);
   epoll.Run();
   UnsetCurrentThreadRealtimePriority();
diff --git a/aos/realtime.h b/aos/realtime.h
index c695add..fb49cac 100644
--- a/aos/realtime.h
+++ b/aos/realtime.h
@@ -27,6 +27,16 @@
 // name can have a maximum of 16 characters.
 void SetCurrentThreadName(const std::string_view name);
 
+// Creates a cpu_set_t from a list of CPUs.
+inline cpu_set_t MakeCpusetFromCpus(std::initializer_list<int> cpus) {
+  cpu_set_t result;
+  CPU_ZERO(&result);
+  for (int cpu : cpus) {
+    CPU_SET(cpu, &result);
+  }
+  return result;
+}
+
 // Sets the current thread's scheduling affinity.
 void SetCurrentThreadAffinity(const cpu_set_t &cpuset);