Linux Perf
cs-etm.h
Go to the documentation of this file.
1
/* SPDX-License-Identifier: GPL-2.0 */
2
/*
3
* Copyright(C) 2015 Linaro Limited. All rights reserved.
4
* Author: Mathieu Poirier <mathieu.poirier@linaro.org>
5
*/
6
7
#ifndef INCLUDE__UTIL_PERF_CS_ETM_H__
8
#define INCLUDE__UTIL_PERF_CS_ETM_H__
9
10
#include "
util/event.h
"
11
#include "
util/session.h
"
12
13
/* Versionning header in case things need tro change in the future. That way
14
* decoding of old snapshot is still possible.
15
*/
16
enum
{
17
/* Starting with 0x0 */
18
CS_HEADER_VERSION_0
,
19
/* PMU->type (32 bit), total # of CPUs (32 bit) */
20
CS_PMU_TYPE_CPUS
,
21
CS_ETM_SNAPSHOT
,
22
CS_HEADER_VERSION_0_MAX
,
23
};
24
25
/* Beginning of header common to both ETMv3 and V4 */
26
enum
{
27
CS_ETM_MAGIC
,
28
CS_ETM_CPU
,
29
};
30
31
/* ETMv3/PTM metadata */
32
enum
{
33
/* Dynamic, configurable parameters */
34
CS_ETM_ETMCR
=
CS_ETM_CPU
+ 1,
35
CS_ETM_ETMTRACEIDR
,
36
/* RO, taken from sysFS */
37
CS_ETM_ETMCCER
,
38
CS_ETM_ETMIDR
,
39
CS_ETM_PRIV_MAX
,
40
};
41
42
/* ETMv4 metadata */
43
enum
{
44
/* Dynamic, configurable parameters */
45
CS_ETMV4_TRCCONFIGR
=
CS_ETM_CPU
+ 1,
46
CS_ETMV4_TRCTRACEIDR
,
47
/* RO, taken from sysFS */
48
CS_ETMV4_TRCIDR0
,
49
CS_ETMV4_TRCIDR1
,
50
CS_ETMV4_TRCIDR2
,
51
CS_ETMV4_TRCIDR8
,
52
CS_ETMV4_TRCAUTHSTATUS
,
53
CS_ETMV4_PRIV_MAX
,
54
};
55
56
/* RB tree for quick conversion between traceID and CPUs */
57
struct
intlist
*
traceid_list
;
58
59
#define KiB(x) ((x) * 1024)
60
#define MiB(x) ((x) * 1024 * 1024)
61
62
#define CS_ETM_HEADER_SIZE (CS_HEADER_VERSION_0_MAX * sizeof(u64))
63
64
static
const
u64
__perf_cs_etmv3_magic
= 0x3030303030303030ULL;
65
static
const
u64
__perf_cs_etmv4_magic
= 0x4040404040404040ULL;
66
#define CS_ETMV3_PRIV_SIZE (CS_ETM_PRIV_MAX * sizeof(u64))
67
#define CS_ETMV4_PRIV_SIZE (CS_ETMV4_PRIV_MAX * sizeof(u64))
68
69
#ifdef HAVE_CSTRACE_SUPPORT
70
int
cs_etm__process_auxtrace_info
(
union
perf_event
*
event
,
71
struct
perf_session
*
session
);
72
#else
73
static
inline
int
74
cs_etm__process_auxtrace_info
(
union
perf_event
*
event
__maybe_unused,
75
struct
perf_session
*
session
__maybe_unused)
76
{
77
return
-1;
78
}
79
#endif
80
81
#endif
CS_PMU_TYPE_CPUS
Definition:
cs-etm.h:20
__perf_cs_etmv3_magic
static const u64 __perf_cs_etmv3_magic
Definition:
cs-etm.h:64
CS_ETM_SNAPSHOT
Definition:
cs-etm.h:21
CS_ETM_ETMCCER
Definition:
cs-etm.h:37
CS_ETM_MAGIC
Definition:
cs-etm.h:27
session.h
perf_event
Definition:
event.h:623
CS_ETMV4_TRCTRACEIDR
Definition:
cs-etm.h:46
__perf_cs_etmv4_magic
static const u64 __perf_cs_etmv4_magic
Definition:
cs-etm.h:65
CS_ETMV4_TRCIDR2
Definition:
cs-etm.h:50
session
static struct perf_session * session
Definition:
builtin-lock.c:34
event
#define event
Definition:
parse-events-flex.c:1944
CS_HEADER_VERSION_0
Definition:
cs-etm.h:18
CS_ETMV4_TRCAUTHSTATUS
Definition:
cs-etm.h:52
CS_ETMV4_TRCIDR0
Definition:
cs-etm.h:48
CS_ETM_ETMIDR
Definition:
cs-etm.h:38
CS_ETMV4_TRCIDR1
Definition:
cs-etm.h:49
event.h
CS_ETM_ETMTRACEIDR
Definition:
cs-etm.h:35
CS_ETMV4_TRCCONFIGR
Definition:
cs-etm.h:45
CS_ETM_PRIV_MAX
Definition:
cs-etm.h:39
CS_ETM_CPU
Definition:
cs-etm.h:28
cs_etm__process_auxtrace_info
static int cs_etm__process_auxtrace_info(union perf_event *event __maybe_unused, struct perf_session *session __maybe_unused)
Definition:
cs-etm.h:74
traceid_list
struct intlist * traceid_list
Definition:
cs-etm.h:57
CS_HEADER_VERSION_0_MAX
Definition:
cs-etm.h:22
perf_session
Definition:
session.h:22
CS_ETMV4_PRIV_MAX
Definition:
cs-etm.h:53
CS_ETMV4_TRCIDR8
Definition:
cs-etm.h:51
intlist
Definition:
intlist.h:16
CS_ETM_ETMCR
Definition:
cs-etm.h:34
util
cs-etm.h
Generated by
1.8.13