Lines Matching defs:content
154 AppSpawnContent *content = GetAppSpawnContent();
155 if (pid == content->reservedPid) {
157 content->reservedPid = 0;
677 AppSpawnContent *content = GetAppSpawnContent();
678 if (content == NULL || content->propertyBuffer == NULL) {
683 int ret = memcpy_s(content->propertyBuffer, MAX_MEM_SIZE, &property->message->msgHeader, sizeof(AppSpawnMsg));
685 ret = memcpy_s((char *)content->propertyBuffer + sizeof(AppSpawnMsg), MAX_MEM_SIZE - sizeof(AppSpawnMsg),
691 munmap((char *)content->propertyBuffer, MAX_MEM_SIZE);
692 content->propertyBuffer = NULL;
730 AppSpawnContent *content = GetAppSpawnContent();
731 if (content != NULL && content->propertyBuffer != NULL) {
732 ret = munmap(content->propertyBuffer, MAX_MEM_SIZE);
734 content->propertyBuffer = NULL;
738 static int SetPreforkProcessName(AppSpawnContent *content)
745 ret = memset_s(content->longProcName,
746 (size_t)content->longProcNameLen, 0, (size_t)content->longProcNameLen);
751 ret = strncpy_s(content->longProcName, content->longProcNameLen,
760 static void ProcessPreFork(AppSpawnContent *content, AppSpawningCtx *property)
762 APPSPAWN_CHECK(pipe(content->preforkFd) == 0, return, "prefork with prefork pipe failed %{public}d", errno);
763 APPSPAWN_CHECK_ONLY_EXPER(content->parentToChildFd[0] <= 0, close(content->parentToChildFd[0]);
764 content->parentToChildFd[0] = -1);
765 APPSPAWN_CHECK_ONLY_EXPER(content->parentToChildFd[1] <= 0, close(content->parentToChildFd[1]);
766 content->parentToChildFd[1] = -1);
767 APPSPAWN_CHECK(pipe(content->parentToChildFd) == 0, return, "prefork with prefork pipe failed %{public}d", errno);
769 content->reservedPid = fork();
771 content->reservedPid, content->preforkFd[0], content->preforkFd[1], content->parentToChildFd[0],
772 content->parentToChildFd[1]);
773 if (content->reservedPid == 0) {
776 int isRet = SetPreforkProcessName(content);
779 int infoSize = read(content->parentToChildFd[0], &client, sizeof(AppSpawnClient));
788 property->forkCtx.fd[0] = content->preforkFd[0];
789 property->forkCtx.fd[1] = content->preforkFd[1];
794 content->notifyResToParent(content, &property->client, APPSPAWN_MSG_INVALID);
799 ProcessExit(AppSpawnChild(content, &property->client));
800 } else if (content->reservedPid < 0) {
801 APPSPAWN_LOGE("prefork fork child process failed %{public}d", content->reservedPid);
805 static int AppSpawnProcessMsgForPrefork(AppSpawnContent *content, AppSpawnClient *client, pid_t *childPid)
810 if (content->reservedPid <= 0) {
814 ret = AppSpawnProcessMsg(content, client, childPid);
816 APPSPAWN_CHECK_ONLY_EXPER(content->propertyBuffer == NULL, ClearMMAP(client->id));
817 content->propertyBuffer = GetMapMem(property->client.id, "prefork", MAX_MEM_SIZE, false, false);
818 APPSPAWN_CHECK(content->propertyBuffer != NULL, return -1, "GetPreforkMem failed");
822 *childPid = content->reservedPid;
823 property->forkCtx.fd[0] = content->preforkFd[0];
824 property->forkCtx.fd[1] = content->preforkFd[1];
832 ssize_t writesize = write(content->parentToChildFd[1], client, sizeof(AppSpawnClient)) ;
838 ProcessPreFork(content, property);
842 static bool IsSupportPrefork(AppSpawnContent *content, AppSpawnClient *client)
845 if (client == NULL || content == NULL) {
848 if (!content->enablePerfork) {
853 if (content->mode == MODE_FOR_APP_SPAWN && !IsChildColdRun(property)
869 static int RunAppSpawnProcessMsg(AppSpawnContent *content, AppSpawnClient *client, pid_t *childPid)
873 if (IsBootFinished() && IsSupportPrefork(content, client)) {
874 ret = AppSpawnProcessMsgForPrefork(content, client, childPid);
879 ret = AppSpawnProcessMsg(content, client, childPid);
1045 static void NotifyResToParent(AppSpawnContent *content, AppSpawnClient *client, int result)
1081 void AppSpawnDestroyContent(AppSpawnContent *content)
1083 if (content == NULL) {
1086 if (content->parentToChildFd[0] > 0) {
1087 close(content->parentToChildFd[0]);
1089 if (content->parentToChildFd[1] > 0) {
1090 close(content->parentToChildFd[1]);
1092 AppSpawnMgr *appSpawnContent = (AppSpawnMgr *)content;
1094 CloseDevEncaps(appSpawnContent->content.fdEncaps);
1109 APPSPAWN_STATIC int AppSpawnColdStartApp(struct AppSpawnContent *content, AppSpawnClient *client)
1123 int ret = WriteMsgToChild(property, IsNWebSpawnMode((AppSpawnMgr *)content));
1137 char *mode = IsNWebSpawnMode((AppSpawnMgr *)content) ? "nweb_cold" : "app_cold";
1153 static AppSpawningCtx *GetAppSpawningCtxFromArg(AppSpawnMgr *content, int argc, char *const argv[])
1161 int isNweb = IsNWebSpawnMode(content);
1168 NotifyResToParent(&content->content, &property->client, APPSPAWN_SYSTEM_ERROR);
1192 NotifyResToParent(&content->content, &property->client, APPSPAWN_MSG_INVALID);
1198 static void AppSpawnColdRun(AppSpawnContent *content, int argc, char *const argv[])
1201 AppSpawnMgr *appSpawnContent = (AppSpawnMgr *)content;
1202 APPSPAWN_CHECK(appSpawnContent != NULL, return, "Invalid appspawn content");
1211 int ret = AppSpawnExecuteSpawningHook(content, &property->client);
1213 ret = AppSpawnExecutePreReplyHook(content, &property->client);
1215 NotifyResToParent(content, &property->client, ret);
1217 (void)AppSpawnExecutePostReplyHook(content, &property->client);
1220 if (content->runChildProcessor != NULL) {
1221 ret = content->runChildProcessor(content, &property->client);
1224 NotifyResToParent(content, &property->client, ret);
1228 AppSpawnEnvClear(content, &property->client);
1233 static void AppSpawnRun(AppSpawnContent *content, int argc, char *const argv[])
1236 AppSpawnMgr *appSpawnContent = (AppSpawnMgr *)content;
1237 APPSPAWN_CHECK(appSpawnContent != NULL, return, "Invalid appspawn content");
1246 appSpawnContent->content.fdEncaps = OpenDevEncaps();
1249 APPSPAWN_LOGI("AppSpawnRun exit mode: %{public}d ", content->mode);
1251 (void)ServerStageHookExecute(STAGE_SERVER_EXIT, content); // service exit,plugin can deal task
1252 AppSpawnDestroyContent(content);
1255 APPSPAWN_STATIC int AppSpawnClearEnv(AppSpawnMgr *content, AppSpawningCtx *property)
1257 APPSPAWN_CHECK(content != NULL, return 0, "Invalid appspawn content");
1259 AppSpawnDestroyContent(&content->content);
1279 appSpawnContent->content.longProcName = longProcName;
1280 appSpawnContent->content.longProcNameLen = nameLen;
1281 appSpawnContent->content.notifyResToParent = NotifyResToParent;
1283 appSpawnContent->content.runAppSpawn = AppSpawnColdRun;
1285 appSpawnContent->content.runAppSpawn = AppSpawnRun;
1286 appSpawnContent->content.coldStartApp = AppSpawnColdStartApp;
1289 APPSPAWN_CHECK(ret == 0, AppSpawnDestroyContent(&appSpawnContent->content);
1292 appSpawnContent->content.enablePerfork = IsEnablePerfork();
1293 return &appSpawnContent->content;
1329 AppSpawnContent *content = AppSpawnCreateContent(arg->socketName, argv[0], argvSize, arg->mode);
1330 APPSPAWN_CHECK(content != NULL, return NULL, "Failed to create content for %{public}s", arg->socketName);
1333 int ret = ServerStageHookExecute(STAGE_SERVER_PRELOAD, content); // Preload, prase the sandbox
1334 APPSPAWN_CHECK(ret == 0, AppSpawnDestroyContent(content);
1337 APPSPAWN_CHECK(content->runChildProcessor != NULL, AppSpawnDestroyContent(content);
1345 return content;
1511 AppSpawnContent *content = GetAppSpawnContent();
1512 if (!IsNWebSpawnMode((AppSpawnMgr *)content)) {
1522 (void) ServerStageHookExecute(STAGE_SERVER_EXIT, content);