From b2e9fa88944eee4964ff34ad0f3a391004af4f49 Mon Sep 17 00:00:00 2001 From: pxd2022 Date: Thu, 9 May 2024 06:49:16 +0000 Subject: [PATCH 1/7] update display/buffer/hdi_service/src/allocator_service.cpp. Signed-off-by: pxd2022 --- display/buffer/hdi_service/src/allocator_service.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/display/buffer/hdi_service/src/allocator_service.cpp b/display/buffer/hdi_service/src/allocator_service.cpp index 65704676ab..263a566704 100644 --- a/display/buffer/hdi_service/src/allocator_service.cpp +++ b/display/buffer/hdi_service/src/allocator_service.cpp @@ -21,6 +21,7 @@ #include #include "display_log.h" #include "hdf_trace.h" +#include "hdf_remote_service.h" #undef LOG_TAG #define LOG_TAG "ALLOC_SRV" @@ -28,6 +29,7 @@ #define LOG_DOMAIN 0xD002515 #define TIME_1000 1000 #define TIME_10 10 +#define BUFF_SIZE 16 namespace OHOS { namespace HDI { @@ -128,6 +130,15 @@ void AllocatorService::TimeEnd(const char *func, int32_t time, struct timeval fi return; } +void AllocatorService::WriteAllocPidToDma(int32_t fd) +{ + pid_t remotePid = HdfRemoteGetCallingPid(); + char pidStr[BUFF_SIZE] = { 0 }; + if (sprintf_s(pidStr, BUFF_SIZE, "%d", remotePid) >= 0) { + ioctl(fd, DMA_BUF_SET_NAME_A, pidStr); + } +} + int32_t AllocatorService::AllocMem(const AllocInfo& info, sptr& handle) { HdfTrace trace(__func__, "HDI:DISP:"); @@ -144,6 +155,7 @@ int32_t AllocatorService::AllocMem(const AllocInfo& info, sptr& ha return ec; } CHECK_NULLPOINTER_RETURN_VALUE(buffer, HDF_DEV_ERR_NO_MEMORY); + WriteAllocPidToDma(buffer->fd); handle = new NativeBuffer(); if (handle == nullptr) { -- Gitee From 329de4d4e41e46ba73a51845c201d0ab290b70be Mon Sep 17 00:00:00 2001 From: pxd2022 Date: Thu, 9 May 2024 06:49:59 +0000 Subject: [PATCH 2/7] update display/buffer/hdi_service/include/allocator_service.h. Signed-off-by: pxd2022 --- display/buffer/hdi_service/include/allocator_service.h | 1 + 1 file changed, 1 insertion(+) diff --git a/display/buffer/hdi_service/include/allocator_service.h b/display/buffer/hdi_service/include/allocator_service.h index e7c2a9f5f5..42a8cbcf7f 100644 --- a/display/buffer/hdi_service/include/allocator_service.h +++ b/display/buffer/hdi_service/include/allocator_service.h @@ -36,6 +36,7 @@ private: int32_t LoadVdi(); void TimeBegin(struct timeval *firstTimeStamp); void TimeEnd(const char *func, int32_t time, struct timeval firstTimeStamp); + void WriteAllocPidToDma(int32_t fd); std::mutex mutex_; void *libHandle_; IDisplayBufferVdi *vdiImpl_; -- Gitee From 9ce7850aae5331a6a915bb74119ed5aa64fae646 Mon Sep 17 00:00:00 2001 From: pxd2022 Date: Thu, 9 May 2024 06:59:29 +0000 Subject: [PATCH 3/7] update display/buffer/hdi_service/BUILD.gn. Signed-off-by: pxd2022 --- display/buffer/hdi_service/BUILD.gn | 1 + 1 file changed, 1 insertion(+) diff --git a/display/buffer/hdi_service/BUILD.gn b/display/buffer/hdi_service/BUILD.gn index e2d64ac59a..3b1acb23aa 100644 --- a/display/buffer/hdi_service/BUILD.gn +++ b/display/buffer/hdi_service/BUILD.gn @@ -35,6 +35,7 @@ ohos_shared_library("liballocator_service_1.0") { external_deps = [ "c_utils:utils", "drivers_interface_display:display_buffer_idl_headers", + "drivers_interface_display:display_buffer_idl_headers_1.2", "graphic_surface:buffer_handle", "hdf_core:libhdf_ipc_adapter", "hdf_core:libhdf_utils", -- Gitee From e12083ed6c0fa9e3ca44cf2ca47158cf1a381ac3 Mon Sep 17 00:00:00 2001 From: pxd2022 Date: Thu, 9 May 2024 07:00:31 +0000 Subject: [PATCH 4/7] update display/buffer/hdi_service/src/allocator_service.cpp. Signed-off-by: pxd2022 --- display/buffer/hdi_service/src/allocator_service.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/display/buffer/hdi_service/src/allocator_service.cpp b/display/buffer/hdi_service/src/allocator_service.cpp index 263a566704..cda3dfe519 100644 --- a/display/buffer/hdi_service/src/allocator_service.cpp +++ b/display/buffer/hdi_service/src/allocator_service.cpp @@ -15,6 +15,8 @@ #include "allocator_service.h" +#include +#include #include #include #include -- Gitee From 37e2e0745985de6fb4d7a0dcccbf1c2dcbae166c Mon Sep 17 00:00:00 2001 From: pxd2022 Date: Thu, 9 May 2024 07:34:05 +0000 Subject: [PATCH 5/7] update display/buffer/hdi_service/src/allocator_service.cpp. Signed-off-by: pxd2022 --- .../hdi_service/src/allocator_service.cpp | 40 +++++++++++-------- 1 file changed, 23 insertions(+), 17 deletions(-) diff --git a/display/buffer/hdi_service/src/allocator_service.cpp b/display/buffer/hdi_service/src/allocator_service.cpp index cda3dfe519..349243c3fd 100644 --- a/display/buffer/hdi_service/src/allocator_service.cpp +++ b/display/buffer/hdi_service/src/allocator_service.cpp @@ -141,42 +141,48 @@ void AllocatorService::WriteAllocPidToDma(int32_t fd) } } +void AllocatorService::FreeMemVdi(BufferHandle* handle) +{ + struct timeval firstTimeStamp; + TimeBegin(&firstTimeStamp); + { + HdfTrace traceTwo("FreeMem", "HDI:VDI:"); + vdiImpl_->FreeMem(*handle); + } + TimeEnd("FreeMem", TIME_10, firstTimeStamp); +} + int32_t AllocatorService::AllocMem(const AllocInfo& info, sptr& handle) { HdfTrace trace(__func__, "HDI:DISP:"); BufferHandle* buffer = nullptr; CHECK_NULLPOINTER_RETURN_VALUE(vdiImpl_, HDF_FAILURE); - HdfTrace traceOne("AllocMem-VDI", "HDI:VDI:"); struct timeval firstTimeStamp; TimeBegin(&firstTimeStamp); - int32_t ec = vdiImpl_->AllocMem(info, buffer); - TimeEnd("AllocMem", TIME_10, firstTimeStamp); - if (ec != HDF_SUCCESS) { - HDF_LOGE("%{public}s: AllocMem failed, ec = %{public}d", __func__, ec); - return ec; + { + HdfTrace traceOne("AllocMem-VDI", "HDI:VDI:"); + int32_t ec = vdiImpl_->AllocMem(info, buffer); + if (ec != HDF_SUCCESS) { + TimeEnd("AllocMem", TIME_10, firstTimeStamp); + HDF_LOGE("%{public}s: AllocMem failed, ec = %{public}d", __func__, ec); + return ec; + } } + TimeEnd("AllocMem", TIME_10, firstTimeStamp); + CHECK_NULLPOINTER_RETURN_VALUE(buffer, HDF_DEV_ERR_NO_MEMORY); WriteAllocPidToDma(buffer->fd); handle = new NativeBuffer(); if (handle == nullptr) { HDF_LOGE("%{public}s: new NativeBuffer failed", __func__); - delete handle; - HdfTrace traceTwo("FreeMem-1", "HDI:VDI:"); - struct timeval firstTimeStamp; - TimeBegin(&firstTimeStamp); - vdiImpl_->FreeMem(*buffer); - TimeEnd("FreeMem", TIME_10, firstTimeStamp); + FreeMemVdi(buffer); return HDF_FAILURE; } handle->SetBufferHandle(buffer, true, [this](BufferHandle* freeBuffer) { - HdfTrace traceThree("FreeMem-2", "HDI:VDI:"); - struct timeval firstTimeStamp; - TimeBegin(&firstTimeStamp); - vdiImpl_->FreeMem(*freeBuffer); - TimeEnd("FreeMem", TIME_10, firstTimeStamp); + FreeMemVdi(freeBuffer); }); return HDF_SUCCESS; } -- Gitee From ca3a27dbde9426cc5aeb6870c9d313ac7c432092 Mon Sep 17 00:00:00 2001 From: pxd2022 Date: Thu, 9 May 2024 07:34:34 +0000 Subject: [PATCH 6/7] update display/buffer/hdi_service/include/allocator_service.h. Signed-off-by: pxd2022 --- display/buffer/hdi_service/include/allocator_service.h | 1 + 1 file changed, 1 insertion(+) diff --git a/display/buffer/hdi_service/include/allocator_service.h b/display/buffer/hdi_service/include/allocator_service.h index 42a8cbcf7f..4189d5c6ea 100644 --- a/display/buffer/hdi_service/include/allocator_service.h +++ b/display/buffer/hdi_service/include/allocator_service.h @@ -37,6 +37,7 @@ private: void TimeBegin(struct timeval *firstTimeStamp); void TimeEnd(const char *func, int32_t time, struct timeval firstTimeStamp); void WriteAllocPidToDma(int32_t fd); + void FreeMemVdi(BufferHandle* handle); std::mutex mutex_; void *libHandle_; IDisplayBufferVdi *vdiImpl_; -- Gitee From 5904b9aa20f42ec51f45ff42c22b587e17b70edc Mon Sep 17 00:00:00 2001 From: pxd2022 Date: Thu, 9 May 2024 08:59:59 +0000 Subject: [PATCH 7/7] update display/buffer/hdi_service/src/allocator_service.cpp. Signed-off-by: pxd2022 --- display/buffer/hdi_service/src/allocator_service.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/display/buffer/hdi_service/src/allocator_service.cpp b/display/buffer/hdi_service/src/allocator_service.cpp index 349243c3fd..143000547d 100644 --- a/display/buffer/hdi_service/src/allocator_service.cpp +++ b/display/buffer/hdi_service/src/allocator_service.cpp @@ -17,6 +17,7 @@ #include #include +#include #include #include #include -- Gitee