ext/usdt/usdt.h in ruby-usdt-0.0.3 vs ext/usdt/usdt.h in ruby-usdt-0.0.4
- old
+ new
@@ -1,18 +1,25 @@
+/*
+ * Copyright (c) 2012, Chris Andrews. All rights reserved.
+ */
+
#include <stdint.h>
#include <unistd.h>
typedef uint8_t usdt_argtype_t;
#define USDT_ARGTYPE_NONE 0
#define USDT_ARGTYPE_STRING 1
#define USDT_ARGTYPE_INTEGER 2
+#define USDT_ARG_MAX 32
+
typedef enum usdt_error {
USDT_ERROR_MALLOC = 0,
USDT_ERROR_VALLOC,
USDT_ERROR_NOPROBES,
- USDT_ERROR_LOADDOF
+ USDT_ERROR_LOADDOF,
+ USDT_ERROR_ALREADYENABLED
} usdt_error_t;
typedef struct usdt_probe {
int (*isenabled_addr)(void);
void *probe_addr;
@@ -23,28 +30,28 @@
typedef struct usdt_probedef {
const char *name;
const char *function;
size_t argc;
- usdt_argtype_t types[6];
+ usdt_argtype_t types[USDT_ARG_MAX];
struct usdt_probe *probe;
struct usdt_probedef *next;
} usdt_probedef_t;
-usdt_probedef_t *usdt_create_probe_varargs(const char *func, const char *name, ...);
usdt_probedef_t *usdt_create_probe(const char *func, const char *name,
size_t argc, const char **types);
typedef struct usdt_provider {
const char *name;
const char *module;
usdt_probedef_t *probedefs;
char *error;
+ int enabled;
} usdt_provider_t;
usdt_provider_t *usdt_create_provider(const char *name, const char *module);
void usdt_provider_add_probe(usdt_provider_t *provider, usdt_probedef_t *probedef);
int usdt_provider_enable(usdt_provider_t *provider);
-void usdt_error(usdt_provider_t *provider, usdt_error_t error);
+void usdt_error(usdt_provider_t *provider, usdt_error_t error, ...);
char *usdt_errstr(usdt_provider_t *provider);