events.h 2.79 KB
Newer Older
Antoine Kaufmann's avatar
Antoine Kaufmann committed
1
2
#pragma once

3
class event {
Antoine Kaufmann's avatar
Antoine Kaufmann committed
4
5
6
  public:
    uint64_t ts;

7
    event(uint64_t ts_)
Antoine Kaufmann's avatar
Antoine Kaufmann committed
8
9
10
11
12
13
14
        : ts(ts_)
    {
    }

    virtual void dump(std::ostream &out) = 0;
};

15
class EHostCall : public event {
Antoine Kaufmann's avatar
Antoine Kaufmann committed
16
17
18
19
  public:
    const std::string &fun;

    EHostCall(uint64_t ts_, const std::string &fun_)
20
        : event(ts_), fun(fun_)
Antoine Kaufmann's avatar
Antoine Kaufmann committed
21
22
23
24
25
26
27
28
29
    {
    }

    virtual void dump(std::ostream &out)
    {
        out << ts << ": H.CALL " << fun << std::endl;
    }
};

30
class EHostMsiX : public event {
Antoine Kaufmann's avatar
Antoine Kaufmann committed
31
32
33
34
  public:
    uint16_t vec;

    EHostMsiX(uint64_t ts_, uint16_t vec_)
35
        : event(ts_), vec(vec_)
Antoine Kaufmann's avatar
Antoine Kaufmann committed
36
37
38
39
40
41
42
43
44
    {
    }

    virtual void dump(std::ostream &out)
    {
        out << ts << ": H.MSIX " << vec << std::endl;
    }
};

45
class EHostDmaR : public event {
Antoine Kaufmann's avatar
Antoine Kaufmann committed
46
47
48
49
50
51
  public:
    uint64_t id;
    uint64_t addr;
    uint64_t size;

    EHostDmaR(uint64_t ts_, uint64_t id_, uint64_t addr_, uint64_t size_)
52
        : event(ts_), id(id_), addr(addr_), size(size_)
Antoine Kaufmann's avatar
Antoine Kaufmann committed
53
54
55
56
57
58
59
60
61
62
    {
    }

    virtual void dump(std::ostream &out)
    {
        out << ts << ": H.DMAR id=" << id << " addr=" << addr << " size=" <<
            size << std::endl;
    }
};

63
class EHostDmaW : public event {
Antoine Kaufmann's avatar
Antoine Kaufmann committed
64
65
66
67
68
69
  public:
    uint64_t id;
    uint64_t addr;
    uint64_t size;

    EHostDmaW(uint64_t ts_, uint64_t id_, uint64_t addr_, uint64_t size_)
70
        : event(ts_), id(id_), addr(addr_), size(size_)
Antoine Kaufmann's avatar
Antoine Kaufmann committed
71
72
73
74
75
76
77
78
79
80
    {
    }

    virtual void dump(std::ostream &out)
    {
        out << ts << ": H.DMAW id=" << id << " addr=" << addr << " size=" <<
            size << std::endl;
    }
};

81
class EHostDmaC : public event {
Antoine Kaufmann's avatar
Antoine Kaufmann committed
82
83
84
85
  public:
    uint64_t id;

    EHostDmaC(uint64_t ts_, uint64_t id_)
86
        : event(ts_), id(id_)    {
Antoine Kaufmann's avatar
Antoine Kaufmann committed
87
88
89
90
91
92
93
94
    }

    virtual void dump(std::ostream &out)
    {
        out << ts << ": H.DMAC id=" << id << std::endl;
    }
};

95
class EHostMmioR : public event {
Antoine Kaufmann's avatar
Antoine Kaufmann committed
96
97
98
99
100
101
  public:
    uint64_t id;
    uint64_t addr;
    uint64_t size;

    EHostMmioR(uint64_t ts_, uint64_t id_, uint64_t addr_, uint64_t size_)
102
        : event(ts_), id(id_), addr(addr_), size(size_)
Antoine Kaufmann's avatar
Antoine Kaufmann committed
103
104
105
106
107
108
109
110
111
112
    {
    }

    virtual void dump(std::ostream &out)
    {
        out << ts << ": H.MMIOR id=" << id << " addr=" << addr << " size=" <<
            size << std::endl;
    }
};

113
class EHostMmioW : public event {
Antoine Kaufmann's avatar
Antoine Kaufmann committed
114
115
116
117
118
119
  public:
    uint64_t id;
    uint64_t addr;
    uint64_t size;

    EHostMmioW(uint64_t ts_, uint64_t id_, uint64_t addr_, uint64_t size_)
120
        : event(ts_), id(id_), addr(addr_), size(size_)
Antoine Kaufmann's avatar
Antoine Kaufmann committed
121
122
123
124
125
126
127
128
129
130
    {
    }

    virtual void dump(std::ostream &out)
    {
        out << ts << ": H.MMIOW id=" << id << " addr=" << addr << " size=" <<
            size << std::endl;
    }
};

131
class EHostMmioC : public event {
Antoine Kaufmann's avatar
Antoine Kaufmann committed
132
133
134
135
  public:
    uint64_t id;

    EHostMmioC(uint64_t ts_, uint64_t id_)
136
        : event(ts_), id(id_)    {
Antoine Kaufmann's avatar
Antoine Kaufmann committed
137
138
139
140
141
142
143
    }

    virtual void dump(std::ostream &out)
    {
        out << ts << ": H.MMIOC id=" << id << std::endl;
    }
};