From ca9c5d10da903f4c492695ecae9e8277a6260dad Mon Sep 17 00:00:00 2001 From: mutouyun Date: Sun, 12 Sep 2021 22:05:08 +0800 Subject: [PATCH] ut for sem-linux --- src/libipc/platform/semaphore_linux.h | 25 ++++++++++--------------- src/libipc/platform/shm_linux.cpp | 4 ++-- 2 files changed, 12 insertions(+), 17 deletions(-) diff --git a/src/libipc/platform/semaphore_linux.h b/src/libipc/platform/semaphore_linux.h index d09fdb5..8f6ee40 100644 --- a/src/libipc/platform/semaphore_linux.h +++ b/src/libipc/platform/semaphore_linux.h @@ -33,7 +33,7 @@ public: bool open(char const *name, std::uint32_t count) noexcept { close(); - if (!shm_.acquire(name, 0)) { + if (!shm_.acquire(name, 1)) { ipc::error("[open_semaphore] fail shm.acquire: %s\n", name); return false; } @@ -61,27 +61,22 @@ public: bool wait(std::uint64_t tm) noexcept { if (!valid()) return false; - switch (tm) { - case 0: - return true; - case invalid_value: + if (tm == invalid_value) { if (::sem_wait(h_) != 0) { ipc::error("fail sem_wait[%d]: %s\n", errno); return false; } - return true; - default: { - auto ts = detail::make_timespec(tm); - if (::sem_timedwait(h_, &ts) != 0) { - if (errno != ETIMEDOUT) { - ipc::error("fail sem_timedwait[%d]: tm = %zd, tv_sec = %ld, tv_nsec = %ld\n", - errno, tm, ts.tv_sec, ts.tv_nsec); - } - return false; + } else { + auto ts = detail::make_timespec(tm); + if (::sem_timedwait(h_, &ts) != 0) { + if (errno != ETIMEDOUT) { + ipc::error("fail sem_timedwait[%d]: tm = %zd, tv_sec = %ld, tv_nsec = %ld\n", + errno, tm, ts.tv_sec, ts.tv_nsec); } + return false; } - return true; } + return true; } bool post(std::uint32_t count) noexcept { diff --git a/src/libipc/platform/shm_linux.cpp b/src/libipc/platform/shm_linux.cpp index d9bb540..8a16a3e 100755 --- a/src/libipc/platform/shm_linux.cpp +++ b/src/libipc/platform/shm_linux.cpp @@ -117,7 +117,7 @@ void * get_mem(id_t id, std::size_t * size) { } int fd = ii->fd_; if (fd == -1) { - ipc::error("fail to_mem: invalid id (fd = -1)\n"); + ipc::error("fail get_mem: invalid id (fd = -1)\n"); return nullptr; } if (ii->size_ == 0) { @@ -128,7 +128,7 @@ void * get_mem(id_t id, std::size_t * size) { } ii->size_ = static_cast(st.st_size); if ((ii->size_ <= sizeof(info_t)) || (ii->size_ % sizeof(info_t))) { - ipc::error("fail to_mem: %s, invalid size = %zd\n", ii->name_.c_str(), ii->size_); + ipc::error("fail get_mem: %s, invalid size = %zd\n", ii->name_.c_str(), ii->size_); return nullptr; } }