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 Measure *GetXpowerMeasureData(); 49 ThreadStateData *GetThreadStateData(); 50 SchedSlice *GetSchedSliceData(); 51 CpuMeasureFilter *GetCpuMeasuresData(); 52 Instants *GetInstantsData(); 53 ProcessMeasureFilter *GetProcessMeasureFilterData(); 54 ClockEventData *GetClockEventFilterData(); 55 ClkEventData *GetClkEventFilterData(); 56 StatAndInfo *GetStatAndInfo(); 57 MetaData *GetMetaData(); 58 SymbolsData *GetSymbolsData(); 59 SysCall *GetSysCallData(); 60 LogInfo *GetHilogData(); 61 NativeHook *GetNativeHookData(); 62 NativeHookFrame *GetNativeHookFrameData(); 63 NativeHookStatistic *GetNativeHookStatisticsData(); 64 Hidump *GetHidumpData(); 65 PerfCallChain *GetPerfCallChainData(); 66 PerfFiles *GetPerfFilesData(); 67 PerfSample *GetPerfSampleData(); 68 PerfThread *GetPerfThreadData(); 69 PerfReport *GetPerfReportData(); 70 PerfNapiAsync *GetPerfNapiAsyncData(); 71 ArgSet *GetArgSetData(); 72 DataType *GetDataTypeData(); 73 SysMeasureFilter *GetSysMeasureFilterData(); 74 NetDetailData *GetNetworkData(); 75 DiskIOData *GetDiskIOData(); 76 CpuUsageDetailData *GetCpuUsageInfoData(); 77 LiveProcessDetailData *GetLiveProcessData(); 78 FileSystemSample *GetFileSystemSample(); 79 EbpfCallStackData *GetEbpfCallStack(); 80 PagedMemorySampleData *GetPagedMemorySampleData(); 81 HiSysEventSubkeys *GetHiSysEventSubkeysData(); 82 HiSysEventMeasureData *GetHiSysEventMeasureData(); 83 HiSysEventDeviceStateData *GetHiSysEventDeviceStateData(); 84 TraceConfig *GetTraceConfigData(); 85 HiSysEventAllEventData *GetHiSysEventAllEventData(); 86 SmapsData *GetSmapsData(); 87 BioLatencySampleData *GetBioLatencySampleData(); 88 ClockSnapshotData *GetClockSnapshotData(); 89 DataSourceClockIdData *GetDataSourceClockIdData(); 90 FrameSlice *GetFrameSliceData(); 91 FrameMaps *GetFrameMapsData(); 92 GPUSlice *GetGPUSliceData(); 93 DmaFence *GetDmaFenceData(); 94 TaskPoolInfo *GetTaskPoolData(); 95 JsHeapFiles *GetJsHeapFilesData(); 96 JsHeapEdges *GetJsHeapEdgesData(); 97 JsHeapInfo *GetJsHeapInfoData(); 98 JsHeapLocation *GetJsHeapLocationData(); 99 JsHeapNodes *GetJsHeapNodesData(); 100 JsHeapSample *GetJsHeapSampleData(); 101 JsHeapString *GetJsHeapStringData(); 102 JsHeapTraceFuncInfo *GetJsHeapTraceFuncInfoData(); 103 JsHeapTraceNode *GetJsHeapTraceNodeData(); 104 JsCpuProfilerNode *GetJsCpuProfilerNodeData(); 105 JsCpuProfilerSample *GetJsCpuProfilerSampleData(); 106 JsConfig *GetJsConfigData(); 107 AppStartup *GetAppStartupData(); 108 SoStaticInitalization *GetSoStaticInitalizationData(); 109 Animation *GetAnimation(); 110 DeviceInfo *GetDeviceInfo(); 111 DynamicFrame *GetDynamicFrame(); 112 AshMemData *GetAshMemData(); 113 DmaMemData *GetDmaMemData(); 114 GpuProcessMemData *GetGpuProcessMemData(); 115 GpuWindowMemData *GetGpuWindowMemData(); 116 CpuDumpInfo *GetCpuDumpInfo(); 117 ProfileMemInfo *GetProfileMemInfo(); 118 RSImageDumpInfo *GetRSImageDumpInfo(); 119 120 private: 121 void ClearBase(); 122 void ClearMeasure(); 123 void ClearHiperf(); 124 void ClearArkTs(); 125 void ClearNativeMemory(); 126 void ClearEbpf(); 127 void ClearTemplate(); 128 }; 129 } // namespace TraceStreamer 130 } // namespace SysTuning 131 #endif 132