diff --git a/adapter/uhdf2/host/BUILD.gn b/adapter/uhdf2/host/BUILD.gn index 859bd4fd5607c2d0775eebb959e5611f04ec85a9..42b31a76783a3b7f953f2ffa3ad4d6da11240421 100644 --- a/adapter/uhdf2/host/BUILD.gn +++ b/adapter/uhdf2/host/BUILD.gn @@ -26,6 +26,9 @@ config("libhdf_host_public_config") { "$hdf_interfaces_path/inner_api/osal/shared", "$hdf_interfaces_path/inner_api/host/shared", "$hdf_interfaces_path/inner_api/host/uhdf", + "$hdf_framework_path/core/manager/include", + "$hdf_framework_path/core/shared/include", + "include", ] } if (defined(ohos_lite)) { diff --git a/adapter/uhdf2/ipc/src/hdf_remote_adapter.cpp b/adapter/uhdf2/ipc/src/hdf_remote_adapter.cpp index 9966c1bd0750ad6daabe6fa209458eb9b3965c52..5ad882019e67fc7d8c30312cf537e029d557f5a0 100644 --- a/adapter/uhdf2/ipc/src/hdf_remote_adapter.cpp +++ b/adapter/uhdf2/ipc/src/hdf_remote_adapter.cpp @@ -29,7 +29,7 @@ #define HDF_LOG_TAG hdf_remote_adapter -static constexpr int32_t THREAD_POOL_BASE_THREAD_COUNT = 5; +static constexpr int32_t THREAD_POOL_BASE_THREAD_COUNT = 16; static int32_t g_remoteThreadMax = THREAD_POOL_BASE_THREAD_COUNT; HdfRemoteServiceStub::HdfRemoteServiceStub(struct HdfRemoteService *service) diff --git a/framework/core/adapter/syscall/src/hdf_syscall_adapter.c b/framework/core/adapter/syscall/src/hdf_syscall_adapter.c index 9e0bde6614b8e5a827ac5ce2163cc627afa7c1ad..629d6aeeddd132cafe8c806604a3c8b7b43107d0 100644 --- a/framework/core/adapter/syscall/src/hdf_syscall_adapter.c +++ b/framework/core/adapter/syscall/src/hdf_syscall_adapter.c @@ -95,6 +95,11 @@ static int32_t HdfDevEventDispatchLocked( struct HdfDevEventlistener *listener = NULL; struct HdfSBuf *sbuf = NULL; + if (thread == NULL || adapter == NULL || bwr == NULL) { + HDF_LOGE("%{public}s: thread or adapter or bwr is NULL.", __func__); + return HDF_ERR_INVALID_PARAM; + } + if (bwr->readConsumed > 0) { sbuf = HdfSbufBind(bwr->readBuffer, bwr->readConsumed); } else { @@ -837,6 +842,12 @@ static int32_t HdfIoServiceStartListen(struct HdfSyscallAdapter *adapter, int po static bool AddListenerToAdapterLocked(struct HdfSyscallAdapter *adapter, struct HdfDevEventlistener *listener) { struct HdfDevEventlistener *it = NULL; + + if (adapter == NULL || listener == NULL) { + HDF_LOGE("%{public}s: adapter or listener is NULL.", __func__); + return false; + } + DLIST_FOR_EACH_ENTRY(it, &adapter->listenerList, struct HdfDevEventlistener, listNode) { if (it == listener) { HDF_LOGE("Add a listener for duplicate dev-event"); @@ -1024,6 +1035,11 @@ static int32_t GetListenerCount(struct HdfDevListenerThread *thread) struct HdfDevEventlistener *listener = NULL; int32_t count = 0; + if (thread == NULL) { + HDF_LOGE("%{public}s: thread is NULL.", __func__); + return count; + } + OsalMutexLock(&thread->mutex); if (thread->listenerListPtr != NULL) { DLIST_FOR_EACH_ENTRY(listener, thread->listenerListPtr, struct HdfDevEventlistener, listNode) { @@ -1032,12 +1048,15 @@ static int32_t GetListenerCount(struct HdfDevListenerThread *thread) } struct HdfSyscallAdapter *adapter = NULL; - DLIST_FOR_EACH_ENTRY(adapter, thread->adapterListPtr, struct HdfSyscallAdapter, listNode) { - OsalMutexLock(&adapter->mutex); - DLIST_FOR_EACH_ENTRY(listener, &adapter->listenerList, struct HdfDevEventlistener, listNode) { - count++; + + if (thread->adapterListPtr != NULL) { + DLIST_FOR_EACH_ENTRY(adapter, thread->adapterListPtr, struct HdfSyscallAdapter, listNode) { + OsalMutexLock(&adapter->mutex); + DLIST_FOR_EACH_ENTRY(listener, &adapter->listenerList, struct HdfDevEventlistener, listNode) { + count++; + } + OsalMutexUnlock(&adapter->mutex); } - OsalMutexUnlock(&adapter->mutex); } OsalMutexUnlock(&thread->mutex);