static void create_and_free_provider(int argc, char **argv) { usdt_provider_t *provider; usdt_probedef_t *probedef; if ((provider = usdt_create_provider("testlibusdt", "modname")) == NULL) { fprintf(stderr, "unable to create provider\n"); exit (1); } if ((probedef = usdt_create_probe((const char *)argv[1], (const char *)argv[2], (argc-3), (const char **)&argv[3])) == NULL) { fprintf(stderr, "unable to create probe\n"); exit (1); } usdt_provider_add_probe(provider, probedef); if ((usdt_provider_enable(provider)) < 0) { fprintf(stderr, "unable to enable provider: %s\n", usdt_errstr(provider)); exit (1); } if ((usdt_provider_disable(provider)) < 0) { fprintf(stderr, "unable to disable provider: %s\n", usdt_errstr(provider)); exit (1); } usdt_probe_release(probedef); usdt_provider_free(provider); }
/** * USDT::Provider#disable */ static VALUE provider_disable(VALUE self) { usdt_provider_t *provider = DATA_PTR(self); int status = usdt_provider_disable(provider); if (status == 0) { return Qtrue; } else { rb_raise(USDT_Error, "%s", usdt_errstr(provider)); } }