SystemC Library API Reference Manual
Reference documentation for the Simics SystemC Library.
 
Loading...
Searching...
No Matches
transaction.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_H
15#define SIMICS_SYSTEMC_IFACE_TRANSACTION_H
16
18
19#include <tlm>
20
21namespace simics {
22namespace systemc {
23namespace iface {
24
30 public:
31 explicit Transaction(tlm::tlm_generic_payload *payload)
32 : payload_(payload) {
33 acquire();
34 }
35 Transaction() : payload_(NULL) {}
38 payload_ = t.payload_;
39 acquire();
40 }
43 if (this == &t)
44 return *this;
45
46 release();
47 payload_ = t.payload_;
48 acquire();
49 return *this;
50 }
53 release();
54 }
56 tlm::tlm_generic_payload *operator->() {
57 return payload_;
58 }
60 const tlm::tlm_generic_payload *operator->() const {
61 return payload_;
62 }
64 operator tlm::tlm_generic_payload &() {
65 return *payload_;
66 }
68 operator tlm::tlm_generic_payload *() {
69 return payload_;
70 }
72 tlm::tlm_generic_payload *payload() {
73 return payload_;
74 }
76 if (!payload_)
77 return NULL;
78
79 TransactionExtension *e = NULL;
80 payload_->get_extension(e);
81 return e;
82 }
83
84 private:
85 void acquire() {
86 if (payload_ && payload_->has_mm())
87 payload_->acquire();
88 }
89 void release() {
90 if (payload_ && payload_->has_mm())
91 payload_->release();
92 }
93
94 tlm::tlm_generic_payload *payload_;
95};
96
97} // namespace iface
98} // namespace systemc
99} // namespace simics
100
101#endif
Definition: transaction_extension.h:52
Class that encapsulates a generic_payload and returns it to the TransactionPool when the Transaction ...
Definition: transaction.h:29
Transaction(const Transaction &t)
Increases usage count for payload.
Definition: transaction.h:37
Transaction(tlm::tlm_generic_payload *payload)
Definition: transaction.h:31
const tlm::tlm_generic_payload * operator->() const
Access payload with ->
Definition: transaction.h:60
Transaction()
Definition: transaction.h:35
TransactionExtension * extension()
Definition: transaction.h:75
~Transaction()
Returns payload to pool.
Definition: transaction.h:52
tlm::tlm_generic_payload * operator->()
Access payload with ->
Definition: transaction.h:56
Transaction & operator=(const Transaction &t)
Increases usage count for new payload and returns former to pool.
Definition: transaction.h:42
tlm::tlm_generic_payload * payload()
Access payload by payload()
Definition: transaction.h:72
Definition: adapter.h:79