|
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- /*
- * Copyright (c) 2012, Chris Andrews. All rights reserved.
- */
-
- #include <stdint.h>
- #include <unistd.h>
-
- #define USDT_ARG_MAX 32
-
- typedef enum usdt_error {
- USDT_ERROR_MALLOC = 0,
- USDT_ERROR_VALLOC,
- USDT_ERROR_NOPROBES,
- USDT_ERROR_LOADDOF,
- USDT_ERROR_ALREADYENABLED,
- USDT_ERROR_UNLOADDOF,
- USDT_ERROR_DUP_PROBE,
- USDT_ERROR_REMOVE_PROBE
- } usdt_error_t;
-
- typedef struct usdt_probe {
- int (*isenabled_addr)(void);
- void *probe_addr;
- } usdt_probe_t;
-
- int usdt_is_enabled(usdt_probe_t *probe);
- void usdt_fire_probe(usdt_probe_t *probe, size_t argc, void **argv);
-
- typedef struct usdt_probedef {
- const char *name;
- const char *function;
- size_t argc;
- char *types[USDT_ARG_MAX];
- struct usdt_probe *probe;
- struct usdt_probedef *next;
- int refcnt;
- } usdt_probedef_t;
-
- usdt_probedef_t *usdt_create_probe(const char *func, const char *name,
- size_t argc, const char **types);
- void usdt_probe_release(usdt_probedef_t *probedef);
-
- typedef struct usdt_provider {
- const char *name;
- const char *module;
- usdt_probedef_t *probedefs;
- char *error;
- int enabled;
- void *file;
- } usdt_provider_t;
-
- usdt_provider_t *usdt_create_provider(const char *name, const char *module);
- int usdt_provider_add_probe(usdt_provider_t *provider, usdt_probedef_t *probedef);
- int usdt_provider_remove_probe(usdt_provider_t *provider, usdt_probedef_t *probedef);
- int usdt_provider_enable(usdt_provider_t *provider);
- int usdt_provider_disable(usdt_provider_t *provider);
- void usdt_provider_free(usdt_provider_t *provider);
-
- void usdt_error(usdt_provider_t *provider, usdt_error_t error, ...);
- char *usdt_errstr(usdt_provider_t *provider);
-
|