SystemC Library API Reference Manual
Reference documentation for the Simics SystemC Library.
 
Loading...
Searching...
No Matches
transaction_extension.h
Go to the documentation of this file.
1/*
2 © 2018 Intel Corporation
3
4 This software and the related documents are Intel copyrighted materials, and
5 your use of them is governed by the express license under which they were
6 provided to you ("License"). Unless the License provides otherwise, you may
7 not use, modify, copy, publish, distribute, disclose or transmit this software
8 or the related documents without Intel's prior written permission.
9
10 This software and the related documents are provided as is, with no express or
11 implied warranties, other than those that are expressly stated in the License.
12*/
13
14#ifndef SIMICS_SYSTEMC_IFACE_TRANSACTION_EXTENSION_H
15#define SIMICS_SYSTEMC_IFACE_TRANSACTION_EXTENSION_H
16
17#include <tlm>
18
19namespace simics {
20namespace systemc {
21namespace iface {
22
23class Transaction;
24
26 public:
27 enum Status {
31 ACTIVE
32 };
33 TransactionStatus() : status_(INVALID) {}
34 TransactionStatus(Status status) : status_(status) {} // NOLINT
35 bool invalid() {
36 return status_ == INVALID;
37 }
38 bool ok() {
39 return status_ == OK;
40 }
41 bool fail() {
42 return status_ == FAIL;
43 }
44 bool active() {
45 return status_ == ACTIVE;
46 }
47
48 private:
49 Status status_;
50};
51
52class TransactionExtension : public tlm::tlm_extension<TransactionExtension> {
53 public:
54 class Callback {
55 public:
56 virtual bool is_async(Transaction *transaction) = 0;
57 virtual void defer(Transaction *transaction) = 0;
58 virtual void complete(Transaction *transaction, bool success) = 0;
59 virtual ~Callback() {}
60 };
62 reset();
63 }
65 return status_;
66 }
67 void reset() {
69 transport_debug_ = false;
70 callback_ = NULL;
71 }
73 status_ = status;
74 }
76 return transport_debug_;
77 }
80 transport_debug_ = transport_debug;
81 }
83 callback_ = callback;
84 }
86 return callback_;
87 }
88 tlm::tlm_extension_base *clone() const override {
89 return new TransactionExtension(*this);
90 }
91 void copy_from(tlm::tlm_extension_base const &ext) override {
92 *this = static_cast<const TransactionExtension &>(ext);
93 }
94
95 private:
96 TransactionStatus status_;
97 bool transport_debug_;
98 Callback *callback_;
99};
100
101} // namespace iface
102} // namespace systemc
103} // namespace simics
104
105#endif
Definition: transaction_extension.h:54
virtual void complete(Transaction *transaction, bool success)=0
virtual ~Callback()
Definition: transaction_extension.h:59
virtual void defer(Transaction *transaction)=0
virtual bool is_async(Transaction *transaction)=0
Definition: transaction_extension.h:52
void set_callback(Callback *callback)
Definition: transaction_extension.h:82
void set_status(TransactionStatus status)
Definition: transaction_extension.h:72
void reset()
Definition: transaction_extension.h:67
TransactionExtension()
Definition: transaction_extension.h:61
void set_transport_debug(bool transport_debug)
For true, the gasket uses transport_dbg instead of b_transport.
Definition: transaction_extension.h:79
void copy_from(tlm::tlm_extension_base const &ext) override
Definition: transaction_extension.h:91
bool transport_debug()
Definition: transaction_extension.h:75
TransactionStatus status()
Definition: transaction_extension.h:64
Callback * callback()
Definition: transaction_extension.h:85
tlm::tlm_extension_base * clone() const override
Definition: transaction_extension.h:88
Definition: transaction_extension.h:25
bool invalid()
Definition: transaction_extension.h:35
bool active()
Definition: transaction_extension.h:44
bool fail()
Definition: transaction_extension.h:41
bool ok()
Definition: transaction_extension.h:38
Status
Definition: transaction_extension.h:27
@ ACTIVE
Definition: transaction_extension.h:31
@ INVALID
Definition: transaction_extension.h:28
@ OK
Definition: transaction_extension.h:29
@ FAIL
Definition: transaction_extension.h:30
TransactionStatus(Status status)
Definition: transaction_extension.h:34
TransactionStatus()
Definition: transaction_extension.h:33
Class that encapsulates a generic_payload and returns it to the TransactionPool when the Transaction ...
Definition: transaction.h:29
Definition: adapter.h:79