12
12
13
13
#pragma GCC diagnostic ignored "-Wstrict-aliasing"
14
14
15
-
16
15
#define READ_ONCE_U64 (x ) (*(volatile uint64_t *)&x)
17
16
#define WRITE_ONCE_U64 (x, v ) (*(volatile uint64_t *)&x) = (v)
18
17
@@ -85,16 +84,19 @@ bpf_perf_event_handler::bpf_perf_event_handler(
85
84
86
85
{
87
86
}
87
+
88
88
bool software_perf_event_data::has_data () const
89
89
{
90
90
auto &ref = get_header_ref_const ();
91
91
return ref.data_tail != ref.data_head ;
92
92
}
93
+
93
94
const perf_event_mmap_page &
94
95
software_perf_event_data::get_header_ref_const () const
95
96
{
96
97
return *(perf_event_mmap_page *)(uintptr_t )(mmap_buffer.data ());
97
98
}
99
+
98
100
int software_perf_event_data::output_data (const void *buf, size_t size)
99
101
{
100
102
spdlog::debug (" Handling perf event output data with size {}" , size);
@@ -146,6 +148,7 @@ int software_perf_event_data::output_data(const void *buf, size_t size)
146
148
147
149
return 0 ;
148
150
}
151
+
149
152
perf_event_mmap_page &software_perf_event_data::get_header_ref ()
150
153
{
151
154
return *(perf_event_mmap_page *)(uintptr_t )(mmap_buffer.data ());
@@ -187,10 +190,12 @@ void *software_perf_event_data::ensure_mmap_buffer(size_t buffer_size)
187
190
}
188
191
return mmap_buffer.data ();
189
192
}
193
+
190
194
size_t software_perf_event_data::mmap_size () const
191
195
{
192
196
return mmap_buffer.size () - pagesize;
193
197
}
198
+
194
199
std::optional<software_perf_event_weak_ptr>
195
200
bpf_perf_event_handler::try_get_software_perf_data_weak_ptr () const
196
201
{
@@ -211,4 +216,5 @@ bpf_perf_event_handler::try_get_software_perf_data_raw_buffer(
211
216
return {};
212
217
}
213
218
}
219
+
214
220
} // namespace bpftime
0 commit comments