From e0fd870a216e8f44ca621ebccea732adcac3f705 Mon Sep 17 00:00:00 2001 From: byndyx Date: Mon, 23 Jun 2025 17:26:29 +0800 Subject: [PATCH] munmap Signed-off-by: byndyx --- av_transport/common/src/av_sync_utils.cpp | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/av_transport/common/src/av_sync_utils.cpp b/av_transport/common/src/av_sync_utils.cpp index af020a0a..ace303bb 100644 --- a/av_transport/common/src/av_sync_utils.cpp +++ b/av_transport/common/src/av_sync_utils.cpp @@ -56,6 +56,11 @@ AVTransSharedMemory CreateAVTransSharedMemory(const std::string &name, size_t si (void)::close(fd); return AVTransSharedMemory{0, 0, name}; } + if (::munmap(addr, size) != 0) { + AVTRANS_LOGE("munmap failed, name=%{public}s, fd=%{public}" PRId32, name.c_str(), fd); + (void)::close(fd); + return AVTransSharedMemory{0, 0, name}; + } uint64_t tmpsize = static_cast(size); AVTRANS_LOGI("create av trans shared memory success, name=%{public}s, size=%{public}" PRIu64 ", fd=%{public}" PRId32, name.c_str(), tmpsize, fd); @@ -109,7 +114,8 @@ int32_t WriteClockUnitToMemory(const AVTransSharedMemory &memory, AVSyncClockUni size_t tOffset = fOffset + sizeof(uint32_t); U64ToU8(base + tOffset, clockUnit.pts, NUM_EIGHT); U32ToU8(base + fOffset, clockUnit.frameNum, NUM_FOUR); - + TRUE_RETURN_V_MSG_E(::munmap(addr, static_cast(memory.size)) != 0, ERR_DH_AVT_SHARED_MEMORY_FAILED, + "munmap failed, size=%{public}d", memory.size); clockUnit.index ++; if (clockUnit.index == MAX_CLOCK_UNIT_COUNT) { clockUnit.index = 0; @@ -164,6 +170,8 @@ int32_t ReadClockUnitFromMemory(const AVTransSharedMemory &memory, AVSyncClockUn } index++; } + TRUE_RETURN_V_MSG_E(::munmap(addr, static_cast(memory.size)) != 0, ERR_DH_AVT_SHARED_MEMORY_FAILED, + "munmap failed, size=%{public}d", memory.size); AVTRANS_LOGI("read clock unit from shared memory success, frameNum=%{public}" PRId32 ", pts=%{public}lld", clockUnit.frameNum, (long long)clockUnit.pts); return DH_AVT_SUCCESS; @@ -198,7 +206,8 @@ int32_t WriteFrameInfoToMemory(const AVTransSharedMemory &memory, uint32_t frame uint8_t *base = reinterpret_cast(addr); U32ToU8(base, frameNum, NUM_FOUR); U64ToU8(base + sizeof(uint32_t), timestamp, NUM_EIGHT); - + TRUE_RETURN_V_MSG_E(::munmap(addr, static_cast(memory.size)) != 0, ERR_DH_AVT_SHARED_MEMORY_FAILED, + "munmap failed, size=%{public}d", memory.size); AVTRANS_LOGI("write frameNum=%{public}" PRId32 ", timestamp=%{public}lld to shared memory success", frameNum, (long long)timestamp); return DH_AVT_SUCCESS; @@ -231,6 +240,8 @@ int32_t ReadFrameInfoFromMemory(const AVTransSharedMemory &memory, uint32_t &fra uint8_t *base = reinterpret_cast(addr); frameNum = U8ToU32(base, NUM_FOUR); timestamp = static_cast(U8ToU64(base + sizeof(uint32_t), NUM_EIGHT)); + TRUE_RETURN_V_MSG_E(::munmap(addr, static_cast(memory.size)) != 0, ERR_DH_AVT_SHARED_MEMORY_FAILED, + "munmap failed, size=%{public}d", memory.size); TRUE_RETURN_V_MSG_E(frameNum <= 0, ERR_DH_AVT_MASTER_NOT_READY, "master queue not ready, frameNum is null."); AVTRANS_LOGI("read frameNum=%{public}" PRId32 ", timestamp=%{public}lld from shared memory success.", frameNum, @@ -262,6 +273,8 @@ int32_t ResetSharedMemory(const AVTransSharedMemory &memory) AVTRANS_LOGE("memset_s failed."); return ERR_DH_AVT_SHARED_MEMORY_FAILED; } + TRUE_RETURN_V_MSG_E(::munmap(addr, static_cast(memory.size)) != 0, ERR_DH_AVT_SHARED_MEMORY_FAILED, + "munmap failed, size=%{public}d", memory.size); AVTRANS_LOGI("reset shared memory success."); return DH_AVT_SUCCESS; } -- Gitee