X-Git-Url: https://git.liburcu.org/?a=blobdiff_plain;f=include%2Flttng%2Fuserspace-probe-internal.h;h=5e960c106db1b853224d12c4da59f8c6f1695e18;hb=b66cbf1731486ab4dc7e0b2e1c3fa05cc5360c19;hp=d9e5de254c6937cae82495c5e7a15a837b46476f;hpb=e368fb4396b9bdb22de16f0c93512c9f6d7ab0b4;p=lttng-tools.git diff --git a/include/lttng/userspace-probe-internal.h b/include/lttng/userspace-probe-internal.h index d9e5de254..5e960c106 100644 --- a/include/lttng/userspace-probe-internal.h +++ b/include/lttng/userspace-probe-internal.h @@ -11,15 +11,22 @@ #include #include +#include #include struct lttng_payload; struct lttng_payload_view; struct lttng_dynamic_buffer; +struct mi_writer; typedef bool (*userspace_probe_location_equal_cb)( const struct lttng_userspace_probe_location *a, const struct lttng_userspace_probe_location *b); +typedef unsigned long (*userspace_probe_location_hash_cb)( + const struct lttng_userspace_probe_location *location); +typedef enum lttng_error_code (*userspace_probe_location_mi)( + const struct lttng_userspace_probe_location *location, + struct mi_writer); /* * No elf-specific comm structure is defined since no elf-specific payload is @@ -87,6 +94,8 @@ struct lttng_userspace_probe_location { enum lttng_userspace_probe_location_type type; struct lttng_userspace_probe_location_lookup_method *lookup_method; userspace_probe_location_equal_cb equal; + userspace_probe_location_hash_cb hash; + userspace_probe_location_hash_cb mi; }; struct lttng_userspace_probe_location_function { @@ -97,9 +106,8 @@ struct lttng_userspace_probe_location_function { * binary_fd is a file descriptor to the executable file. It's open * early on to keep the backing inode valid over the course of the * intrumentation and use. It prevents deletion and reuse races. - * Set to -1 if not open. */ - int binary_fd; + struct fd_handle *binary_fd_handle; enum lttng_userspace_probe_location_function_instrumentation_type instrumentation_type; }; @@ -112,51 +120,43 @@ struct lttng_userspace_probe_location_tracepoint { * binary_fd is a file descriptor to the executable file. It's open * early on to keep the backing inode valid over the course of the * intrumentation and use. It prevents deletion and reuse races. - * Set to -1 if not open. */ - int binary_fd; + struct fd_handle *binary_fd_handle; }; -LTTNG_HIDDEN int lttng_userspace_probe_location_serialize( const struct lttng_userspace_probe_location *location, struct lttng_payload *payload); -LTTNG_HIDDEN int lttng_userspace_probe_location_create_from_payload( struct lttng_payload_view *view, struct lttng_userspace_probe_location **probe_location); -LTTNG_HIDDEN -int lttng_userspace_probe_location_function_set_binary_fd( - struct lttng_userspace_probe_location *location, int binary_fd); - -LTTNG_HIDDEN -int lttng_userspace_probe_location_tracepoint_set_binary_fd( - struct lttng_userspace_probe_location *location, int binary_fd); - /* * Returns a version of the location that is serialized to a contiguous region * of memory. Pass NULL to buffer to only get the storage requirement of the * flattened userspace probe location. */ -LTTNG_HIDDEN int lttng_userspace_probe_location_flatten( const struct lttng_userspace_probe_location *location, struct lttng_dynamic_buffer *buffer); -LTTNG_HIDDEN struct lttng_userspace_probe_location *lttng_userspace_probe_location_copy( const struct lttng_userspace_probe_location *location); -LTTNG_HIDDEN bool lttng_userspace_probe_location_lookup_method_is_equal( const struct lttng_userspace_probe_location_lookup_method *a, const struct lttng_userspace_probe_location_lookup_method *b); -LTTNG_HIDDEN bool lttng_userspace_probe_location_is_equal( const struct lttng_userspace_probe_location *a, const struct lttng_userspace_probe_location *b); +unsigned long lttng_userspace_probe_location_hash( + const struct lttng_userspace_probe_location *location); + +enum lttng_error_code lttng_userspace_probe_location_mi_serialize( + const struct lttng_userspace_probe_location *location, + struct mi_writer *writer); + #endif /* LTTNG_USERSPACE_PROBE_INTERNAL_H */