Exemple #1
0
static void __attribute__((constructor)) init()
{
	register_tracepoint(ust_event, tp_probe, NULL);
	register_tracepoint(ust_event, tp_probe2, NULL);
	register_tracepoint(ust_event, tp_probe3, &msg_probe3);
	register_tracepoint(ust_event2, tp_probe4, NULL);
}
/**
 * rb_enable_traces
 * This is the implementation of Tracer#enable_traces methods. It creates
 * the Tracer#file_tracepoint and Tracer#fiber_tracepoint for the first time
 * called. Then it also enables them immediately upon creation.
 */
static VALUE
rb_enable_traces(VALUE self)
{
    VALUE file_tracepoint;
    VALUE fiber_tracepoint;

    file_tracepoint = register_tracepoint(self, FILE_TRACEPOINT_EVENTS, "@file_tracepoint", file_tracepoint_callback);
    UNUSED(fiber_tracepoint);

    // Immediately activate file tracepoint and fiber tracepoint
    if (RTEST(file_tracepoint) && !RTEST(rb_tracepoint_enabled_p(file_tracepoint))) {
        rb_tracepoint_enable(file_tracepoint);
    }
#ifdef RUBY_EVENT_FIBER_SWITCH
    fiber_tracepoint = register_tracepoint(self, RUBY_EVENT_FIBER_SWITCH, "@fiber_tracepoint", fiber_tracepoint_callback);
    if (RTEST(fiber_tracepoint) && !RTEST(rb_tracepoint_enabled_p(fiber_tracepoint))) {
        rb_tracepoint_enable(fiber_tracepoint);
    }
#endif
    return Qnil;
}