Merge "Add basic support for nodes"
diff --git a/aos/events/shm_event_loop.cc b/aos/events/shm_event_loop.cc
index e696f36..0f933f9 100644
--- a/aos/events/shm_event_loop.cc
+++ b/aos/events/shm_event_loop.cc
@@ -103,19 +103,20 @@
private:
void MkdirP(std::string_view path) {
- struct stat st;
auto last_slash_pos = path.find_last_of("/");
std::string folder(last_slash_pos == std::string_view::npos
? std::string_view("")
: path.substr(0, last_slash_pos));
- if (stat(folder.c_str(), &st) == -1) {
- PCHECK(errno == ENOENT);
- CHECK_NE(folder, "") << ": Base path doesn't exist";
- MkdirP(folder);
- VLOG(1) << "Creating " << folder;
- PCHECK(mkdir(folder.c_str(), FLAGS_permissions) == 0);
+ if (folder.empty()) return;
+ MkdirP(folder);
+ VLOG(1) << "Creating " << folder;
+ const int result = mkdir(folder.c_str(), FLAGS_permissions);
+ if (result == -1 && errno == EEXIST) {
+ VLOG(1) << "Already exists";
+ return;
}
+ PCHECK(result == 0) << ": Error creating " << folder;
}
ipc_lib::LocklessQueueConfiguration config_;
diff --git a/aos/ipc_lib/lockless_queue.cc b/aos/ipc_lib/lockless_queue.cc
index 0c87e4d..3fb506b 100644
--- a/aos/ipc_lib/lockless_queue.cc
+++ b/aos/ipc_lib/lockless_queue.cc
@@ -239,6 +239,12 @@
} // namespace
+size_t LocklessQueueConfiguration::message_size() const {
+ // Round up the message size so following data is aligned appropriately.
+ return LocklessQueueMemory::AlignmentRoundUp(message_data_size) +
+ sizeof(Message);
+}
+
size_t LocklessQueueMemorySize(LocklessQueueConfiguration config) {
// Round up the message size so following data is aligned appropriately.
config.message_data_size =
@@ -278,8 +284,7 @@
memory->config.num_watchers = config.num_watchers;
memory->config.num_senders = config.num_senders;
memory->config.queue_size = config.queue_size;
- memory->config.message_data_size =
- LocklessQueueMemory::AlignmentRoundUp(config.message_data_size);
+ memory->config.message_data_size = config.message_data_size;
const size_t num_messages = memory->num_messages();
// There need to be at most MaxMessages() messages allocated.
diff --git a/aos/ipc_lib/lockless_queue.h b/aos/ipc_lib/lockless_queue.h
index 4a8523b..d539386 100644
--- a/aos/ipc_lib/lockless_queue.h
+++ b/aos/ipc_lib/lockless_queue.h
@@ -83,7 +83,7 @@
// Size in bytes of the data stored in each Message.
size_t message_data_size;
- size_t message_size() const { return message_data_size + sizeof(Message); }
+ size_t message_size() const;
size_t num_messages() const { return num_senders + queue_size; }
};