From e9d8f1fd0fc3c18862499ecb912daa558d391ccf Mon Sep 17 00:00:00 2001 From: zhanghang133 Date: Wed, 20 Nov 2024 11:20:06 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9B=9E=E9=80=80camera=5Fhost=E8=BF=9B?= =?UTF-8?q?=E7=A8=8B=E9=80=80=E5=87=BA=E6=97=B6=E4=BD=BF=E7=94=A8=5Fexit(0?= =?UTF-8?q?)=E5=87=BD=E6=95=B0=E9=80=80=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: zhanghang133 --- adapter/uhdf2/host/devhost.c | 36 +++++++++++++++++------------------- 1 file changed, 17 insertions(+), 19 deletions(-) diff --git a/adapter/uhdf2/host/devhost.c b/adapter/uhdf2/host/devhost.c index bacd0e35a..747e842da 100644 --- a/adapter/uhdf2/host/devhost.c +++ b/adapter/uhdf2/host/devhost.c @@ -20,7 +20,6 @@ #include #include #include -#include #include "securec.h" #include "parameter.h" @@ -144,40 +143,40 @@ static void SetMallopt(int argc, char **argv) return; } -static void SetHostProperties(int argc, char **argv, const char *hostName) -{ - SetProcTitle(argv, hostName); - StartMemoryHook(hostName); - if ((strcmp(argv[DEVHOST_PROCESS_PRI_POS], INVALID_PRIORITY) != 0) && - (strcmp(argv[DEVHOST_THREAD_PRI_POS], INVALID_PRIORITY) != 0)) { - HdfSetProcPriority(argv); - } - if (argc > DEVHOST_MIN_INPUT_PARAM_NUM) { - SetMallopt(argc, argv); - } -} - int main(int argc, char **argv) { if (argc < DEVHOST_MIN_INPUT_PARAM_NUM) { HDF_LOGE("Devhost main parameter error, argc: %{public}d", argc); return HDF_ERR_INVALID_PARAM; } + prctl(PR_SET_PDEATHSIG, SIGKILL); // host process should exit with devmgr process + int hostId = 0; if (!HdfStringToInt(argv[DEVHOST_INPUT_PARAM_HOSTID_POS], &hostId)) { HDF_LOGE("Devhost main parameter error, argv[1]: %{public}s", argv[DEVHOST_INPUT_PARAM_HOSTID_POS]); return HDF_ERR_INVALID_PARAM; } + const char *hostName = argv[DEVHOST_HOST_NAME_POS]; HDF_LOGI("hdf device host %{public}s %{public}d start", hostName, hostId); - SetHostProperties(argc, argv, hostName); + SetProcTitle(argv, hostName); + StartMemoryHook(hostName); + if ((strcmp(argv[DEVHOST_PROCESS_PRI_POS], INVALID_PRIORITY) != 0) && + (strcmp(argv[DEVHOST_THREAD_PRI_POS], INVALID_PRIORITY) != 0)) { + HdfSetProcPriority(argv); + } + if (argc > DEVHOST_MIN_INPUT_PARAM_NUM) { + SetMallopt(argc, argv); + } + struct IDevHostService *instance = DevHostServiceNewInstance(hostId, hostName); if (instance == NULL || instance->StartService == NULL) { HDF_LOGE("DevHostServiceGetInstance fail"); return HDF_ERR_INVALID_OBJECT; } HDF_LOGD("create IDevHostService of %{public}s success", hostName); + DevHostDumpInit(); HDF_LOGD("%{public}s start device service begin", hostName); int status = instance->StartService(instance); @@ -187,6 +186,7 @@ int main(int argc, char **argv) DevHostDumpDeInit(); return status; } + HdfPowerManagerInit(); struct DevHostServiceFull *fullService = (struct DevHostServiceFull *)instance; struct HdfMessageLooper *looper = &fullService->looper; @@ -194,11 +194,9 @@ int main(int argc, char **argv) HDF_LOGI("%{public}s start loop", hostName); looper->Start(looper); } + HdfPowerManagerExit(); DevHostDumpDeInit(); - HDF_LOGI("hdf device host %{public}s %{public}d %{public}d exit", hostName, hostId, status); - if (strcmp(hostName, "camera_host") == 0) { - _exit(status); - } + HDF_LOGI("hdf device host %{public}s %{public}d exit", hostName, hostId); return status; } -- Gitee