1d9f0492fSopenharmony_ci/* 2d9f0492fSopenharmony_ci * Copyright (c) 2024 Huawei Device Co., Ltd. 3d9f0492fSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4d9f0492fSopenharmony_ci * you may not use this file except in compliance with the License. 5d9f0492fSopenharmony_ci * You may obtain a copy of the License at 6d9f0492fSopenharmony_ci * 7d9f0492fSopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8d9f0492fSopenharmony_ci * 9d9f0492fSopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10d9f0492fSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 11d9f0492fSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12d9f0492fSopenharmony_ci * See the License for the specific language governing permissions and 13d9f0492fSopenharmony_ci * limitations under the License. 14d9f0492fSopenharmony_ci */ 15d9f0492fSopenharmony_ci 16d9f0492fSopenharmony_ci#include <errno.h> 17d9f0492fSopenharmony_ci#include <stdio.h> 18d9f0492fSopenharmony_ci#include <string.h> 19d9f0492fSopenharmony_ci#include <unistd.h> 20d9f0492fSopenharmony_ci#include "begetctl.h" 21d9f0492fSopenharmony_ci#include "init_utils.h" 22d9f0492fSopenharmony_ci#include "control_fd.h" 23d9f0492fSopenharmony_ci#ifdef ENABLE_ENTER_APPSPAWN_SANDBOX 24d9f0492fSopenharmony_ci#include "appspawn.h" 25d9f0492fSopenharmony_ci#endif 26d9f0492fSopenharmony_ci 27d9f0492fSopenharmony_ci#define APPSPAWN_CMD_NUMBER 1 28d9f0492fSopenharmony_ci 29d9f0492fSopenharmony_cistatic int SendAppspawnTimeMessage(const CmdAgent *agent, uint16_t type, const char *ptyName) 30d9f0492fSopenharmony_ci{ 31d9f0492fSopenharmony_ci#ifdef ENABLE_ENTER_APPSPAWN_SANDBOX 32d9f0492fSopenharmony_ci if ((agent == NULL) || (ptyName == NULL)) { 33d9f0492fSopenharmony_ci BEGET_LOGE("Invalid parameter"); 34d9f0492fSopenharmony_ci return -1; 35d9f0492fSopenharmony_ci } 36d9f0492fSopenharmony_ci 37d9f0492fSopenharmony_ci AppSpawnClientHandle clientHandle; 38d9f0492fSopenharmony_ci int ret = AppSpawnClientInit("Appspawn", &clientHandle); 39d9f0492fSopenharmony_ci BEGET_ERROR_CHECK(ret == 0, return -1, "AppSpawnClientInit error, errno = %d", errno); 40d9f0492fSopenharmony_ci AppSpawnReqMsgHandle reqHandle; 41d9f0492fSopenharmony_ci ret = AppSpawnReqMsgCreate(MSG_BEGET_SPAWNTIME, "init", &reqHandle); 42d9f0492fSopenharmony_ci if (ret != 0) { 43d9f0492fSopenharmony_ci AppSpawnClientDestroy(clientHandle); 44d9f0492fSopenharmony_ci return -1; 45d9f0492fSopenharmony_ci } 46d9f0492fSopenharmony_ci AppSpawnResult result = {}; 47d9f0492fSopenharmony_ci ret = AppSpawnClientSendMsg(clientHandle, reqHandle, &result); 48d9f0492fSopenharmony_ci if (ret != 0) { 49d9f0492fSopenharmony_ci AppSpawnClientDestroy(clientHandle); 50d9f0492fSopenharmony_ci return -1; 51d9f0492fSopenharmony_ci } 52d9f0492fSopenharmony_ci int minAppspawnTime = result.result; 53d9f0492fSopenharmony_ci int maxAppspawnTime = result.pid; 54d9f0492fSopenharmony_ci printf("minAppspawnTime: %d, maxAppspawnTime: %d \n", minAppspawnTime, maxAppspawnTime); 55d9f0492fSopenharmony_ci AppSpawnClientDestroy(clientHandle); 56d9f0492fSopenharmony_ci return 0; 57d9f0492fSopenharmony_ci#endif 58d9f0492fSopenharmony_ci return -1; 59d9f0492fSopenharmony_ci} 60d9f0492fSopenharmony_ci 61d9f0492fSopenharmony_cistatic int main_cmd(BShellHandle shell, int argc, char* argv[]) 62d9f0492fSopenharmony_ci{ 63d9f0492fSopenharmony_ci if (argc != APPSPAWN_CMD_NUMBER) { 64d9f0492fSopenharmony_ci BShellCmdHelp(shell, argc, argv); 65d9f0492fSopenharmony_ci return 0; 66d9f0492fSopenharmony_ci } 67d9f0492fSopenharmony_ci CmdAgent agent; 68d9f0492fSopenharmony_ci int ret = InitPtyInterface(&agent, ACTION_APP_SPAWNTIME, "init", (CallbackSendMsgProcess)SendAppspawnTimeMessage); 69d9f0492fSopenharmony_ci if (ret != 0) { 70d9f0492fSopenharmony_ci BEGET_LOGE("initptyinterface failed"); 71d9f0492fSopenharmony_ci return -1; 72d9f0492fSopenharmony_ci } 73d9f0492fSopenharmony_ci return 0; 74d9f0492fSopenharmony_ci} 75d9f0492fSopenharmony_ci 76d9f0492fSopenharmony_ciMODULE_CONSTRUCTOR(void) 77d9f0492fSopenharmony_ci{ 78d9f0492fSopenharmony_ci CmdInfo infos[] = { 79d9f0492fSopenharmony_ci {"appspawn_time", main_cmd, "get appspawn time", "appspawn_time", ""}, 80d9f0492fSopenharmony_ci }; 81d9f0492fSopenharmony_ci for (size_t i = 0; i < sizeof(infos) / sizeof(infos[0]); i++) { 82d9f0492fSopenharmony_ci BShellEnvRegisterCmd(GetShellHandle(), &infos[i]); 83d9f0492fSopenharmony_ci } 84d9f0492fSopenharmony_ci} 85d9f0492fSopenharmony_ci 86