Add LocklessQueue::Pinner class

This will allow reading messages from queues without copying, which is
helpful for speeding up the processing of images.

Change-Id: Ia4bb98afa6fe1c1b5cc186e3071c7458f143d77d
diff --git a/aos/events/shm_event_loop.cc b/aos/events/shm_event_loop.cc
index d2c9112..0aa82a1 100644
--- a/aos/events/shm_event_loop.cc
+++ b/aos/events/shm_event_loop.cc
@@ -60,7 +60,7 @@
 }
 std::string ShmPath(const Channel *channel) {
   CHECK(channel->has_type());
-  return ShmFolder(channel) + channel->type()->str() + ".v2";
+  return ShmFolder(channel) + channel->type()->str() + ".v3";
 }
 
 void PageFaultData(char *data, size_t size) {
@@ -96,6 +96,7 @@
 
     config_.num_watchers = channel->num_watchers();
     config_.num_senders = channel->num_senders();
+    config_.num_pinners = 0;
     config_.queue_size =
         channel_storage_duration.count() * channel->frequency();
     config_.message_data_size = channel->max_size();
diff --git a/aos/events/shm_event_loop_test.cc b/aos/events/shm_event_loop_test.cc
index d25e2f8..f0680a9 100644
--- a/aos/events/shm_event_loop_test.cc
+++ b/aos/events/shm_event_loop_test.cc
@@ -25,12 +25,12 @@
     }
 
     // Clean up anything left there before.
-    unlink((FLAGS_shm_base + "/test/aos.TestMessage.v2").c_str());
-    unlink((FLAGS_shm_base + "/test1/aos.TestMessage.v2").c_str());
-    unlink((FLAGS_shm_base + "/test2/aos.TestMessage.v2").c_str());
-    unlink((FLAGS_shm_base + "/test2/aos.TestMessage.v2").c_str());
-    unlink((FLAGS_shm_base + "/aos/aos.timing.Report.v2").c_str());
-    unlink((FLAGS_shm_base + "/aos/aos.logging.LogMessageFbs.v2").c_str());
+    unlink((FLAGS_shm_base + "/test/aos.TestMessage.v3").c_str());
+    unlink((FLAGS_shm_base + "/test1/aos.TestMessage.v3").c_str());
+    unlink((FLAGS_shm_base + "/test2/aos.TestMessage.v3").c_str());
+    unlink((FLAGS_shm_base + "/test2/aos.TestMessage.v3").c_str());
+    unlink((FLAGS_shm_base + "/aos/aos.timing.Report.v3").c_str());
+    unlink((FLAGS_shm_base + "/aos/aos.logging.LogMessageFbs.v3").c_str());
   }
 
   ~ShmEventLoopTestFactory() { FLAGS_override_hostname = ""; }