Class: RbBCC::PerfEventArray
Instance Attribute Summary
Attributes inherited from TableBase
#bpf, #flags, #keysize, #keytype, #leafsize, #leaftype, #map_fd, #map_id, #name, #ttype
Instance Method Summary collapse
- #event(data) ⇒ Object
-
#initialize(bpf, map_id, map_fd, keytype, leaftype, name: nil) ⇒ PerfEventArray
constructor
A new instance of PerfEventArray.
- #open_perf_buffer(page_cnt: 8, lost_cb: nil, &callback) ⇒ Object
Methods inherited from TableBase
#[], #[]=, #clear, #delete, #each_key, #each_pair, #each_value, #fetch, #items, #next, #print_linear_hist, #print_log2_hist, #structured_key?, #values
Methods included from CPUHelper
_read_cpu_range, get_online_cpus, get_possible_cpus
Constructor Details
#initialize(bpf, map_id, map_fd, keytype, leaftype, name: nil) ⇒ PerfEventArray
Returns a new instance of PerfEventArray.
263 264 265 266 267 268 269 |
# File 'lib/rbbcc/table.rb', line 263 def initialize(bpf, map_id, map_fd, keytype, leaftype, name: nil) super @open_key_fds = {} @event_class = nil @_cbs = {} @_open_key_fds = {} end |
Instance Method Details
#event(data) ⇒ Object
271 272 273 274 275 276 |
# File 'lib/rbbcc/table.rb', line 271 def event(data) @event_class ||= get_event_class ev = @event_class.malloc Fiddle::Pointer.new(ev.to_ptr)[0, @event_class.size] = data[0, @event_class.size] return ev end |
#open_perf_buffer(page_cnt: 8, lost_cb: nil, &callback) ⇒ Object
278 279 280 281 282 283 284 285 286 |
# File 'lib/rbbcc/table.rb', line 278 def open_perf_buffer(page_cnt: 8, lost_cb: nil, &callback) if page_cnt & (page_cnt - 1) != 0 raise "Perf buffer page_cnt must be a power of two" end get_online_cpus.each do |i| _open_perf_buffer(i, callback, page_cnt, lost_cb) end end |