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