linux/tools/perf/util/arm-spe-pkt-decoder.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0 */
   2/*
   3 * Arm Statistical Profiling Extensions (SPE) support
   4 * Copyright (c) 2017-2018, Arm Ltd.
   5 */
   6
   7#ifndef INCLUDE__ARM_SPE_PKT_DECODER_H__
   8#define INCLUDE__ARM_SPE_PKT_DECODER_H__
   9
  10#include <stddef.h>
  11#include <stdint.h>
  12
  13#define ARM_SPE_PKT_DESC_MAX            256
  14
  15#define ARM_SPE_NEED_MORE_BYTES         -1
  16#define ARM_SPE_BAD_PACKET              -2
  17
  18enum arm_spe_pkt_type {
  19        ARM_SPE_BAD,
  20        ARM_SPE_PAD,
  21        ARM_SPE_END,
  22        ARM_SPE_TIMESTAMP,
  23        ARM_SPE_ADDRESS,
  24        ARM_SPE_COUNTER,
  25        ARM_SPE_CONTEXT,
  26        ARM_SPE_OP_TYPE,
  27        ARM_SPE_EVENTS,
  28        ARM_SPE_DATA_SOURCE,
  29};
  30
  31struct arm_spe_pkt {
  32        enum arm_spe_pkt_type   type;
  33        unsigned char           index;
  34        uint64_t                payload;
  35};
  36
  37const char *arm_spe_pkt_name(enum arm_spe_pkt_type);
  38
  39int arm_spe_get_packet(const unsigned char *buf, size_t len,
  40                       struct arm_spe_pkt *packet);
  41
  42int arm_spe_pkt_desc(const struct arm_spe_pkt *packet, char *buf, size_t len);
  43#endif
  44