gem5
v24.1.0.1
Loading...
Searching...
No Matches
cpu
nativetrace.hh
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2023 Arm Limited
3
* All rights reserved
4
*
5
* The license below extends only to copyright in the software and shall
6
* not be construed as granting a license to any other intellectual
7
* property including but not limited to intellectual property relating
8
* to a hardware implementation of the functionality of the software
9
* licensed hereunder. You may use the software subject to the license
10
* terms below provided that you ensure that this notice is replicated
11
* unmodified and in its entirety in all distributions of the software,
12
* modified or unmodified, in source code or in binary form.
13
*
14
* Copyright (c) 2006-2009 The Regents of The University of Michigan
15
* All rights reserved.
16
*
17
* Redistribution and use in source and binary forms, with or without
18
* modification, are permitted provided that the following conditions are
19
* met: redistributions of source code must retain the above copyright
20
* notice, this list of conditions and the following disclaimer;
21
* redistributions in binary form must reproduce the above copyright
22
* notice, this list of conditions and the following disclaimer in the
23
* documentation and/or other materials provided with the distribution;
24
* neither the name of the copyright holders nor the names of its
25
* contributors may be used to endorse or promote products derived from
26
* this software without specific prior written permission.
27
*
28
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
29
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
30
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
31
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
32
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
33
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
34
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
35
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
36
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
37
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
38
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
39
*/
40
41
#ifndef __CPU_NATIVETRACE_HH__
42
#define __CPU_NATIVETRACE_HH__
43
44
#include <unistd.h>
45
46
#include <cerrno>
47
48
#include "
base/socket.hh
"
49
#include "
base/trace.hh
"
50
#include "
base/types.hh
"
51
#include "
cpu/exetrace.hh
"
52
#include "
cpu/static_inst.hh
"
53
54
namespace
gem5
55
{
56
57
class
ThreadContext;
58
59
namespace
trace {
60
61
class
NativeTrace;
62
63
class
NativeTraceRecord
:
public
ExeTracerRecord
64
{
65
public
:
66
NativeTraceRecord
(
NativeTrace
*_parent,
67
Tick
_when,
ThreadContext
*_thread,
68
const
StaticInstPtr
_staticInst,
const
PCStateBase
&_pc,
69
const
StaticInstPtr
_macroStaticInst=
nullptr
);
70
71
void
dump
();
72
73
private
:
74
NativeTrace
*
parent
;
75
};
76
77
class
NativeTrace
:
public
ExeTracer
78
{
79
protected
:
80
int
fd
;
81
82
ListenSocketPtr
native_listener
;
83
84
public
:
85
86
NativeTrace
(
const
Params
&
p
);
87
virtual
~NativeTrace
() {}
88
89
NativeTraceRecord
*
90
getInstRecord
(
Tick
when,
ThreadContext
*tc,
91
const
StaticInstPtr
staticInst,
const
PCStateBase
&
pc
,
92
const
StaticInstPtr
macroStaticInst=
nullptr
)
override
93
{
94
return
new
NativeTraceRecord
(
this
, when, tc,
95
staticInst,
pc
, macroStaticInst);
96
}
97
98
template
<
class
T>
99
bool
100
checkReg
(
const
char
* regName, T &
val
, T &realVal)
101
{
102
if
(
val
!= realVal)
103
{
104
DPRINTFN
(
"Register %s should be %#x but is %#x.\n"
,
105
regName, realVal,
val
);
106
return
false
;
107
}
108
return
true
;
109
}
110
111
void
112
read
(
void
*ptr,
size_t
size)
113
{
114
size_t
soFar = 0;
115
while
(soFar < size) {
116
ssize_t res =
::read
(
fd
, (uint8_t *)ptr + soFar, size - soFar);
117
if
(res < 0)
118
panic
(
"Read call failed! %s\n"
, strerror(errno));
119
else
120
soFar += res;
121
}
122
}
123
124
virtual
void
125
check
(
NativeTraceRecord
*record) = 0;
126
};
127
128
}
// namespace trace
129
}
// namespace gem5
130
131
#endif
// __CPU_NATIVETRACE_HH__
trace.hh
DPRINTFN
#define DPRINTFN(...)
Definition
trace.hh:237
types.hh
Defines global host-dependent types: Counter, Tick, and (indirectly) {int,uint}{8,...
gem5::PCStateBase
Definition
pcstate.hh:59
gem5::RefCountingPtr< StaticInst >
gem5::ThreadContext
ThreadContext is the external interface to all thread state for anything outside of the CPU.
Definition
thread_context.hh:89
gem5::trace::ExeTracerRecord
Definition
exetrace.hh:60
gem5::trace::ExeTracer
Definition
exetrace.hh:82
gem5::trace::ExeTracer::Params
ExeTracerParams Params
Definition
exetrace.hh:84
gem5::trace::NativeTraceRecord
Definition
nativetrace.hh:64
gem5::trace::NativeTraceRecord::dump
void dump()
Definition
nativetrace.cc:76
gem5::trace::NativeTraceRecord::parent
NativeTrace * parent
Definition
nativetrace.hh:74
gem5::trace::NativeTrace
Definition
nativetrace.hh:78
gem5::trace::NativeTrace::native_listener
ListenSocketPtr native_listener
Definition
nativetrace.hh:82
gem5::trace::NativeTrace::checkReg
bool checkReg(const char *regName, T &val, T &realVal)
Definition
nativetrace.hh:100
gem5::trace::NativeTrace::fd
int fd
Definition
nativetrace.hh:80
gem5::trace::NativeTrace::read
void read(void *ptr, size_t size)
Definition
nativetrace.hh:112
gem5::trace::NativeTrace::getInstRecord
NativeTraceRecord * getInstRecord(Tick when, ThreadContext *tc, const StaticInstPtr staticInst, const PCStateBase &pc, const StaticInstPtr macroStaticInst=nullptr) override
Definition
nativetrace.hh:90
gem5::trace::NativeTrace::check
virtual void check(NativeTraceRecord *record)=0
gem5::trace::NativeTrace::~NativeTrace
virtual ~NativeTrace()
Definition
nativetrace.hh:87
static_inst.hh
exetrace.hh
panic
#define panic(...)
This implements a cprintf based panic() function.
Definition
logging.hh:188
gem5::MipsISA::pc
Bitfield< 4 > pc
Definition
pra_constants.hh:243
gem5::MipsISA::p
Bitfield< 0 > p
Definition
pra_constants.hh:326
gem5::X86ISA::val
Bitfield< 63 > val
Definition
misc.hh:804
gem5
Copyright (c) 2024 Arm Limited All rights reserved.
Definition
binary32.hh:36
gem5::ListenSocketPtr
std::unique_ptr< ListenSocket > ListenSocketPtr
Definition
socket.hh:112
gem5::Tick
uint64_t Tick
Tick count type.
Definition
types.hh:58
socket.hh
Generated on Mon Jan 13 2025 04:28:28 for gem5 by
doxygen
1.9.8