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);
}
示例#2
0
/**
 * USDT::Provider#enable
 */
static VALUE provider_enable(VALUE self) {
  usdt_provider_t *provider = DATA_PTR(self);
  int status = usdt_provider_enable(provider);
  if (status == 0) {
    return Qtrue;
  } else {
    rb_raise(USDT_Error, "%s", usdt_errstr(provider));
  }
}