Lines Matching refs:workspace
111 static int InitTraceWorkspace(TraceWorkspace *workspace)
113 workspace->traceRootPath = NULL;
114 workspace->traceState = TRACE_STATE_IDLE;
115 workspace->compress = 0;
118 workspace->jsonRootNode = cJSON_Parse(fileBuf);
119 PLUGIN_CHECK(workspace->jsonRootNode != NULL, free(fileBuf);
121 workspace->compress = cJSON_IsTrue(cJSON_GetObjectItem(workspace->jsonRootNode, "compress")) ? 1 : 0;
122 PLUGIN_LOGI("InitTraceWorkspace compress :%d", workspace->compress);
127 static void DestroyTraceWorkspace(TraceWorkspace *workspace)
129 if (workspace->traceRootPath) {
130 free(workspace->traceRootPath);
131 workspace->traceRootPath = NULL;
133 if (workspace->jsonRootNode) {
134 cJSON_Delete(workspace->jsonRootNode);
135 workspace->jsonRootNode = NULL;
137 workspace->traceState = TRACE_STATE_IDLE;
140 static bool IsTraceMountedInner(TraceWorkspace *workspace, const char *fsPath)
142 int len = sprintf_s((char *)workspace->buffer, sizeof(workspace->buffer),
145 if (access(workspace->buffer, F_OK) != -1) {
146 workspace->traceRootPath = strdup(fsPath);
147 PLUGIN_CHECK(workspace->traceRootPath != NULL, return false, "Failed to dup fsPath");
153 static bool IsTraceMounted(TraceWorkspace *workspace)
155 return IsTraceMountedInner(workspace, TRACE_DEBUG_FS_PATH) ||
156 IsTraceMountedInner(workspace, TRACE_FS_PATH);
161 TraceWorkspace *workspace = GetTraceWorkspace();
162 PLUGIN_CHECK(workspace != NULL, return false, "Failed to get trace workspace");
163 int len = sprintf_s((char *)workspace->buffer, sizeof(workspace->buffer),
164 "%s%s", workspace->traceRootPath, filename);
166 return access(workspace->buffer, W_OK) != -1;
172 TraceWorkspace *workspace = GetTraceWorkspace();
173 PLUGIN_CHECK(workspace != NULL, return false, "Failed to get trace workspace");
174 int len = sprintf_s((char *)workspace->buffer, sizeof(workspace->buffer),
175 "%s%s", workspace->traceRootPath, filename);
178 realpath(workspace->buffer, realPath);
180 PLUGIN_CHECK(outfile != NULL, return false, "Failed to open file %s.", workspace->buffer);
221 TraceWorkspace *workspace = GetTraceWorkspace();
222 PLUGIN_CHECK(workspace != NULL, return false, "Failed to get trace workspace");
223 int len = sprintf_s((char *)workspace->buffer, sizeof(workspace->buffer), "%" PRIu64 "", tags);
225 return SystemWriteParam(TRACE_TAG_PARAMETER, workspace->buffer) == 0;
243 TraceWorkspace *workspace = GetTraceWorkspace();
244 PLUGIN_CHECK(workspace != NULL, return false, "Failed to get trace workspace");
246 cJSON *userItem = GetArrayItem(workspace->jsonRootNode, &size, TRACE_CFG_USER);
266 static bool SetKernelTraceEnabled(const TraceWorkspace *workspace, bool enabled)
271 cJSON *kernelItem = GetArrayItem(workspace->jsonRootNode, &size, TRACE_CFG_KERNEL);
297 TraceWorkspace *workspace = GetTraceWorkspace();
298 PLUGIN_CHECK(workspace != NULL, return false, "Failed to get trace workspace");
299 return SetKernelTraceEnabled(workspace, false);
304 TraceWorkspace *workspace = GetTraceWorkspace();
305 PLUGIN_CHECK(workspace != NULL, return false, "Failed to get trace workspace");
314 ret = SetKernelTraceEnabled(workspace, false);
316 return SetKernelTraceEnabled(workspace, true);
326 TraceWorkspace *workspace = GetTraceWorkspace();
327 PLUGIN_CHECK(workspace != NULL, return false, "Failed to get trace workspace");
329 int len = sprintf_s((char *)workspace->buffer, sizeof(workspace->buffer),
330 "%s%s", workspace->traceRootPath, TRACE_PATH);
333 realpath(workspace->buffer, realPath);
336 PLUGIN_CHECK(fd >= 0, return false, "Failed to open file %s errno %d", workspace->buffer, errno);
378 static void DumpTrace(const TraceWorkspace *workspace, int outFd, const char *path)
380 int len = sprintf_s((char *)workspace->buffer, sizeof(workspace->buffer), "%s%s", workspace->traceRootPath, path);
383 realpath(workspace->buffer, realPath);
385 PLUGIN_CHECK(traceFd >= 0, return, "Failed to open file %s errno %d", workspace->buffer, errno);
389 if (workspace->compress) {
406 TraceWorkspace *workspace = GetTraceWorkspace();
407 PLUGIN_CHECK(workspace != NULL, return false, "Failed to get trace workspace");
408 int len = sprintf_s((char *)workspace->buffer, sizeof(workspace->buffer), "%s%s",
409 workspace->traceRootPath, TRACE_MARKER_PATH);
425 PLUGIN_LOGE("MarkOthersClockSync %s", workspace->buffer);
427 realpath(workspace->buffer, realPath);
444 TraceWorkspace *workspace = GetTraceWorkspace();
445 PLUGIN_CHECK(workspace != NULL, return 0, "Failed to get trace workspace");
446 PLUGIN_CHECK(workspace->traceState == TRACE_STATE_IDLE, return 0,
447 "Invalid state for trace %d", workspace->traceState);
449 InitTraceWorkspace(workspace);
450 PLUGIN_CHECK(IsTraceMounted(workspace), return -1);
452 PLUGIN_CHECK(workspace->traceRootPath != NULL && workspace->jsonRootNode != NULL,
469 workspace->traceState = TRACE_STATE_STARTED;
476 TraceWorkspace *workspace = GetTraceWorkspace();
477 PLUGIN_CHECK(workspace != NULL, return 0, "Failed to get trace workspace");
478 PLUGIN_CHECK(workspace->traceState == TRACE_STATE_STARTED, return 0, "Invalid state for trace %d",
479 workspace->traceState);
480 workspace->traceState = TRACE_STATE_STOPED;
488 const char *path = workspace->compress ? TRACE_OUTPUT_PATH_ZIP : TRACE_OUTPUT_PATH;
491 DumpTrace(workspace, outFd, TRACE_PATH);
502 DestroyTraceWorkspace(workspace);
509 TraceWorkspace *workspace = GetTraceWorkspace();
510 PLUGIN_CHECK(workspace != NULL, return 0, "Failed to get trace workspace");
511 PLUGIN_CHECK(workspace->traceState == TRACE_STATE_STARTED, return 0,
512 "Invalid state for trace %d", workspace->traceState);
514 workspace->traceState = TRACE_STATE_INTERRUPT;
524 DestroyTraceWorkspace(workspace);