1 /* 2 * Copyright (C) 2024 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 #ifndef SRC_TRACE_PROCESSOR_IMPORTERS_ETM_STORAGE_HANDLE_H_ 18 #define SRC_TRACE_PROCESSOR_IMPORTERS_ETM_STORAGE_HANDLE_H_ 19 20 #include <memory> 21 22 #include "perfetto/trace_processor/trace_blob_view.h" 23 #include "src/trace_processor/tables/etm_tables_py.h" 24 #include "src/trace_processor/types/trace_processor_context.h" 25 26 namespace perfetto::trace_processor { 27 class TraceStorage; 28 namespace etm { 29 30 class Configuration; 31 32 enum EtmV4ConfigurationTableFlag : uint64_t { 33 ETM_V4_CONFIGURATION_TABLE_FLAG_HAS_CYCLE_COUNT = 1ull << 0, 34 ETM_V4_CONFIGURATION_TABLE_FLAG_TS_ENABLED = 1ull << 1, 35 }; 36 37 class StorageHandle { 38 public: StorageHandle(TraceProcessorContext * context)39 explicit StorageHandle(TraceProcessorContext* context) 40 : storage_(context->storage.get()) {} StorageHandle(TraceStorage * storage)41 explicit StorageHandle(TraceStorage* storage) : storage_(storage) {} 42 43 void StoreEtmV4Config(tables::EtmV4ConfigurationTable::Id id, 44 std::unique_ptr<Configuration> config); 45 const Configuration& GetEtmV4Config( 46 tables::EtmV4ConfigurationTable::Id) const; 47 48 void StoreTrace(tables::EtmV4TraceTable::Id id, TraceBlobView trace); 49 const TraceBlobView& GetTrace(tables::EtmV4TraceTable::Id id) const; 50 51 private: 52 TraceStorage* storage_; 53 }; 54 55 } // namespace etm 56 } // namespace perfetto::trace_processor 57 58 #endif // SRC_TRACE_PROCESSOR_IMPORTERS_ETM_STORAGE_HANDLE_H_ 59