blob: a2b4dd410e386e0458b62dfa27d410d3f47002e3 [file] [log] [blame]
/*
* Copyright (C) 2019 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef SRC_TRACE_PROCESSOR_IMPORTERS_FUCHSIA_FUCHSIA_RECORD_H_
#define SRC_TRACE_PROCESSOR_IMPORTERS_FUCHSIA_FUCHSIA_RECORD_H_
#include "perfetto/trace_processor/trace_blob_view.h"
#include "src/trace_processor/containers/string_pool.h"
#include <vector>
namespace perfetto {
namespace trace_processor {
struct FuchsiaThreadInfo {
uint64_t pid;
uint64_t tid;
};
// Data from a trace provider that is necessary for interpreting a binary
// record. Namely, the record itself and the entries of the string table and the
// thread table that are referenced by the record. This enables understanding
// the binary record after arbitrary reordering.
class FuchsiaRecord {
public:
explicit FuchsiaRecord(TraceBlobView record_view)
: record_view_(std::move(record_view)) {}
struct StringTableEntry {
uint32_t index;
StringPool::Id string_id;
};
struct ThreadTableEntry {
uint32_t index;
FuchsiaThreadInfo info;
};
void InsertString(uint32_t, StringPool::Id);
StringPool::Id GetString(uint32_t);
void InsertThread(uint32_t, FuchsiaThreadInfo);
FuchsiaThreadInfo GetThread(uint32_t);
void set_ticks_per_second(uint64_t ticks_per_second) {
ticks_per_second_ = ticks_per_second;
}
uint64_t get_ticks_per_second() { return ticks_per_second_; }
TraceBlobView* record_view() { return &record_view_; }
private:
TraceBlobView record_view_;
std::vector<StringTableEntry> string_entries_;
std::vector<ThreadTableEntry> thread_entries_;
uint64_t ticks_per_second_ = 1000000000;
};
} // namespace trace_processor
} // namespace perfetto
#endif // SRC_TRACE_PROCESSOR_IMPORTERS_FUCHSIA_FUCHSIA_RECORD_H_