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