diff --git a/av_transport/av_trans_control_center/services/src/av_sync_manager.cpp b/av_transport/av_trans_control_center/services/src/av_sync_manager.cpp index 5991dc2f6fbf3b3494b5416873aadaa58f20fa91..e6835b5821c472c6dee82c9cc7d34998a0c57d1d 100644 --- a/av_transport/av_trans_control_center/services/src/av_sync_manager.cpp +++ b/av_transport/av_trans_control_center/services/src/av_sync_manager.cpp @@ -28,8 +28,8 @@ namespace DistributedHardware { AVSyncManager::AVSyncManager() { AVTRANS_LOGI("AVSyncManager ctor."); - sourceMemory_ = { 0, 0, "" }; - sinkMemory_ = { 0, 0, "" }; + sourceMemory_ = { -1, 0, "" }; + sinkMemory_ = { -1, 0, "" }; } AVSyncManager::~AVSyncManager() diff --git a/av_transport/common/include/av_sync_utils.h b/av_transport/common/include/av_sync_utils.h index 62a7033e15da586b9575b3e67784cf56b561dd6d..fd36f9635824f220c74bbbf4fff661334855adfe 100644 --- a/av_transport/common/include/av_sync_utils.h +++ b/av_transport/common/include/av_sync_utils.h @@ -48,7 +48,7 @@ AVTransSharedMemory CreateAVTransSharedMemory(const std::string &name, size_t si * @brief close shared memory space. * @param memory shared memory. */ -void CloseAVTransSharedMemory(const AVTransSharedMemory &memory) noexcept; +void CloseAVTransSharedMemory(AVTransSharedMemory &memory) noexcept; /** * @brief write the clock unit into the shared memory space. diff --git a/av_transport/common/src/av_sync_utils.cpp b/av_transport/common/src/av_sync_utils.cpp index 98729d43bd72b19988baa9a43f2ad7eff472218f..9699cddec2f41bdedf3f3995242dc1f96980b33b 100644 --- a/av_transport/common/src/av_sync_utils.cpp +++ b/av_transport/common/src/av_sync_utils.cpp @@ -30,9 +30,9 @@ namespace DistributedHardware { AVTransSharedMemory CreateAVTransSharedMemory(const std::string &name, size_t size) { int32_t fd = AshmemCreate(name.c_str(), size); - if (fd <= 0) { + if (fd < 0) { AVTRANS_LOGE("create av trans shared memory failed, name=%{public}s, fd=%{public}" PRId32, name.c_str(), fd); - return AVTransSharedMemory{0, 0, name}; + return AVTransSharedMemory{-1, 0, name}; } unsigned int prot = PROT_READ | PROT_WRITE; @@ -40,21 +40,21 @@ AVTransSharedMemory CreateAVTransSharedMemory(const std::string &name, size_t si if (result < 0) { AVTRANS_LOGE("AshmemSetProt failed, name=%{public}s, fd=%{public}" PRId32, name.c_str(), fd); (void)::close(fd); - return AVTransSharedMemory{0, 0, name}; + return AVTransSharedMemory{-1, 0, name}; } void *addr = ::mmap(nullptr, size, static_cast(prot), MAP_SHARED, fd, 0); if (addr == MAP_FAILED) { AVTRANS_LOGE("shared memory mmap failed, name=%{public}s, fd=%{public}" PRId32, name.c_str(), fd); (void)::close(fd); - return AVTransSharedMemory{0, 0, name}; + return AVTransSharedMemory{-1, 0, name}; } uint8_t *base = reinterpret_cast(addr); if (memset_s(base, size, INVALID_VALUE_FALG, size) != EOK) { AVTRANS_LOGE("memset_s failed."); (void)::close(fd); - return AVTransSharedMemory{0, 0, name}; + return AVTransSharedMemory{-1, 0, name}; } uint64_t tmpsize = static_cast(size); AVTRANS_LOGI("create av trans shared memory success, name=%{public}s, size=%{public}" PRIu64 ", fd=%{public}" @@ -62,7 +62,7 @@ AVTransSharedMemory CreateAVTransSharedMemory(const std::string &name, size_t si return AVTransSharedMemory{fd, size, name}; } -void CloseAVTransSharedMemory(const AVTransSharedMemory &memory) noexcept +void CloseAVTransSharedMemory(AVTransSharedMemory &memory) noexcept { AVTRANS_LOGI("close shared memory, name=%{public}s, size=%{public}" PRId32 ", fd=%{public}" PRId32, memory.name.c_str(), memory.size, memory.fd); @@ -70,8 +70,9 @@ void CloseAVTransSharedMemory(const AVTransSharedMemory &memory) noexcept AVTRANS_LOGE("invalid input shared memory"); return; } - if (memory.fd > 0) { + if (memory.fd >= 0) { (void)::close(memory.fd); + memory.fd = -1; } } diff --git a/av_transport/common/test/unittest/av_sync_utils_test.cpp b/av_transport/common/test/unittest/av_sync_utils_test.cpp index 0864867dc2241a8a8292dcf4e20fbe84c8315e26..11c2a28391f0d50486d134ae20edaca65f481ef3 100644 --- a/av_transport/common/test/unittest/av_sync_utils_test.cpp +++ b/av_transport/common/test/unittest/av_sync_utils_test.cpp @@ -61,7 +61,7 @@ HWTEST_F(AvSyncUtilsTest, CreateAVTransSharedMemory_001, TestSize.Level0) std::string name = ""; size_t size = 0; auto ret = CreateAVTransSharedMemory(name, size); - EXPECT_EQ(0, ret.fd); + EXPECT_EQ(-1, ret.fd); } HWTEST_F(AvSyncUtilsTest, CloseAVTransSharedMemory_001, TestSize.Level0)