babeltrace 0.1.1 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3a11c8de93fc93dc21253113b61b0897b09a4030080b5f9dbf5083785f4e0536
4
- data.tar.gz: 4fda4626f48176e76cafa3a74ed050e71ceed8243345c8b85fbbda1ee33e99bd
3
+ metadata.gz: a9a7ce6aedb3ba33fb52eda3fa2b6801a61aa473760b0e6544796e7fc8df4ebf
4
+ data.tar.gz: 122c685bd2c4c6c53e3c82f6252b76b14b35add6cbb21323a2b05694e4da69ba
5
5
  SHA512:
6
- metadata.gz: 7e4e16041d38f56ba939de1391ded0f50e4293d788da8b2dc6e1a70a3147030f390bd6dd5bec962941254de265bd0b00a43f2cd49d3cc5eeb148399bff1e5de0
7
- data.tar.gz: 345f080fcc55a404bd6d79018d6c624fd3502fa9d55803ad9f499e1e6176478f9e4fcba22cd67878b6cc12a2518ad8e38d7d0313db04ab32e8facde3c0c2c240
6
+ metadata.gz: 35aefb30265483879e836c0bf60aef7651b02d1d4bba2d2292aba1721ad2834f41eab4c2c8f69ffcf82a440fc5047d73d0f978c0fc8bd297074c5b6c05d19185
7
+ data.tar.gz: 569f92c75a651ee470c7d144635261e024a5618dc6460bb3fa675bce6dd09539ca4d1bc8e73d4a5a637e53603bc38d579fa4fe4af469b5b354c4986ba7d3f123
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = 'babeltrace'
3
- s.version = "0.1.1"
3
+ s.version = "0.1.2"
4
4
  s.author = "Brice Videau"
5
5
  s.email = "bvideau@anl.gov"
6
6
  s.homepage = "https://github.com/alcf-perfengr/babeltrace-ruby"
@@ -12,4 +12,5 @@ Gem::Specification.new do |s|
12
12
  s.license = 'MIT'
13
13
  s.required_ruby_version = '>= 2.3.0'
14
14
  s.add_dependency 'ffi', '~> 1.9', '>=1.9.3'
15
+ s.add_dependency 'walk', '~> 0.1', '>=0.1.0'
15
16
  end
@@ -7,6 +7,8 @@
7
7
  static VALUE m_babeltrace;
8
8
  static VALUE m_ctf;
9
9
  static VALUE m_internal;
10
+ static VALUE c_definition;
11
+ static VALUE c_declaration;
10
12
  static VALUE c_internal_declaration;
11
13
  static VALUE c_internal_definition;
12
14
  static VALUE c_ctf_declaration;
@@ -66,8 +68,10 @@ void Init_babeltrace_c() {
66
68
  m_ffi = rb_const_get(rb_cObject, rb_intern("FFI"));
67
69
  c_ffi_pointer = rb_const_get(m_ffi, rb_intern("Pointer"));
68
70
  c_ffi_struct = rb_const_get(m_ffi, rb_intern("Struct"));
69
- c_internal_declaration = rb_define_class_under(m_internal, "Declaration", c_ffi_struct);
70
- c_internal_definition = rb_define_class_under(m_internal, "Definition", c_ffi_struct);
71
+ c_definition = rb_define_class_under(m_babeltrace, "Definition", c_ffi_struct);
72
+ c_declaration = rb_define_class_under(m_babeltrace, "Declaration", c_ffi_struct);
73
+ c_internal_declaration = rb_define_class_under(m_internal, "Declaration", c_declaration);
74
+ c_internal_definition = rb_define_class_under(m_internal, "Definition", c_definition);
71
75
  c_ctf_declaration = rb_define_class_under(m_ctf, "Declaration", rb_cObject);
72
76
  c_ctf_array_declaration = rb_define_class_under(m_ctf, "ArrayDecl", c_ctf_declaration);
73
77
  c_ctf_sequence_declaration = rb_define_class_under(m_ctf, "SequenceDecl", c_ctf_declaration);
@@ -1,8 +1,12 @@
1
+ require 'walk'
2
+
1
3
  module Babeltrace
2
4
 
3
5
  class Context # < ManagedStruct
6
+ attr_reader :traces
4
7
  def initialize(ptr = Babeltrace.bt_context_create)
5
8
  super(ptr)
9
+ @traces = []
6
10
  end
7
11
 
8
12
  def self.release(ptr)
@@ -13,15 +17,36 @@ module Babeltrace
13
17
  handle_id = Babeltrace.bt_context_add_trace(self, path, format, nil, nil, nil)
14
18
  case format
15
19
  when "ctf"
16
- return CTF::Trace::new(self, handle_id)
20
+ trace = CTF::Trace::new(self, handle_id)
17
21
  else
18
- return Trace::new(self, handle_id)
22
+ trace = Trace::new(self, handle_id)
23
+ end
24
+ @traces.push trace
25
+ trace
26
+ end
27
+
28
+ def add_traces(path:, format: "ctf")
29
+ traces = []
30
+ Walk.walk(path) do |path, dirs, files|
31
+ trace = add_trace(path: path, format: format) if files.include?("metadata")
32
+ traces.push trace if trace
19
33
  end
34
+ traces
20
35
  end
21
36
 
22
37
  def remove_trace(trace_id)
23
38
  Babeltrace.bt_context_remove_trace(self, trace_id)
24
39
  end
40
+
41
+ def get_timestamp_begin(clock_type = :REAL)
42
+ return nil if traces.empty?
43
+ traces.collect { |t| t.get_timestamp_begin(clock_type) }.min
44
+ end
45
+
46
+ def get_timestamp_end(clock_type = :REAL)
47
+ return nil if traces.empty?
48
+ traces.collect { |t| t.get_timestamp_end(clock_type) }.max
49
+ end
25
50
  end
26
51
 
27
52
  attach_function :bt_context_create, [], Context
@@ -24,7 +24,7 @@ module Babeltrace
24
24
  :UNKNOWN
25
25
 
26
26
  module Internal
27
- class Declaration # < FFI::Struct
27
+ class Declaration # < Babeltrace::Declaration < FFI::Struct
28
28
  layout :dummy, :pointer
29
29
 
30
30
  def field_type
@@ -60,13 +60,13 @@ module Babeltrace
60
60
  end
61
61
  end
62
62
  end
63
- attach_function :bt_ctf_field_type, [Internal::Declaration], TypeID
64
- attach_function :bt_ctf_get_int_signedness, [Internal::Declaration], :int
65
- attach_function :bt_ctf_get_int_base, [Internal::Declaration], :int
66
- attach_function :bt_ctf_get_int_byte_order, [Internal::Declaration], :int
67
- attach_function :bt_ctf_get_int_len, [Internal::Declaration], :ssize_t
68
- attach_function :bt_ctf_get_encoding, [Internal::Declaration], StringEncoding
69
- attach_function :bt_ctf_get_array_len, [Internal::Declaration], :int
63
+ attach_function :bt_ctf_field_type, [Babeltrace::Declaration], TypeID
64
+ attach_function :bt_ctf_get_int_signedness, [Babeltrace::Declaration], :int
65
+ attach_function :bt_ctf_get_int_base, [Babeltrace::Declaration], :int
66
+ attach_function :bt_ctf_get_int_byte_order, [Babeltrace::Declaration], :int
67
+ attach_function :bt_ctf_get_int_len, [Babeltrace::Declaration], :ssize_t
68
+ attach_function :bt_ctf_get_encoding, [Babeltrace::Declaration], StringEncoding
69
+ attach_function :bt_ctf_get_array_len, [Babeltrace::Declaration], :int
70
70
 
71
71
  module Internal
72
72
  class FieldDecl < FFI::Struct
@@ -89,7 +89,7 @@ module Babeltrace
89
89
  attach_function :bt_ctf_get_decl_field_name, [Internal::FieldDecl], :string
90
90
 
91
91
  module Internal
92
- class Definition # < FFI::Struct
92
+ class Definition # < Babeltrace::Definition < FFI::Struct
93
93
  layout :dummy, :pointer
94
94
 
95
95
  def field_name
@@ -149,18 +149,18 @@ module Babeltrace
149
149
  end
150
150
  end
151
151
 
152
- attach_function :bt_ctf_field_name, [Internal::Definition], :string
153
- attach_function :bt_ctf_get_decl_from_def, [Internal::Definition], Internal::Declaration.by_ref
154
- attach_function :bt_ctf_get_struct_field_count, [Internal::Definition], :uint64
155
- attach_function :bt_ctf_get_uint64, [Internal::Definition], :uint64
156
- attach_function :bt_ctf_get_int64, [Internal::Definition], :int64
157
- attach_function :bt_ctf_get_enum_int, [Internal::Definition], Internal::Definition.by_ref
158
- attach_function :bt_ctf_get_enum_str, [Internal::Definition], :string
159
- attach_function :bt_ctf_get_char_array, [Internal::Definition], :pointer
160
- attach_function :bt_ctf_get_string, [Internal::Definition], :string
161
- attach_function :bt_ctf_get_float, [Internal::Definition], :double
162
- attach_function :bt_ctf_get_variant, [Internal::Definition], Internal::Definition.by_ref
163
- attach_function :bt_ctf_get_struct_field_index, [Internal::Definition, :uint64], Internal::Definition.by_ref
152
+ attach_function :bt_ctf_field_name, [Babeltrace::Definition], :string
153
+ attach_function :bt_ctf_get_decl_from_def, [Babeltrace::Definition], Internal::Declaration.by_ref
154
+ attach_function :bt_ctf_get_struct_field_count, [Babeltrace::Definition], :uint64
155
+ attach_function :bt_ctf_get_uint64, [Babeltrace::Definition], :uint64
156
+ attach_function :bt_ctf_get_int64, [Babeltrace::Definition], :int64
157
+ attach_function :bt_ctf_get_enum_int, [Babeltrace::Definition], Internal::Definition.by_ref
158
+ attach_function :bt_ctf_get_enum_str, [Babeltrace::Definition], :string
159
+ attach_function :bt_ctf_get_char_array, [Babeltrace::Definition], :pointer
160
+ attach_function :bt_ctf_get_string, [Babeltrace::Definition], :string
161
+ attach_function :bt_ctf_get_float, [Babeltrace::Definition], :double
162
+ attach_function :bt_ctf_get_variant, [Babeltrace::Definition], Internal::Definition.by_ref
163
+ attach_function :bt_ctf_get_struct_field_index, [Babeltrace::Definition, :uint64], Internal::Definition.by_ref
164
164
 
165
165
  module Internal
166
166
  class EventDecl < FFI::Struct
@@ -176,9 +176,14 @@ module Babeltrace
176
176
  list = FFI::MemoryPointer::new(:pointer)
177
177
  res = CTF.bt_ctf_get_decl_fields(self, scope, list, count)
178
178
  count = count.read(:uint)
179
- list = list.read_pointer.read_array_of_pointer(count)
180
- list.collect { |p| FieldDecl::new(p) }
179
+ if count > 0
180
+ list = list.read_pointer.read_array_of_pointer(count)
181
+ list.collect { |p| FieldDecl::new(p) }
182
+ else
183
+ []
184
+ end
181
185
  end
186
+ alias decl_fields get_decl_fields
182
187
  end
183
188
  end
184
189
 
@@ -199,6 +204,15 @@ module Babeltrace
199
204
  attach_function :bt_ctf_get_event_decl_list, [:int, Context, :pointer, :pointer], :int
200
205
 
201
206
  class Event
207
+
208
+ def get_id
209
+ defi = self.top_level_scope(:STREAM_EVENT_HEADER).value
210
+ id = defi["id"][0]
211
+ id = defi["v"]["id"] if id == 65535
212
+ id
213
+ end
214
+ alias id get_id
215
+
202
216
  def get_context
203
217
  c = CTF.bt_ctf_event_get_context(self)
204
218
  Babeltrace.bt_context_get(c)
@@ -276,13 +290,9 @@ module Babeltrace
276
290
  attach_function :bt_ctf_event_name, [Event], :string
277
291
  attach_function :bt_ctf_get_cycles, [Event], :uint64
278
292
  attach_function :bt_ctf_get_timestamp, [Event], :uint64
279
- attach_function :bt_ctf_get_field_list, [Event, Internal::Definition, :pointer, :pointer], :int
280
- attach_function :bt_ctf_get_field, [Event, Internal::Definition, :string], Internal::Definition.by_ref
281
- attach_function :bt_ctf_get_index, [Event, Internal::Definition, :uint], Internal::Definition.by_ref
282
- # Hack
283
- attach_function :bt_array_index, [Internal::Definition, :uint64], Internal::Definition.by_ref
284
- attach_function :bt_sequence_len, [Internal::Definition], :uint64
285
- attach_function :bt_sequence_index, [Internal::Definition, :uint64], Internal::Definition.by_ref
293
+ attach_function :bt_ctf_get_field_list, [Event, Babeltrace::Definition, :pointer, :pointer], :int
294
+ attach_function :bt_ctf_get_field, [Event, Babeltrace::Definition, :string], Internal::Definition.by_ref
295
+ attach_function :bt_ctf_get_index, [Event, Babeltrace::Definition, :uint], Internal::Definition.by_ref
286
296
 
287
297
  class Definition
288
298
  attr_reader :definition
@@ -346,7 +356,7 @@ module Babeltrace
346
356
  end
347
357
 
348
358
  def value
349
- { int.value => string }
359
+ [ int.value, string ]
350
360
  end
351
361
  end
352
362
 
@@ -383,8 +393,7 @@ module Babeltrace
383
393
  end
384
394
 
385
395
  def index(i)
386
- d = CTF.bt_array_index(@definition, i)
387
- return Definition.create(d)
396
+ return Definition.create(@definition.array_index(i))
388
397
  end
389
398
 
390
399
  def value
@@ -404,12 +413,11 @@ module Babeltrace
404
413
 
405
414
  class SequenceDef < Definition
406
415
  def len
407
- CTF.bt_sequence_len(@definition)
416
+ @definition.sequence_len
408
417
  end
409
418
 
410
419
  def index(i)
411
- d = CTF.bt_sequence_index(@definition, i)
412
- return Definition.create(d)
420
+ return Definition.create(@definition.sequence_index(i))
413
421
  end
414
422
 
415
423
  def value
@@ -419,11 +427,11 @@ module Babeltrace
419
427
 
420
428
  class SequenceTextDef < Definition
421
429
  def len
422
- CTF.bt_sequence_len(@definition)
430
+ @definition.sequence_len
423
431
  end
424
432
 
425
433
  def value
426
- return [] if len == 0
434
+ return "" if len == 0
427
435
  @definition.get_char_sequence.read_bytes(len)
428
436
  end
429
437
  end
@@ -1,20 +1,20 @@
1
1
  module Babeltrace
2
- module CTF
3
- class Trace
4
- def iter_create(begin_pos: nil, end_pos: nil)
5
- CTF.bt_ctf_iter_create(@context, begin_pos, end_pos)
6
- end
2
+ class Context
3
+ def iter_create(begin_pos: nil, end_pos: nil)
4
+ CTF.bt_ctf_iter_create(self, begin_pos, end_pos)
5
+ end
7
6
 
8
- def iter_create_intersect
9
- begin_pos_ptr = FFI::MemoryPointer::new(:pointer)
10
- end_pos_ptr = FFI::MemoryPointer::new(:pointer)
11
- iter = CTF.bt_ctf_iter_create_intersect(@context, begin_pos_ptr, end_pos_ptr)
12
- begin_pos = IterPosManaged::new(begin_pos_ptr.read_pointer)
13
- end_pos = IterPosManaged::new(end_pos_ptr.read_pointer)
14
- [iter, begin_pos, end_pos]
15
- end
7
+ def iter_create_intersect
8
+ begin_pos_ptr = FFI::MemoryPointer::new(:pointer)
9
+ end_pos_ptr = FFI::MemoryPointer::new(:pointer)
10
+ iter = CTF.bt_ctf_iter_create_intersect(@context, begin_pos_ptr, end_pos_ptr)
11
+ begin_pos = IterPosManaged::new(begin_pos_ptr.read_pointer)
12
+ end_pos = IterPosManaged::new(end_pos_ptr.read_pointer)
13
+ [iter, begin_pos, end_pos]
16
14
  end
15
+ end
17
16
 
17
+ module CTF
18
18
  class Iter
19
19
  def self.release(ptr)
20
20
  CTF.bt_ctf_iter_destroy(ptr)
@@ -5,4 +5,25 @@ module Babeltrace
5
5
  typedef orig, add
6
6
  }
7
7
 
8
+ attach_function :bt_array_index, [Definition, :uint64], :pointer #Returns a definition
9
+ attach_function :bt_sequence_len, [Definition], :uint64
10
+ attach_function :bt_sequence_index, [Definition, :uint64], :pointer #Returns a definition
11
+ class Definition #< FFI::Struct
12
+ def array_index(i)
13
+ d = Babeltrace.bt_array_index(self, i)
14
+ return nil if d.null?
15
+ self.class.new(d)
16
+ end
17
+
18
+ def sequence_len
19
+ Babeltrace.bt_sequence_len(self)
20
+ end
21
+
22
+ def sequence_index(i)
23
+ d = Babeltrace.bt_sequence_index(self, i)
24
+ return nil if d.null?
25
+ self.class.new(d)
26
+ end
27
+ end
28
+
8
29
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: babeltrace
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brice Videau
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-01-24 00:00:00.000000000 Z
11
+ date: 2020-01-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ffi
@@ -30,6 +30,26 @@ dependencies:
30
30
  - - ">="
31
31
  - !ruby/object:Gem::Version
32
32
  version: 1.9.3
33
+ - !ruby/object:Gem::Dependency
34
+ name: walk
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: '0.1'
40
+ - - ">="
41
+ - !ruby/object:Gem::Version
42
+ version: 0.1.0
43
+ type: :runtime
44
+ prerelease: false
45
+ version_requirements: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - "~>"
48
+ - !ruby/object:Gem::Version
49
+ version: '0.1'
50
+ - - ">="
51
+ - !ruby/object:Gem::Version
52
+ version: 0.1.0
33
53
  description: Ruby libbabeltrace ffi bindings
34
54
  email: bvideau@anl.gov
35
55
  executables: []