events.h 6.68 KB
Newer Older
Antoine Kaufmann's avatar
Antoine Kaufmann committed
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
/*
 * Copyright 2021 Max Planck Institute for Software Systems, and
 * National University of Singapore
 *
 * Permission is hereby granted, free of charge, to any person obtaining
 * a copy of this software and associated documentation files (the
 * "Software"), to deal in the Software without restriction, including
 * without limitation the rights to use, copy, modify, merge, publish,
 * distribute, sublicense, and/or sell copies of the Software, and to
 * permit persons to whom the Software is furnished to do so, subject to
 * the following conditions:
 *
 * The above copyright notice and this permission notice shall be
 * included in all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
 * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
 * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
 * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
 * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 */

Antoine Kaufmann's avatar
Antoine Kaufmann committed
25
26
#pragma once

Antoine Kaufmann's avatar
Antoine Kaufmann committed
27
28
#include <string>

29
class event {
Antoine Kaufmann's avatar
Antoine Kaufmann committed
30
31
32
  public:
    uint64_t ts;

33
    event(uint64_t ts_)
Antoine Kaufmann's avatar
Antoine Kaufmann committed
34
35
36
37
        : ts(ts_)
    {
    }

38
39
    virtual ~event() { }

Antoine Kaufmann's avatar
Antoine Kaufmann committed
40
41
42
    virtual void dump(std::ostream &out) = 0;
};

43
class EHostCall : public event {
Antoine Kaufmann's avatar
Antoine Kaufmann committed
44
45
46
47
  public:
    const std::string &fun;

    EHostCall(uint64_t ts_, const std::string &fun_)
48
        : event(ts_), fun(fun_)
Antoine Kaufmann's avatar
Antoine Kaufmann committed
49
50
51
    {
    }

52
53
    virtual ~EHostCall() { }

Antoine Kaufmann's avatar
Antoine Kaufmann committed
54
55
56
57
58
59
    virtual void dump(std::ostream &out)
    {
        out << ts << ": H.CALL " << fun << std::endl;
    }
};

60
class EHostMsiX : public event {
Antoine Kaufmann's avatar
Antoine Kaufmann committed
61
62
63
64
  public:
    uint16_t vec;

    EHostMsiX(uint64_t ts_, uint16_t vec_)
65
        : event(ts_), vec(vec_)
Antoine Kaufmann's avatar
Antoine Kaufmann committed
66
67
68
    {
    }

69
70
    virtual ~EHostMsiX() { }

Antoine Kaufmann's avatar
Antoine Kaufmann committed
71
72
73
74
75
76
    virtual void dump(std::ostream &out)
    {
        out << ts << ": H.MSIX " << vec << std::endl;
    }
};

77
class EHostDmaR : public event {
Antoine Kaufmann's avatar
Antoine Kaufmann committed
78
79
80
81
82
83
  public:
    uint64_t id;
    uint64_t addr;
    uint64_t size;

    EHostDmaR(uint64_t ts_, uint64_t id_, uint64_t addr_, uint64_t size_)
84
        : event(ts_), id(id_), addr(addr_), size(size_)
Antoine Kaufmann's avatar
Antoine Kaufmann committed
85
86
87
    {
    }

88
89
    virtual ~EHostDmaR() { }

Antoine Kaufmann's avatar
Antoine Kaufmann committed
90
91
92
93
94
95
96
    virtual void dump(std::ostream &out)
    {
        out << ts << ": H.DMAR id=" << id << " addr=" << addr << " size=" <<
            size << std::endl;
    }
};

97
class EHostDmaW : public event {
Antoine Kaufmann's avatar
Antoine Kaufmann committed
98
99
100
101
102
103
  public:
    uint64_t id;
    uint64_t addr;
    uint64_t size;

    EHostDmaW(uint64_t ts_, uint64_t id_, uint64_t addr_, uint64_t size_)
104
        : event(ts_), id(id_), addr(addr_), size(size_)
Antoine Kaufmann's avatar
Antoine Kaufmann committed
105
106
107
    {
    }

108
109
    virtual ~EHostDmaW() { }

Antoine Kaufmann's avatar
Antoine Kaufmann committed
110
111
112
113
114
115
116
    virtual void dump(std::ostream &out)
    {
        out << ts << ": H.DMAW id=" << id << " addr=" << addr << " size=" <<
            size << std::endl;
    }
};

117
class EHostDmaC : public event {
Antoine Kaufmann's avatar
Antoine Kaufmann committed
118
119
120
121
  public:
    uint64_t id;

    EHostDmaC(uint64_t ts_, uint64_t id_)
122
123
        : event(ts_), id(id_)
    {
Antoine Kaufmann's avatar
Antoine Kaufmann committed
124
125
    }

126
127
    virtual ~EHostDmaC() { }

Antoine Kaufmann's avatar
Antoine Kaufmann committed
128
129
130
131
132
133
    virtual void dump(std::ostream &out)
    {
        out << ts << ": H.DMAC id=" << id << std::endl;
    }
};

134
class EHostMmioR : public event {
Antoine Kaufmann's avatar
Antoine Kaufmann committed
135
136
137
138
139
140
  public:
    uint64_t id;
    uint64_t addr;
    uint64_t size;

    EHostMmioR(uint64_t ts_, uint64_t id_, uint64_t addr_, uint64_t size_)
141
        : event(ts_), id(id_), addr(addr_), size(size_)
Antoine Kaufmann's avatar
Antoine Kaufmann committed
142
143
144
    {
    }

145
146
    virtual ~EHostMmioR() { }

Antoine Kaufmann's avatar
Antoine Kaufmann committed
147
148
149
150
151
152
153
    virtual void dump(std::ostream &out)
    {
        out << ts << ": H.MMIOR id=" << id << " addr=" << addr << " size=" <<
            size << std::endl;
    }
};

154
class EHostMmioW : public event {
Antoine Kaufmann's avatar
Antoine Kaufmann committed
155
156
157
158
159
160
  public:
    uint64_t id;
    uint64_t addr;
    uint64_t size;

    EHostMmioW(uint64_t ts_, uint64_t id_, uint64_t addr_, uint64_t size_)
161
        : event(ts_), id(id_), addr(addr_), size(size_)
Antoine Kaufmann's avatar
Antoine Kaufmann committed
162
163
164
    {
    }

165
166
    virtual ~EHostMmioW() { }

Antoine Kaufmann's avatar
Antoine Kaufmann committed
167
168
169
170
171
172
173
    virtual void dump(std::ostream &out)
    {
        out << ts << ": H.MMIOW id=" << id << " addr=" << addr << " size=" <<
            size << std::endl;
    }
};

174
class EHostMmioC : public event {
Antoine Kaufmann's avatar
Antoine Kaufmann committed
175
176
177
178
  public:
    uint64_t id;

    EHostMmioC(uint64_t ts_, uint64_t id_)
179
180
        : event(ts_), id(id_)
    {
Antoine Kaufmann's avatar
Antoine Kaufmann committed
181
182
    }

183
184
    virtual ~EHostMmioC() { }

Antoine Kaufmann's avatar
Antoine Kaufmann committed
185
186
187
188
189
    virtual void dump(std::ostream &out)
    {
        out << ts << ": H.MMIOC id=" << id << std::endl;
    }
};
190
191
192
193
194
195
196
197
198
199

class e_nic_msix : public event {
  public:
    uint16_t vec;

    e_nic_msix(uint64_t ts_, uint16_t vec_)
        : event(ts_), vec(vec_)
    {
    }

200
201
    virtual ~e_nic_msix() { }

202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
    virtual void dump(std::ostream &out)
    {
        out << ts << ": N.MSIX " << vec << std::endl;
    }
};

class e_nic_dma_i : public event {
  public:
    uint64_t id;
    uint64_t addr;
    uint64_t size;

    e_nic_dma_i(uint64_t ts_, uint64_t id_, uint64_t addr_, uint64_t size_)
        : event(ts_), id(id_), addr(addr_), size(size_)
    {
    }

219
220
    virtual ~e_nic_dma_i() { }

221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
    virtual void dump(std::ostream &out)
    {
        out << ts << ": N.DMAI id=" << id << " addr=" << addr << " size=" <<
            size << std::endl;
    }
};

class e_nic_dma_c : public event {
  public:
    uint64_t id;

    e_nic_dma_c(uint64_t ts_, uint64_t id_)
        : event(ts_), id(id_)    {
    }

236
237
    virtual ~e_nic_dma_c() { }

238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
    virtual void dump(std::ostream &out)
    {
        out << ts << ": N.DMAC id=" << id << std::endl;
    }
};

class e_nic_mmio_r : public event {
  public:
    uint64_t addr;
    uint64_t size;
    uint64_t val;

    e_nic_mmio_r(uint64_t ts_, uint64_t addr_, uint64_t size_, uint64_t val_)
        : event(ts_), addr(addr_), size(size_), val(val_)
    {
    }

255
256
    virtual ~e_nic_mmio_r() { }

257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
    virtual void dump(std::ostream &out)
    {
        out << ts << ": N.MMIOR addr=" << addr << " size=" << size << " val=" <<
            val << std::endl;
    }
};

class e_nic_mmio_w : public event {
  public:
    uint64_t addr;
    uint64_t size;
    uint64_t val;

    e_nic_mmio_w(uint64_t ts_, uint64_t addr_, uint64_t size_, uint64_t val_)
        : event(ts_), addr(addr_), size(size_), val(val_)
    {
    }

275
276
    virtual ~e_nic_mmio_w() { }

277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
    virtual void dump(std::ostream &out)
    {
        out << ts << ": N.MMIOW addr=" << addr << " size=" << size << " val=" <<
            val << std::endl;
    }
};

class e_nic_tx : public event {
  public:
    uint16_t len;

    e_nic_tx(uint64_t ts_, uint16_t len_)
        : event(ts_), len(len_)
    {
    }

293
294
    virtual ~e_nic_tx() { }

295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
    virtual void dump(std::ostream &out)
    {
        out << ts << ": N.TX " << len << std::endl;
    }
};

class e_nic_rx : public event {
  public:
    uint16_t len;

    e_nic_rx(uint64_t ts_, uint16_t len_)
        : event(ts_), len(len_)
    {
    }

310
311
    virtual ~e_nic_rx() { }

312
313
314
315
316
    virtual void dump(std::ostream &out)
    {
        out << ts << ": N.RX " << len << std::endl;
    }
};