ruby-static-tracing 0.0.13 → 0.0.14
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 +4 -4
- data/ext/ruby-static-tracing/darwin/provider.c +40 -52
- data/ext/ruby-static-tracing/darwin/provider.h +2 -3
- data/ext/ruby-static-tracing/darwin/ruby_static_tracing.c +4 -5
- data/ext/ruby-static-tracing/darwin/tracepoint.c +66 -91
- data/ext/ruby-static-tracing/darwin/tracepoint.h +4 -4
- data/ext/ruby-static-tracing/extconf.rb +40 -36
- data/ext/ruby-static-tracing/include/ruby_static_tracing.h +2 -1
- data/ext/ruby-static-tracing/lib/deps-extconf.rb +30 -28
- data/ext/ruby-static-tracing/lib/post-extconf.rb +23 -21
- data/ext/ruby-static-tracing/linux/provider.c +87 -61
- data/ext/ruby-static-tracing/linux/provider.h +16 -4
- data/ext/ruby-static-tracing/linux/ruby_static_tracing.c +7 -7
- data/ext/ruby-static-tracing/linux/tracepoint.c +86 -96
- data/ext/ruby-static-tracing/linux/tracepoint.h +2 -2
- data/ext/ruby-static-tracing/linux/types.h +2 -2
- data/lib/ruby-static-tracing.rb +11 -3
- data/lib/ruby-static-tracing/configuration.rb +11 -0
- data/lib/ruby-static-tracing/platform.rb +5 -1
- data/lib/ruby-static-tracing/provider.rb +50 -26
- data/lib/ruby-static-tracing/tracepoint.rb +19 -9
- data/lib/ruby-static-tracing/tracepoints.rb +2 -0
- data/lib/ruby-static-tracing/tracer/base.rb +2 -0
- data/lib/ruby-static-tracing/tracer/concerns/latency_tracer.rb +2 -0
- data/lib/ruby-static-tracing/tracer/helpers.rb +8 -8
- data/lib/ruby-static-tracing/tracer/latency.rb +1 -1
- data/lib/ruby-static-tracing/tracer/stack.rb +4 -2
- data/lib/ruby-static-tracing/tracers.rb +9 -0
- data/lib/ruby-static-tracing/version.rb +2 -1
- metadata +42 -14
@@ -8,14 +8,14 @@
|
|
8
8
|
// FIXME move this to shared header
|
9
9
|
typedef union {
|
10
10
|
unsigned long long intval;
|
11
|
-
char *
|
11
|
+
char *strval;
|
12
12
|
} Tracepoint_fire_arg;
|
13
13
|
|
14
14
|
typedef struct {
|
15
15
|
char *name;
|
16
16
|
usdt_probedef_t *usdt_tracepoint_def;
|
17
|
-
usdt_probe_t
|
18
|
-
//Tracepoint_arg_types *args;
|
17
|
+
usdt_probe_t *usdt_tracepoint;
|
18
|
+
// Tracepoint_arg_types *args;
|
19
19
|
} static_tracing_tracepoint_t;
|
20
20
|
|
21
21
|
/*
|
@@ -49,4 +49,4 @@ tracepoint_enabled(VALUE self);
|
|
49
49
|
VALUE
|
50
50
|
static_tracing_tracepoint_alloc(VALUE klass);
|
51
51
|
|
52
|
-
#endif //STATIC_TRACING_TRACEPOINT_H
|
52
|
+
#endif // STATIC_TRACING_TRACEPOINT_H
|
@@ -1,83 +1,87 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
$LOAD_PATH.unshift File.expand_path('../../lib', __dir__).freeze
|
2
4
|
|
3
5
|
require 'mkmf'
|
4
6
|
require 'ruby-static-tracing/platform'
|
5
7
|
|
6
|
-
BASE_DIR=
|
7
|
-
LIB_DIR
|
8
|
+
BASE_DIR = __dir__
|
9
|
+
LIB_DIR = File.expand_path('../../lib/ruby-static-tracing', __dir__)
|
8
10
|
|
9
|
-
MKMF_TARGET='ruby-static-tracing/ruby_static_tracing'
|
11
|
+
MKMF_TARGET = 'ruby-static-tracing/ruby_static_tracing'
|
10
12
|
|
11
13
|
def platform_dir(platform)
|
12
14
|
File.expand_path("../../../ext/ruby-static-tracing/#{platform}/", __FILE__)
|
13
15
|
end
|
14
16
|
|
15
17
|
def lib_dir
|
16
|
-
File.expand_path(
|
18
|
+
File.expand_path('../../lib/ruby-static-tracing', __dir__)
|
17
19
|
end
|
18
20
|
# - Linux, via libstapsdt
|
19
21
|
if StaticTracing::Platform.linux?
|
20
22
|
|
21
|
-
LIB_DIRS = [LIB_DIR, RbConfig::CONFIG['libdir']]
|
23
|
+
LIB_DIRS = [LIB_DIR, RbConfig::CONFIG['libdir']].freeze
|
22
24
|
HEADER_DIRS = [
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
25
|
+
File.join(BASE_DIR, 'include'),
|
26
|
+
File.join(BASE_DIR, 'lib', 'libstapsdt', 'src'),
|
27
|
+
RbConfig::CONFIG['includedir']
|
28
|
+
].freeze
|
27
29
|
|
30
|
+
puts HEADER_DIRS.inspect
|
28
31
|
dir_config(MKMF_TARGET, HEADER_DIRS, LIB_DIRS)
|
29
32
|
|
30
33
|
abort 'libstapsdt.h is missing, please install libstapsdt' unless find_header('libstapsdt.h')
|
31
34
|
have_header 'libstapsdt.h'
|
35
|
+
have_header 'ruby_static_tracing.h'
|
32
36
|
|
33
37
|
unless have_library('stapsdt')
|
34
|
-
abort
|
38
|
+
abort 'libstapsdt is missing, please install it'
|
35
39
|
end
|
36
40
|
|
37
|
-
$CFLAGS =
|
38
|
-
if ENV.key?('DEBUG')
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
41
|
+
$CFLAGS = '-D_GNU_SOURCE -Wall ' # -Werror complaining
|
42
|
+
$CFLAGS += if ENV.key?('DEBUG')
|
43
|
+
'-O0 -g -DDEBUG'
|
44
|
+
else
|
45
|
+
'-O3'
|
46
|
+
end
|
43
47
|
|
44
48
|
$LDFLAGS += " -Wl,-rpath='\$\$ORIGIN/../ruby-static-tracing' "
|
45
49
|
|
46
|
-
create_makefile(MKMF_TARGET, platform_dir(
|
50
|
+
create_makefile(MKMF_TARGET, platform_dir('linux'))
|
47
51
|
|
48
52
|
# - Darwin/BSD and other dtrace platforms, via libusdt
|
49
53
|
elsif StaticTracing::Platform.darwin?
|
50
|
-
abort 'dtrace is missing, this platform is not supported' unless have_library(
|
54
|
+
abort 'dtrace is missing, this platform is not supported' unless have_library('dtrace', 'dtrace_open')
|
51
55
|
|
52
|
-
LIB_DIRS = [LIB_DIR, RbConfig::CONFIG['libdir']]
|
56
|
+
LIB_DIRS = [LIB_DIR, RbConfig::CONFIG['libdir']].freeze
|
53
57
|
puts LIB_DIRS.inspect
|
54
58
|
HEADER_DIRS = [
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
+
File.join(BASE_DIR, 'include'),
|
60
|
+
File.join(BASE_DIR, 'lib', 'libusdt'),
|
61
|
+
RbConfig::CONFIG['includedir']
|
62
|
+
].freeze
|
59
63
|
|
60
64
|
dir_config(MKMF_TARGET, HEADER_DIRS, LIB_DIRS)
|
61
65
|
|
62
66
|
have_header('usdt.h')
|
63
|
-
abort
|
67
|
+
abort 'ERROR: libusdt is required. It is included, so this failure is an error.' unless have_library('usdt')
|
64
68
|
|
65
|
-
$CFLAGS =
|
66
|
-
if ENV.key?('DEBUG')
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
69
|
+
$CFLAGS = '-D_GNU_SOURCE -Wall ' # -Werror complaining
|
70
|
+
$CFLAGS << if ENV.key?('DEBUG')
|
71
|
+
'-O0 -g -DDEBUG'
|
72
|
+
else
|
73
|
+
'-O3'
|
74
|
+
end
|
71
75
|
|
72
76
|
create_makefile(MKMF_TARGET, platform_dir('darwin'))
|
73
77
|
else
|
74
78
|
# - Stub, for other platforms that support neither
|
75
79
|
# for now, we will yolo stub this to leave room to handle platforms
|
76
80
|
# that support properly support conventional dtrace
|
77
|
-
File.write
|
78
|
-
all:
|
79
|
-
clean:
|
80
|
-
install:
|
81
|
-
MAKEFILE
|
81
|
+
File.write 'Makefile', <<~MAKEFILE
|
82
|
+
all:
|
83
|
+
clean:
|
84
|
+
install:
|
85
|
+
MAKEFILE
|
82
86
|
exit
|
83
87
|
end
|
@@ -7,10 +7,11 @@ Implements Init_ruby_static_tracing, which is used as C/Ruby entrypoint.
|
|
7
7
|
#define RUBY_STATIC_TRACING_H
|
8
8
|
|
9
9
|
#include "ruby.h"
|
10
|
+
|
10
11
|
#include "provider.h"
|
11
12
|
#include "tracepoint.h"
|
12
13
|
|
13
14
|
void Init_ruby_static_tracing();
|
14
15
|
extern VALUE eUSDT, eInternal;
|
15
16
|
|
16
|
-
#endif //RUBY_STATIC_TRACING_H
|
17
|
+
#endif // RUBY_STATIC_TRACING_H
|
@@ -1,25 +1,27 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
$LOAD_PATH.unshift File.expand_path('../../../lib', __dir__)
|
2
4
|
|
3
5
|
require 'mkmf'
|
4
6
|
require 'ruby-static-tracing/platform'
|
5
7
|
|
6
|
-
BASE_DIR =
|
7
|
-
LIB_DIR = File.expand_path('
|
8
|
+
BASE_DIR = __dir__
|
9
|
+
LIB_DIR = File.expand_path('../../../lib/ruby-static-tracing', __dir__)
|
8
10
|
|
9
|
-
# FIXME have this install libstapsdt
|
11
|
+
# FIXME: have this install libstapsdt
|
10
12
|
if StaticTracing::Platform.linux?
|
11
13
|
# This is a bit of a hack to compile libstapsdt.so
|
12
14
|
# and "trick" extconf into thinking it's just another .so
|
13
|
-
File.write
|
14
|
-
all:
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
clean:
|
20
|
-
|
21
|
-
install:
|
22
|
-
MAKEFILE
|
15
|
+
File.write 'Makefile', <<~MAKEFILE
|
16
|
+
all:
|
17
|
+
cd #{File.join(BASE_DIR, 'libstapsdt')} && make CFLAGS_EXTRA=-DLIBSTAPSDT_MEMORY_BACKED_FD
|
18
|
+
touch deps.so # HACK
|
19
|
+
cp #{File.join(BASE_DIR, 'libstapsdt', 'out/libstapsdt.so.0')} #{LIB_DIR}
|
20
|
+
cd #{LIB_DIR} && ln -sf libstapsdt.so.0 libstapsdt.so
|
21
|
+
clean:
|
22
|
+
cd #{File.join(BASE_DIR, 'libstapsdt')} && make clean
|
23
|
+
install:
|
24
|
+
MAKEFILE
|
23
25
|
exit
|
24
26
|
# We'll build libusdt and install and update linker info
|
25
27
|
elsif StaticTracing::Platform.darwin?
|
@@ -27,22 +29,22 @@ elsif StaticTracing::Platform.darwin?
|
|
27
29
|
# and "trick" extconf into thinking it's just another .bundle
|
28
30
|
# After installing it (in post-extconf), we forcefully update the load path for
|
29
31
|
# ruby_static_tracing.bundle to find it in the same directory
|
30
|
-
File.write
|
31
|
-
all:
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
clean:
|
36
|
-
|
37
|
-
install:
|
38
|
-
MAKEFILE
|
32
|
+
File.write 'Makefile', <<~MAKEFILE
|
33
|
+
all:
|
34
|
+
cd #{File.join(BASE_DIR, 'libusdt')} && make libusdt.dylib
|
35
|
+
touch deps.bundle # HACK
|
36
|
+
cp #{File.join(BASE_DIR, 'libusdt', 'libusdt.dylib')} #{LIB_DIR}
|
37
|
+
clean:
|
38
|
+
cd #{File.join(BASE_DIR, 'libusdt')} && make clean
|
39
|
+
install:
|
40
|
+
MAKEFILE
|
39
41
|
exit
|
40
42
|
else
|
41
43
|
# - Stub, for other platforms that we don't support, we write an empty makefile
|
42
|
-
File.write
|
43
|
-
all:
|
44
|
-
clean:
|
45
|
-
install:
|
46
|
-
MAKEFILE
|
44
|
+
File.write 'Makefile', <<~MAKEFILE
|
45
|
+
all:
|
46
|
+
clean:
|
47
|
+
install:
|
48
|
+
MAKEFILE
|
47
49
|
exit
|
48
50
|
end
|
@@ -1,37 +1,39 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
$LOAD_PATH.unshift File.expand_path('../../../lib', __dir__)
|
2
4
|
|
3
5
|
require 'mkmf'
|
4
6
|
require 'ruby-static-tracing/platform'
|
5
7
|
|
6
|
-
BASE_DIR =
|
7
|
-
LIB_DIR = File.expand_path('
|
8
|
+
BASE_DIR = __dir__
|
9
|
+
LIB_DIR = File.expand_path('../../../lib/ruby-static-tracing', __dir__)
|
8
10
|
|
9
11
|
# Linux is a noop
|
10
12
|
if StaticTracing::Platform.linux?
|
11
|
-
File.write
|
12
|
-
all:
|
13
|
-
|
14
|
-
clean:
|
15
|
-
install:
|
16
|
-
MAKEFILE
|
13
|
+
File.write 'Makefile', <<~MAKEFILE
|
14
|
+
all:
|
15
|
+
touch post.so
|
16
|
+
clean:
|
17
|
+
install:
|
18
|
+
MAKEFILE
|
17
19
|
exit
|
18
20
|
# We'll build libusdt and install and update linker info
|
19
21
|
elsif StaticTracing::Platform.darwin?
|
20
22
|
# This is done to ensure that the bundle will look in its local directory for the library
|
21
|
-
File.write
|
22
|
-
all:
|
23
|
-
|
24
|
-
|
25
|
-
clean:
|
26
|
-
install:
|
27
|
-
MAKEFILE
|
23
|
+
File.write 'Makefile', <<~MAKEFILE
|
24
|
+
all:
|
25
|
+
touch post.bundle
|
26
|
+
install_name_tool -change libusdt.dylib @loader_path/../ruby-static-tracing/libusdt.dylib #{File.join(LIB_DIR, 'ruby_static_tracing.bundle')}
|
27
|
+
clean:
|
28
|
+
install:
|
29
|
+
MAKEFILE
|
28
30
|
exit
|
29
31
|
else
|
30
32
|
# - Stub, for other platforms that we don't support, we write an empty makefile
|
31
|
-
File.write
|
32
|
-
all:
|
33
|
-
clean:
|
34
|
-
install:
|
35
|
-
MAKEFILE
|
33
|
+
File.write 'Makefile', <<~MAKEFILE
|
34
|
+
all:
|
35
|
+
clean:
|
36
|
+
install:
|
37
|
+
MAKEFILE
|
36
38
|
exit
|
37
39
|
end
|
@@ -1,18 +1,17 @@
|
|
1
1
|
#include "provider.h"
|
2
2
|
|
3
|
-
|
4
|
-
|
3
|
+
#include <string.h>
|
4
|
+
|
5
|
+
static const rb_data_type_t static_tracing_provider_type;
|
5
6
|
|
6
7
|
// Forward decls
|
7
|
-
static const char*
|
8
|
-
check_name_arg(VALUE name);
|
8
|
+
static const char *check_name_arg(VALUE name);
|
9
9
|
|
10
10
|
/*
|
11
11
|
Wraps ProviderInit from libstapsdt
|
12
12
|
*/
|
13
13
|
VALUE
|
14
|
-
provider_initialize(VALUE self, VALUE name)
|
15
|
-
{
|
14
|
+
provider_initialize(VALUE self, VALUE name) {
|
16
15
|
const char *c_name_str = NULL;
|
17
16
|
static_tracing_provider_t *res = NULL;
|
18
17
|
|
@@ -20,30 +19,51 @@ provider_initialize(VALUE self, VALUE name)
|
|
20
19
|
c_name_str = check_name_arg(name);
|
21
20
|
|
22
21
|
// Build provider structure
|
23
|
-
TypedData_Get_Struct(self, static_tracing_provider_t,
|
22
|
+
TypedData_Get_Struct(self, static_tracing_provider_t,
|
23
|
+
&static_tracing_provider_type, res);
|
24
24
|
res->sdt_provider = providerInit(c_name_str);
|
25
25
|
return self;
|
26
26
|
}
|
27
27
|
|
28
28
|
// Internal function used to register a tracepoint against a provider instance
|
29
|
-
SDTProbe_t
|
30
|
-
|
31
|
-
{
|
29
|
+
SDTProbe_t *provider_add_tracepoint_internal(VALUE self, const char *name,
|
30
|
+
int argc,
|
31
|
+
Tracepoint_arg_types *args) {
|
32
32
|
static_tracing_provider_t *res = NULL;
|
33
33
|
SDTProbe_t *probe;
|
34
34
|
|
35
|
-
TypedData_Get_Struct(self, static_tracing_provider_t,
|
36
|
-
|
37
|
-
|
38
|
-
{
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
35
|
+
TypedData_Get_Struct(self, static_tracing_provider_t,
|
36
|
+
&static_tracing_provider_type, res);
|
37
|
+
|
38
|
+
switch (argc) {
|
39
|
+
case 0:
|
40
|
+
probe = providerAddProbe(res->sdt_provider, name, 0);
|
41
|
+
break;
|
42
|
+
case 1:
|
43
|
+
probe = providerAddProbe(res->sdt_provider, name, argc, args[0]);
|
44
|
+
break;
|
45
|
+
case 2:
|
46
|
+
probe = providerAddProbe(res->sdt_provider, name, argc, args[0], args[1]);
|
47
|
+
break;
|
48
|
+
case 3:
|
49
|
+
probe = providerAddProbe(res->sdt_provider, name, argc, args[0], args[1],
|
50
|
+
args[2]);
|
51
|
+
break;
|
52
|
+
case 4:
|
53
|
+
probe = providerAddProbe(res->sdt_provider, name, argc, args[0], args[1],
|
54
|
+
args[2], args[3]);
|
55
|
+
break;
|
56
|
+
case 5:
|
57
|
+
probe = providerAddProbe(res->sdt_provider, name, argc, args[0], args[1],
|
58
|
+
args[2], args[3], args[4]);
|
59
|
+
break;
|
60
|
+
case 6:
|
61
|
+
probe = providerAddProbe(res->sdt_provider, name, argc, args[0], args[1],
|
62
|
+
args[2], args[3], args[4], args[5]);
|
63
|
+
break;
|
64
|
+
default:
|
65
|
+
probe = providerAddProbe(res->sdt_provider, name, 0);
|
66
|
+
break;
|
47
67
|
}
|
48
68
|
|
49
69
|
return probe;
|
@@ -53,10 +73,10 @@ SDTProbe_t
|
|
53
73
|
Wraps providerLoad from libstapsdt
|
54
74
|
*/
|
55
75
|
VALUE
|
56
|
-
provider_enable(VALUE self)
|
57
|
-
{
|
76
|
+
provider_enable(VALUE self) {
|
58
77
|
static_tracing_provider_t *res = NULL;
|
59
|
-
TypedData_Get_Struct(self, static_tracing_provider_t,
|
78
|
+
TypedData_Get_Struct(self, static_tracing_provider_t,
|
79
|
+
&static_tracing_provider_type, res);
|
60
80
|
return providerLoad(res->sdt_provider) == 0 ? Qtrue : Qfalse;
|
61
81
|
}
|
62
82
|
|
@@ -64,38 +84,54 @@ provider_enable(VALUE self)
|
|
64
84
|
Wraps providerUnload from libstapsdt
|
65
85
|
*/
|
66
86
|
VALUE
|
67
|
-
provider_disable(VALUE self)
|
68
|
-
{
|
87
|
+
provider_disable(VALUE self) {
|
69
88
|
static_tracing_provider_t *res = NULL;
|
70
|
-
TypedData_Get_Struct(self, static_tracing_provider_t,
|
89
|
+
TypedData_Get_Struct(self, static_tracing_provider_t,
|
90
|
+
&static_tracing_provider_type, res);
|
91
|
+
res->sdt_provider->_filename = NULL; // FIXME upstream should do this
|
71
92
|
return providerUnload(res->sdt_provider) == 0 ? Qtrue : Qfalse;
|
72
93
|
}
|
73
94
|
|
74
95
|
/*
|
75
|
-
Wraps
|
96
|
+
Wraps providerDestroy from libstapsdt
|
76
97
|
*/
|
77
98
|
VALUE
|
78
|
-
provider_destroy(VALUE self)
|
79
|
-
{
|
99
|
+
provider_destroy(VALUE self) {
|
80
100
|
static_tracing_provider_t *res = NULL;
|
81
|
-
TypedData_Get_Struct(self, static_tracing_provider_t,
|
101
|
+
TypedData_Get_Struct(self, static_tracing_provider_t,
|
102
|
+
&static_tracing_provider_type, res);
|
82
103
|
providerDestroy(res->sdt_provider);
|
83
104
|
return Qnil;
|
84
105
|
}
|
85
106
|
|
107
|
+
VALUE
|
108
|
+
provider_path(VALUE self) {
|
109
|
+
VALUE path;
|
110
|
+
char *_path;
|
111
|
+
static_tracing_provider_t *res = NULL;
|
112
|
+
TypedData_Get_Struct(self, static_tracing_provider_t,
|
113
|
+
&static_tracing_provider_type, res);
|
114
|
+
|
115
|
+
if (res != NULL && res->sdt_provider != NULL &&
|
116
|
+
res->sdt_provider->_filename != NULL) {
|
117
|
+
_path = res->sdt_provider->_filename;
|
118
|
+
path = strlen(_path) > 0 ? rb_str_new_cstr(_path) : rb_str_new_cstr("");
|
119
|
+
} else {
|
120
|
+
path = rb_str_new_cstr("");
|
121
|
+
}
|
122
|
+
return path;
|
123
|
+
}
|
124
|
+
|
86
125
|
// Allocate a static_tracing_provider_type struct for ruby memory management
|
87
126
|
VALUE
|
88
|
-
static_tracing_provider_alloc(VALUE klass)
|
89
|
-
{
|
127
|
+
static_tracing_provider_alloc(VALUE klass) {
|
90
128
|
static_tracing_provider_t *res;
|
91
|
-
VALUE obj = TypedData_Make_Struct(klass, static_tracing_provider_t,
|
129
|
+
VALUE obj = TypedData_Make_Struct(klass, static_tracing_provider_t,
|
130
|
+
&static_tracing_provider_type, res);
|
92
131
|
return obj;
|
93
132
|
}
|
94
133
|
|
95
|
-
|
96
|
-
static const char*
|
97
|
-
check_name_arg(VALUE name)
|
98
|
-
{
|
134
|
+
static const char *check_name_arg(VALUE name) {
|
99
135
|
const char *c_name_str = NULL;
|
100
136
|
|
101
137
|
if (TYPE(name) != T_SYMBOL && TYPE(name) != T_STRING) {
|
@@ -110,36 +146,26 @@ check_name_arg(VALUE name)
|
|
110
146
|
return c_name_str;
|
111
147
|
}
|
112
148
|
|
113
|
-
static inline void
|
114
|
-
static_tracing_provider_mark(void *ptr)
|
115
|
-
{
|
116
|
-
/* noop */
|
149
|
+
static inline void static_tracing_provider_mark(void *ptr) { /* noop */
|
117
150
|
}
|
118
151
|
|
119
|
-
static inline void
|
120
|
-
|
121
|
-
{
|
122
|
-
static_tracing_provider_t *res = (static_tracing_provider_t *) ptr;
|
123
|
-
//if (res->name) {
|
152
|
+
static inline void static_tracing_provider_free(void *ptr) {
|
153
|
+
static_tracing_provider_t *res = (static_tracing_provider_t *)ptr;
|
154
|
+
// if (res->name) {
|
124
155
|
// free(res->name);
|
125
156
|
// res->name = NULL;
|
126
157
|
//}
|
127
158
|
xfree(res);
|
128
159
|
}
|
129
160
|
|
130
|
-
static inline size_t
|
131
|
-
static_tracing_provider_memsize(const void *ptr)
|
132
|
-
{
|
161
|
+
static inline size_t static_tracing_provider_memsize(const void *ptr) {
|
133
162
|
return sizeof(static_tracing_provider_t);
|
134
163
|
}
|
135
164
|
|
136
|
-
static const rb_data_type_t
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
},
|
144
|
-
NULL, NULL, RUBY_TYPED_FREE_IMMEDIATELY
|
145
|
-
};
|
165
|
+
static const rb_data_type_t static_tracing_provider_type = {
|
166
|
+
"static_tracing_provider",
|
167
|
+
{static_tracing_provider_mark, static_tracing_provider_free,
|
168
|
+
static_tracing_provider_memsize},
|
169
|
+
NULL,
|
170
|
+
NULL,
|
171
|
+
RUBY_TYPED_FREE_IMMEDIATELY};
|