• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) Huawei Technologies Co., Ltd. 2023. All rights reserved.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  * http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #ifndef TRACE_DATA_CACHE_WRITER_H
17 #define TRACE_DATA_CACHE_WRITER_H
18 
19 #include "trace_data_cache_reader.h"
20 
21 namespace SysTuning {
22 namespace TraceStreamer {
23 using namespace TraceStdtype;
24 class TraceDataCacheWriter : virtual public TraceDataCacheBase {
25 public:
26     TraceDataCacheWriter() = default;
27     TraceDataCacheWriter(const TraceDataCacheWriter &) = delete;
28     TraceDataCacheWriter &operator=(const TraceDataCacheWriter &) = delete;
29     ~TraceDataCacheWriter() override;
30     void Clear();
31 
32 public:
33     InternalPid GetProcessInternalPid(uint32_t pid);
34     Process *GetProcessData(InternalPid internalPid);
35     uint32_t AppendNewProcessData(uint32_t pid, const std::string &name, uint64_t startTs);
36     InternalTid NewInternalThread(uint32_t tid);
37     Thread *GetThreadData(InternalTid internalTid);
38     void UpdateTraceTime(uint64_t timeStamp);
39     void UpdateTraceMinTime(uint64_t timestampMin);
40     void MixTraceTime(uint64_t timestampMin, uint64_t timestampMax);
41     CallStack *GetInternalSlicesData();
42     CallStack *GetIrqData();
43     Filter *GetFilterData();
44     Raw *GetRawData();
45     Measure *GetMeasureData();
46     Measure *GetSysMemMeasureData();
47     Measure *GetProcessMeasureData();
48     ThreadStateData *GetThreadStateData();
49     SchedSlice *GetSchedSliceData();
50     CpuMeasureFilter *GetCpuMeasuresData();
51     Instants *GetInstantsData();
52     ProcessMeasureFilter *GetProcessMeasureFilterData();
53     ClockEventData *GetClockEventFilterData();
54     ClkEventData *GetClkEventFilterData();
55     StatAndInfo *GetStatAndInfo();
56     MetaData *GetMetaData();
57     SymbolsData *GetSymbolsData();
58     SysCall *GetSysCallData();
59     LogInfo *GetHilogData();
60     NativeHook *GetNativeHookData();
61     NativeHookFrame *GetNativeHookFrameData();
62     NativeHookStatistic *GetNativeHookStatisticsData();
63     Hidump *GetHidumpData();
64     PerfCallChain *GetPerfCallChainData();
65     PerfFiles *GetPerfFilesData();
66     PerfSample *GetPerfSampleData();
67     PerfThread *GetPerfThreadData();
68     PerfReport *GetPerfReportData();
69     PerfNapiAsync *GetPerfNapiAsyncData();
70     ArgSet *GetArgSetData();
71     DataType *GetDataTypeData();
72     SysMeasureFilter *GetSysMeasureFilterData();
73     NetDetailData *GetNetworkData();
74     DiskIOData *GetDiskIOData();
75     CpuUsageDetailData *GetCpuUsageInfoData();
76     LiveProcessDetailData *GetLiveProcessData();
77     FileSystemSample *GetFileSystemSample();
78     EbpfCallStackData *GetEbpfCallStack();
79     PagedMemorySampleData *GetPagedMemorySampleData();
80     HiSysEventSubkeys *GetHiSysEventSubkeysData();
81     HiSysEventMeasureData *GetHiSysEventMeasureData();
82     HiSysEventDeviceStateData *GetHiSysEventDeviceStateData();
83     TraceConfig *GetTraceConfigData();
84     HiSysEventAllEventData *GetHiSysEventAllEventData();
85     SmapsData *GetSmapsData();
86     BioLatencySampleData *GetBioLatencySampleData();
87     ClockSnapshotData *GetClockSnapshotData();
88     DataSourceClockIdData *GetDataSourceClockIdData();
89     FrameSlice *GetFrameSliceData();
90     FrameMaps *GetFrameMapsData();
91     GPUSlice *GetGPUSliceData();
92     DmaFence *GetDmaFenceData();
93     TaskPoolInfo *GetTaskPoolData();
94     JsHeapFiles *GetJsHeapFilesData();
95     JsHeapEdges *GetJsHeapEdgesData();
96     JsHeapInfo *GetJsHeapInfoData();
97     JsHeapLocation *GetJsHeapLocationData();
98     JsHeapNodes *GetJsHeapNodesData();
99     JsHeapSample *GetJsHeapSampleData();
100     JsHeapString *GetJsHeapStringData();
101     JsHeapTraceFuncInfo *GetJsHeapTraceFuncInfoData();
102     JsHeapTraceNode *GetJsHeapTraceNodeData();
103     JsCpuProfilerNode *GetJsCpuProfilerNodeData();
104     JsCpuProfilerSample *GetJsCpuProfilerSampleData();
105     JsConfig *GetJsConfigData();
106     AppStartup *GetAppStartupData();
107     SoStaticInitalization *GetSoStaticInitalizationData();
108     Animation *GetAnimation();
109     DeviceInfo *GetDeviceInfo();
110     DynamicFrame *GetDynamicFrame();
111     AshMemData *GetAshMemData();
112     DmaMemData *GetDmaMemData();
113     GpuProcessMemData *GetGpuProcessMemData();
114     GpuWindowMemData *GetGpuWindowMemData();
115     CpuDumpInfo *GetCpuDumpInfo();
116     ProfileMemInfo *GetProfileMemInfo();
117     RSImageDumpInfo *GetRSImageDumpInfo();
118 
119 private:
120     void ClearBase();
121     void ClearMeasure();
122     void ClearHiperf();
123     void ClearArkTs();
124     void ClearNativeMemory();
125     void ClearEbpf();
126     void ClearTemplate();
127 };
128 } // namespace TraceStreamer
129 } // namespace SysTuning
130 #endif
131