X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=blobdiff_plain;f=include%2Flttng%2Fuserspace-probe.h;h=7de667efcb5d0555d35f04d1491fe15b4dd56523;hp=7215bd9679303e0fba793647f9d17d6473679529;hb=HEAD;hpb=ab5be9fa2eb5ba9600a82cd18fd3cfcbac69169a diff --git a/include/lttng/userspace-probe.h b/include/lttng/userspace-probe.h index 7215bd967..7de667efc 100644 --- a/include/lttng/userspace-probe.h +++ b/include/lttng/userspace-probe.h @@ -8,6 +8,8 @@ #ifndef LTTNG_USERSPACE_PROBE_H #define LTTNG_USERSPACE_PROBE_H +#include + #ifdef __cplusplus extern "C" { #endif @@ -19,40 +21,39 @@ extern "C" { struct lttng_userspace_probe_location_lookup_method; enum lttng_userspace_probe_location_lookup_method_type { - LTTNG_USERSPACE_PROBE_LOCATION_LOOKUP_METHOD_TYPE_UNKNOWN = -1, - LTTNG_USERSPACE_PROBE_LOCATION_LOOKUP_METHOD_TYPE_FUNCTION_DEFAULT = 0, - LTTNG_USERSPACE_PROBE_LOCATION_LOOKUP_METHOD_TYPE_FUNCTION_ELF = 1, - LTTNG_USERSPACE_PROBE_LOCATION_LOOKUP_METHOD_TYPE_TRACEPOINT_SDT = 2, + LTTNG_USERSPACE_PROBE_LOCATION_LOOKUP_METHOD_TYPE_UNKNOWN = -1, + LTTNG_USERSPACE_PROBE_LOCATION_LOOKUP_METHOD_TYPE_FUNCTION_DEFAULT = 0, + LTTNG_USERSPACE_PROBE_LOCATION_LOOKUP_METHOD_TYPE_FUNCTION_ELF = 1, + LTTNG_USERSPACE_PROBE_LOCATION_LOOKUP_METHOD_TYPE_TRACEPOINT_SDT = 2, }; /* * Get the type of a lookup method. */ -extern enum lttng_userspace_probe_location_lookup_method_type +LTTNG_EXPORT extern enum lttng_userspace_probe_location_lookup_method_type lttng_userspace_probe_location_lookup_method_get_type( - const struct lttng_userspace_probe_location_lookup_method *lookup_method); + const struct lttng_userspace_probe_location_lookup_method *lookup_method); /* * Destroy a lookup method. */ -extern void lttng_userspace_probe_location_lookup_method_destroy( - struct lttng_userspace_probe_location_lookup_method *lookup_method); +LTTNG_EXPORT extern void lttng_userspace_probe_location_lookup_method_destroy( + struct lttng_userspace_probe_location_lookup_method *lookup_method); /* * Create a tracepoint ELF function lookup method struct. * Return NULL on failure. */ -extern struct lttng_userspace_probe_location_lookup_method * +LTTNG_EXPORT extern struct lttng_userspace_probe_location_lookup_method * lttng_userspace_probe_location_lookup_method_function_elf_create(void); /* * Create a tracepoint SDT tracepoint lookup method struct. * Return NULL on failure. */ -extern struct lttng_userspace_probe_location_lookup_method * +LTTNG_EXPORT extern struct lttng_userspace_probe_location_lookup_method * lttng_userspace_probe_location_lookup_method_tracepoint_sdt_create(void); - /* * Contains all the information needed to compute the instrumentation point in * the binary. It is used in conjonction with a lookup method. @@ -60,32 +61,30 @@ lttng_userspace_probe_location_lookup_method_tracepoint_sdt_create(void); struct lttng_userspace_probe_location; enum lttng_userspace_probe_location_status { - LTTNG_USERSPACE_PROBE_LOCATION_STATUS_OK = 0, + LTTNG_USERSPACE_PROBE_LOCATION_STATUS_OK = 0, /* Invalid parameters provided. */ - LTTNG_USERSPACE_PROBE_LOCATION_STATUS_INVALID = -1, + LTTNG_USERSPACE_PROBE_LOCATION_STATUS_INVALID = -1, }; enum lttng_userspace_probe_location_type { - LTTNG_USERSPACE_PROBE_LOCATION_TYPE_UNKNOWN = -1, + LTTNG_USERSPACE_PROBE_LOCATION_TYPE_UNKNOWN = -1, /* Function. */ - LTTNG_USERSPACE_PROBE_LOCATION_TYPE_FUNCTION = 0, + LTTNG_USERSPACE_PROBE_LOCATION_TYPE_FUNCTION = 0, /* SDT probe's callsites. */ - LTTNG_USERSPACE_PROBE_LOCATION_TYPE_TRACEPOINT = 1, + LTTNG_USERSPACE_PROBE_LOCATION_TYPE_TRACEPOINT = 1, }; /* * Get the type of the userspace probe location. */ -extern enum lttng_userspace_probe_location_type -lttng_userspace_probe_location_get_type( - const struct lttng_userspace_probe_location *location); +LTTNG_EXPORT extern enum lttng_userspace_probe_location_type +lttng_userspace_probe_location_get_type(const struct lttng_userspace_probe_location *location); /* * Destroy the userspace probe location. */ -extern void lttng_userspace_probe_location_destroy( - struct lttng_userspace_probe_location *location); - +LTTNG_EXPORT extern void +lttng_userspace_probe_location_destroy(struct lttng_userspace_probe_location *location); enum lttng_userspace_probe_location_function_instrumentation_type { LTTNG_USERSPACE_PROBE_LOCATION_FUNCTION_INSTRUMENTATION_TYPE_UNKNOWN = -1, @@ -101,36 +100,37 @@ enum lttng_userspace_probe_location_function_instrumentation_type { * The ownership of the lookup method is transferred to the created probe * location. */ -extern struct lttng_userspace_probe_location * -lttng_userspace_probe_location_function_create(const char *binary_path, - const char *function_name, - struct lttng_userspace_probe_location_lookup_method *lookup_method); +LTTNG_EXPORT extern struct lttng_userspace_probe_location * +lttng_userspace_probe_location_function_create( + const char *binary_path, + const char *function_name, + struct lttng_userspace_probe_location_lookup_method *lookup_method); /* * Get the target binary path of the probe location of the function type. */ -extern const char *lttng_userspace_probe_location_function_get_binary_path( - const struct lttng_userspace_probe_location *location); +LTTNG_EXPORT extern const char *lttng_userspace_probe_location_function_get_binary_path( + const struct lttng_userspace_probe_location *location); /* * Get the target function type of the probe location of the function type. */ -extern const char *lttng_userspace_probe_location_function_get_function_name( - const struct lttng_userspace_probe_location *location); +LTTNG_EXPORT extern const char *lttng_userspace_probe_location_function_get_function_name( + const struct lttng_userspace_probe_location *location); /* * Get the FD to the target binary file to the probe location of the function - * type. + * type. The FD is only valid for the duration of the lifetime of `location`. */ -extern int lttng_userspace_probe_location_function_get_binary_fd( - const struct lttng_userspace_probe_location *location); +LTTNG_EXPORT extern int lttng_userspace_probe_location_function_get_binary_fd( + const struct lttng_userspace_probe_location *location); /* * Get the instrumentation type of the function probe location. */ -extern enum lttng_userspace_probe_location_function_instrumentation_type +LTTNG_EXPORT extern enum lttng_userspace_probe_location_function_instrumentation_type lttng_userspace_probe_location_function_get_instrumentation_type( - const struct lttng_userspace_probe_location *location); + const struct lttng_userspace_probe_location *location); /* * Get the instrumentation type of the function probe location. @@ -141,10 +141,10 @@ lttng_userspace_probe_location_function_get_instrumentation_type( * LTTNG_USERSPACE_PROBE_LOCATION_STATUS_INVALID if invalid parameters * are provided. */ -extern enum lttng_userspace_probe_location_status +LTTNG_EXPORT extern enum lttng_userspace_probe_location_status lttng_userspace_probe_location_function_set_instrumentation_type( - const struct lttng_userspace_probe_location *location, - enum lttng_userspace_probe_location_function_instrumentation_type instrumentation_type); + const struct lttng_userspace_probe_location *location, + enum lttng_userspace_probe_location_function_instrumentation_type instrumentation_type); /* * Get the lookup method of the given userspace probe location. @@ -152,9 +152,9 @@ lttng_userspace_probe_location_function_set_instrumentation_type( * * The ownership of the lookup method is NOT transferred to the caller. */ -extern const struct lttng_userspace_probe_location_lookup_method * +LTTNG_EXPORT extern const struct lttng_userspace_probe_location_lookup_method * lttng_userspace_probe_location_get_lookup_method( - const struct lttng_userspace_probe_location *location); + const struct lttng_userspace_probe_location *location); /* * Create a probe location of the tracepoint type. @@ -165,36 +165,38 @@ lttng_userspace_probe_location_get_lookup_method( * The ownership of the lookup method is transferred to the created probe * location. */ -extern struct lttng_userspace_probe_location * -lttng_userspace_probe_location_tracepoint_create(const char *binary_path, - const char *probe_name, const char *provider_name, - struct lttng_userspace_probe_location_lookup_method *lookup_method); +LTTNG_EXPORT extern struct lttng_userspace_probe_location * +lttng_userspace_probe_location_tracepoint_create( + const char *binary_path, + const char *probe_name, + const char *provider_name, + struct lttng_userspace_probe_location_lookup_method *lookup_method); /* * Get the target binary path of the probe location of the tracepoint type. */ -extern const char *lttng_userspace_probe_location_tracepoint_get_binary_path( - const struct lttng_userspace_probe_location *location); +LTTNG_EXPORT extern const char *lttng_userspace_probe_location_tracepoint_get_binary_path( + const struct lttng_userspace_probe_location *location); /* * Get the target probe name of the probe location of the tracepoint type. */ -extern const char *lttng_userspace_probe_location_tracepoint_get_probe_name( - const struct lttng_userspace_probe_location *location); +LTTNG_EXPORT extern const char *lttng_userspace_probe_location_tracepoint_get_probe_name( + const struct lttng_userspace_probe_location *location); /* * Get the target probe provider name of the probe location of the tracepoint * type. */ -extern const char *lttng_userspace_probe_location_tracepoint_get_provider_name( - const struct lttng_userspace_probe_location *location); +LTTNG_EXPORT extern const char *lttng_userspace_probe_location_tracepoint_get_provider_name( + const struct lttng_userspace_probe_location *location); /* * Get the FD to the target binary file to the probe location of the tracepoint - * type. + * type. The FD is only valid for the duration of the lifetime of `location`. */ -extern int lttng_userspace_probe_location_tracepoint_get_binary_fd( - const struct lttng_userspace_probe_location *location); +LTTNG_EXPORT extern int lttng_userspace_probe_location_tracepoint_get_binary_fd( + const struct lttng_userspace_probe_location *location); #ifdef __cplusplus }