• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2021 Huawei Device Co., Ltd.
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     ArgSet* GetArgSetData();
70     DataType* GetDataTypeData();
71     SysMeasureFilter* GetSysMeasureFilterData();
72     NetDetailData* GetNetworkData();
73     NetDetailData* GetNetworkDetailData();
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     TaskPoolInfo* GetTaskPoolData();
93     JsHeapFiles* GetJsHeapFilesData();
94     JsHeapEdges* GetJsHeapEdgesData();
95     JsHeapInfo* GetJsHeapInfoData();
96     JsHeapLocation* GetJsHeapLocationData();
97     JsHeapNodes* GetJsHeapNodesData();
98     JsHeapSample* GetJsHeapSampleData();
99     JsHeapString* GetJsHeapStringData();
100     JsHeapTraceFuncInfo* GetJsHeapTraceFuncInfoData();
101     JsHeapTraceNode* GetJsHeapTraceNodeData();
102     JsCpuProfilerNode* GetJsCpuProfilerNodeData();
103     JsCpuProfilerSample* GetJsCpuProfilerSampleData();
104     JsConfig* GetJsConfigData();
105     AppStartup* GetAppStartupData();
106     SoStaticInitalization* GetSoStaticInitalizationData();
107     Animation* GetAnimation();
108     DeviceInfo* GetDeviceInfo();
109     DynamicFrame* GetDynamicFrame();
110     AshMemData* GetAshMemData();
111     DmaMemData* GetDmaMemData();
112     GpuProcessMemData* GetGpuProcessMemData();
113     GpuWindowMemData* GetGpuWindowMemData();
114     CpuDumpInfo* GetCpuDumpInfo();
115     ProfileMemInfo* GetProfileMemInfo();
116     RSImageDumpInfo* GetRSImageDumpInfo();
117 
118 private:
119     void ClearBase();
120     void ClearMeasure();
121     void ClearHiperf();
122     void ClearArkTs();
123     void ClearNativeMemory();
124     void ClearEbpf();
125     void ClearTemplate();
126 };
127 } // namespace TraceStreamer
128 } // namespace SysTuning
129 #endif
130