183d980352587ce6130a6e3d71fce2a861f809bb6Hector Dearman/*
283d980352587ce6130a6e3d71fce2a861f809bb6Hector Dearman * Copyright (C) 2017 The Android Open Source Project
383d980352587ce6130a6e3d71fce2a861f809bb6Hector Dearman *
483d980352587ce6130a6e3d71fce2a861f809bb6Hector Dearman * Licensed under the Apache License, Version 2.0 (the "License");
583d980352587ce6130a6e3d71fce2a861f809bb6Hector Dearman * you may not use this file except in compliance with the License.
683d980352587ce6130a6e3d71fce2a861f809bb6Hector Dearman * You may obtain a copy of the License at
783d980352587ce6130a6e3d71fce2a861f809bb6Hector Dearman *
883d980352587ce6130a6e3d71fce2a861f809bb6Hector Dearman *      http://www.apache.org/licenses/LICENSE-2.0
983d980352587ce6130a6e3d71fce2a861f809bb6Hector Dearman *
1083d980352587ce6130a6e3d71fce2a861f809bb6Hector Dearman * Unless required by applicable law or agreed to in writing, software
1183d980352587ce6130a6e3d71fce2a861f809bb6Hector Dearman * distributed under the License is distributed on an "AS IS" BASIS,
1283d980352587ce6130a6e3d71fce2a861f809bb6Hector Dearman * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1383d980352587ce6130a6e3d71fce2a861f809bb6Hector Dearman * See the License for the specific language governing permissions and
1483d980352587ce6130a6e3d71fce2a861f809bb6Hector Dearman * limitations under the License.
1583d980352587ce6130a6e3d71fce2a861f809bb6Hector Dearman */
1683d980352587ce6130a6e3d71fce2a861f809bb6Hector Dearman
1757e67e141cb2ed720c369b244d832186d5d38dbbPrimiano Tucci#ifndef SRC_FTRACE_READER_EVENT_INFO_H_
1857e67e141cb2ed720c369b244d832186d5d38dbbPrimiano Tucci#define SRC_FTRACE_READER_EVENT_INFO_H_
1983d980352587ce6130a6e3d71fce2a861f809bb6Hector Dearman
2083d980352587ce6130a6e3d71fce2a861f809bb6Hector Dearman#include <vector>
2183d980352587ce6130a6e3d71fce2a861f809bb6Hector Dearman
22cc6dcb0c65320bcbfef60507e2352ec8da53adc7Hector Dearman#include "perfetto/base/logging.h"
23ba3eeaeb6068b9426d891041b0ab1c827bd63d02Florian Mayer#include "src/ftrace_reader/event_info_constants.h"
24cc6dcb0c65320bcbfef60507e2352ec8da53adc7Hector Dearman
2583d980352587ce6130a6e3d71fce2a861f809bb6Hector Dearmannamespace perfetto {
2683d980352587ce6130a6e3d71fce2a861f809bb6Hector Dearman
2783d980352587ce6130a6e3d71fce2a861f809bb6Hector Dearman// The compile time information needed to read the raw ftrace buffer.
2883d980352587ce6130a6e3d71fce2a861f809bb6Hector Dearman// Specifically for each event we have a proto we fill:
2983d980352587ce6130a6e3d71fce2a861f809bb6Hector Dearman//  The event name (e.g. sched_switch)
3083d980352587ce6130a6e3d71fce2a861f809bb6Hector Dearman//  The event group  (e.g. sched)
317f37dc899fc5cb56a5f5d5c75790dfa775104fc8Hector Dearman//  The proto field ID of this event in the FtraceEvent proto.
3283d980352587ce6130a6e3d71fce2a861f809bb6Hector Dearman//  For each field in the proto:
3383d980352587ce6130a6e3d71fce2a861f809bb6Hector Dearman//    The field name (e.g. prev_comm)
3483d980352587ce6130a6e3d71fce2a861f809bb6Hector Dearman//    The proto field id for this field
3583d980352587ce6130a6e3d71fce2a861f809bb6Hector Dearman//    The proto field type for this field (e.g. kProtoString or kProtoUint32)
3683d980352587ce6130a6e3d71fce2a861f809bb6Hector Dearman// The other fields: ftrace_event_id, ftrace_size, ftrace_offset, ftrace_type
3783d980352587ce6130a6e3d71fce2a861f809bb6Hector Dearman// are zeroed.
3883d980352587ce6130a6e3d71fce2a861f809bb6Hector Dearmanstd::vector<Event> GetStaticEventInfo();
3983d980352587ce6130a6e3d71fce2a861f809bb6Hector Dearman
4083d980352587ce6130a6e3d71fce2a861f809bb6Hector Dearman}  // namespace perfetto
4183d980352587ce6130a6e3d71fce2a861f809bb6Hector Dearman
4257e67e141cb2ed720c369b244d832186d5d38dbbPrimiano Tucci#endif  // SRC_FTRACE_READER_EVENT_INFO_H_
43