+ May be \c NULL.
+ @endparblock
+
+@pre
+ <strong>If not \c NULL</strong>, \lt_p{event_rule} was created with
+ lttng_event_create().
+
+@sa lttng_event_create() --
+ Creates an empty recording event rule descriptor.
+*/
+LTTNG_EXPORT extern void lttng_event_destroy(struct lttng_event *event_rule);
+
+/*!
+@brief
+ Sets \lt_p{*filter_expr} to the
+ \ref api-rer-conds-filter "event payload and context filter"
+ expression of the recording event rule described by
+ \lt_p{event_rule}.
+
+@ingroup api_rer
+
+@param[in] event_rule
+ Descriptor of the recording event rule of which to get the event
+ payload and context filter expression.
+@param[out] filter_expr
+ @parblock
+ <strong>On success</strong>, this function sets \lt_p{*filter_expr}
+ to:
+
+ <dl>
+ <dt>
+ If \lt_p{event_rule} has an event payload and context filter
+ expression
+ <dd>
+ The event payload and context filter
+ expression of \lt_p{event_rule}.
+
+ \lt_p{*filter_expr} remains valid as long as \lt_p{event_rule}
+ exists and you don't modify it.
+
+ <dt>Otherwise
+ <dd>\c NULL
+ </dl>
+ @endparblock
+
+@returns
+ 0 on success, or a \em negative #lttng_error_code enumerator
+ otherwise.
+
+@lt_pre_not_null{event_rule}
+@lt_pre_not_null{filter_expr}
+
+@sa lttng_event::filter --
+ Indicates whether or not a recording event rule has an event payload
+ and context filter.
+*/
+LTTNG_EXPORT extern int lttng_event_get_filter_expression(struct lttng_event *event_rule,
+ const char **filter_expr);
+
+/*!
+@brief
+ Returns the number of \ref api-rer-conds-event-name "event name"
+ exclusion patterns of the recording
+ event rule described by \lt_p{event_rule}.
+
+@ingroup api_rer
+
+@param[in] event_rule
+ Descriptor of the recording event rule of which to get the number
+ of event name exclusion patterns.
+
+@returns
+ Number of event name exclusion patterns of \lt_p{event_rule}, or a
+ \em negative #lttng_error_code enumerator otherwise.
+
+@lt_pre_not_null{event_rule}
+
+@sa lttng_event_get_exclusion_name() --
+ Returns an event name exclusion pattern by index of a recording
+ event rule.
+@sa lttng_event::exclusion --
+ Indicates whether or not a recording event rule has event name
+ exclusion patterns.
+*/
+LTTNG_EXPORT extern int lttng_event_get_exclusion_name_count(struct lttng_event *event_rule);
+
+/*!
+@brief
+ Sets \lt_p{*event_name_exclusion} to the
+ \ref api-rer-conds-event-name "event name" exclusion
+ pattern at index \lt_p{index} of the recording event rule described
+ by \lt_p{event_rule}.
+
+@ingroup api_rer
+
+@param[in] event_rule
+ Descriptor of the recording event rule of which to get the event
+ name exclusion pattern at index \lt_p{index}.
+@param[in] index
+ Index of the event name exclusion pattern to get from
+ \lt_p{event_rule}.
+@param[out] event_name_exclusion
+ @parblock
+ <strong>On success</strong>, this function sets
+ \lt_p{*event_name_exclusion} to the event name exclusion pattern at
+ index \lt_p{index} of
+ \lt_p{event_rule}.
+
+ \lt_p{*event_name_exclusion} remains valis as long as
+ \lt_p{event_rule} exists and you don't modify it.
+ @endparblock
+
+@returns
+ 0 on success, or a \em negative #lttng_error_code enumerator
+ otherwise.
+
+@lt_pre_not_null{event_rule}
+@pre
+ \lt_p{index} is less than the number of event name exclusion
+ patterns (as returned by lttng_event_get_exclusion_name_count())
+ of \lt_p{event_rule}.
+@lt_pre_not_null{event_name_exclusion}
+
+@sa lttng_event_get_exclusion_name_count() --
+ Returns the number of event name exclusion patterns of a recording
+ event rule.
+*/
+LTTNG_EXPORT extern int lttng_event_get_exclusion_name(struct lttng_event *event_rule,
+ size_t index,
+ const char **event_name_exclusion);
+
+/*!
+@brief
+ Returns the Linux uprobe location of the recording event rule
+ described by \lt_p{event_rule}.
+
+@ingroup api_rer
+
+@param[in] event_rule
+ Descriptor of the recording event rule of which to get the
+ Linux uprobe location.
+
+@returns
+ @parblock
+ Linux uprobe location of the recording event rule described by
+ \lt_p{event_rule}, or \c NULL if none.
+
+ The returned location remains valid as long as \lt_p{event_rule}
+ exists and you don't modify it.
+ @endparblock
+
+@lt_pre_not_null{event_rule}
+@pre
+ \lt_p{event_rule->type} (see lttng_event::type) is
+ #LTTNG_EVENT_USERSPACE_PROBE.
+
+@sa lttng_event_set_userspace_probe_location() --
+ Sets the Linux uprobe location of a recording event rule.
+@sa \ref api-rer-conds-inst-pt-type "Instrumentation point type condition".
+*/
+LTTNG_EXPORT extern const struct lttng_userspace_probe_location *
+lttng_event_get_userspace_probe_location(const struct lttng_event *event_rule);
+
+/*!
+@brief
+ Sets the Linux uprobe location of the recording event rule described
+ by \lt_p{event_rule} to \lt_p{location}.
+
+@ingroup api_rer
+
+@param[in] event_rule
+ Descriptor of the recording event rule of which to set the
+ Linux uprobe location to \lt_p{location}.
+@param[in] location
+ New Linux uprobe location of \lt_p{event_rule}.
+
+@returns
+ 0 on success, or a \em negative #lttng_error_code enumerator
+ otherwise.
+
+@lt_pre_not_null{event_rule}
+@pre
+ \lt_p{event_rule} was created with lttng_event_create().
+@pre
+ \lt_p{event_rule->type} (see lttng_event::type) is
+ #LTTNG_EVENT_USERSPACE_PROBE.
+@lt_pre_not_null{location}
+
+@post
+ <strong>On success</strong>, \lt_p{*location} is invalid
+ (its ownership is transfered to \lt_p{event_rule}).
+
+@sa lttng_event_get_userspace_probe_location() --
+ Returns the Linux uprobe location of a recording event rule.
+@sa \ref api-rer-conds-inst-pt-type "Instrumentation point type condition".
+*/
+LTTNG_EXPORT extern int
+lttng_event_set_userspace_probe_location(struct lttng_event *event_rule,
+ struct lttng_userspace_probe_location *location);
+
+/*!
+@brief
+ Sets \lt_p{*descrs} to the
+ \ref api-rer-inst-pt-descr "descriptors" of the
+ available LTTng tracepoints or Java/Python loggers for the
+ \lt_obj_domain of \lt_p{handle}.
+
+@ingroup api_inst_pt
+
+@param[in] handle
+ @parblock
+ Recording session handle which contains the summary of the
+ \lt_obj_domain which offers the LTTng tracepoints or Java/Python
+ loggers of which to get the descriptors.
+
+ This function ignores \lt_p{handle->session_name}.
+ @endparblock
+@param[out] descrs
+ @parblock
+ <strong>On success</strong>, this function sets \lt_p{*descrs}
+ to the descriptors of the available tracepoints or Java/Python
+ loggers of \lt_p{handle}.
+
+ Free \lt_p{*descrs} with <code>free()</code>.
+ @endparblock
+
+@returns
+ The number of items in \lt_p{*descrs} on success, or a \em
+ negative #lttng_error_code enumerator otherwise.
+
+@lt_pre_conn
+@lt_pre_not_null{handle}
+@pre
+ \lt_p{handle->domain} is valid as per the documentation of
+ #lttng_domain.
+@lt_pre_not_null{descrs}
+
+@sa lttng_list_tracepoint_fields() --
+ Returns all the field descriptions of all the available LTTng
+ tracepoints.
+@sa lttng_list_syscalls() --
+ Returns the descriptors of all the available Linux system calls.
+*/
+LTTNG_EXPORT extern int lttng_list_tracepoints(struct lttng_handle *handle,
+ struct lttng_event **descrs);
+
+/*!
+@brief
+ Sets \lt_p{*fields} to the field descriptions of all the available
+ LTTng tracepoints for the \lt_obj_domain of \lt_p{handle}.
+
+@ingroup api_inst_pt
+
+@param[in] handle
+ @parblock
+ Recording session handle which contains the summary of the
+ \lt_obj_domain which offers the LTTng tracepoints of which to get
+ the field descriptions.
+
+ This function ignores \lt_p{handle->session_name}.
+ @endparblock
+@param[out] fields
+ @parblock
+ <strong>On success</strong>, this function sets \lt_p{*fields}
+ to the descriptions of the available LTTng tracepoint fields of
+ \lt_p{handle}.
+
+ Each #lttng_event_field instance in \lt_p{*fields} contains a
+ pointer to the \ref api-rer-inst-pt-descr "descriptor" of
+ a tracepoint which contains the described field
+ (lttng_event_field::event member).
+
+ Free \lt_p{*fields} with <code>free()</code>.
+ @endparblock
+
+@returns
+ The number of items in \lt_p{*fields} on success, or a \em
+ negative #lttng_error_code enumerator otherwise.
+
+@lt_pre_conn
+@lt_pre_not_null{handle}
+@pre
+ \lt_p{handle->domain} is valid as per the documentation of
+ #lttng_domain.
+@lt_pre_not_null{fields}
+
+@sa lttng_list_tracepoints() --
+ Returns the descriptors of all the available LTTng tracepoints
+ or Java/Python loggers.
+@sa lttng_list_syscalls() --
+ Returns the descriptors of all the available Linux system calls.
+*/
+LTTNG_EXPORT extern int lttng_list_tracepoint_fields(struct lttng_handle *handle,
+ struct lttng_event_field **fields);
+
+/*!
+@brief
+ Sets \lt_p{*descrs} to the
+ \ref api-rer-inst-pt-descr "descriptors" of the
+ available Linux system calls for the
+ #LTTNG_DOMAIN_KERNEL tracing domain.
+
+@ingroup api_inst_pt
+
+@param[out] descrs
+ @parblock
+ <strong>On success</strong>, this function sets \lt_p{*descrs}
+ to the available system calls.
+
+ The #lttng_event instances of \lt_p{*descrs} have an
+ lttng_event::flags member which indicates whether the described
+ system call is 32-bit, 64-bit, or both.
+
+ Free \lt_p{*descrs} with <code>free()</code>.
+ @endparblock
+
+@returns
+ The number of items in \lt_p{*descrs} on success, or a \em
+ negative #lttng_error_code enumerator otherwise.
+
+@lt_pre_conn
+@lt_pre_not_null{descrs}
+
+@sa lttng_list_tracepoint_fields() --
+ Returns all the field descriptions of all the available LTTng
+ tracepoints.
+@sa lttng_list_syscalls() --
+ Returns the descriptors of all the available Linux system calls.
+*/
+LTTNG_EXPORT extern int lttng_list_syscalls(struct lttng_event **descrs);
+
+/*!
+@brief
+ Makes the future \ref api_rer "event records" of the
+ \lt_obj_channel named \lt_p{channel_name} (or of a default channel
+ or all the channels if \c NULL) within the
+ \lt_obj_session and \lt_obj_domain of \lt_p{handle}
+ have a context field described by \lt_p{context_field_descriptor}.
+
+@ingroup api_channel
+
+Context values (for example, the ID of the current process, the
+instruction pointer, or the hostname) are always available during
+tracing. This function makes LTTng record a specific context value as a
+field for each future event record of the selected channel(s).
+
+@param[in] handle
+ Recording session handle which contains the name of the recording
+ session and the summary of the \lt_obj_domain which own the
+ channel(s) to select.
+@param[in] context_field_descriptor
+ Descriptor of the context field to add to each event record of
+ the selected channel(s).
+@param[in] event_name
+ Unused: must be \c NULL.
+@param[in] channel_name
+ @parblock
+ Name of the channel to select.
+
+ If \c NULL, then:
+
+ <dl>
+ <dt>
+ If the recording session and tracing domain of
+ \lt_p{handle} have no channels
+ <dd>
+ LTTng creates a new, default channel named \c channel0 within
+ \lt_p{handle} which becomes the selected channel.
+
+ <dt>Otherwise
+ <dd>
+ LTTng selects all the channels of \lt_p{handle}.
+ </dl>
+ @endparblock
+
+@returns
+ 0 on success, or a \em negative #lttng_error_code enumerator
+ otherwise.
+
+@lt_pre_conn
+@lt_pre_not_null{handle}
+@lt_pre_valid_c_str{handle->session_name}
+@lt_pre_sess_exists{handle->session_name}
+@lt_pre_sess_never_active{handle->session_name}
+@pre
+ \lt_p{handle->domain} is valid (you passed a
+ \lt_obj_domain summary to
+ lttng_create_handle() when you created \lt_p{handle}).
+@pre
+ \lt_p{context_field_descriptor} is valid according to the
+ documentation of #lttng_event_context.
+@pre
+ \lt_p{event_name} is \c NULL.
+@pre
+ <strong>If not \c NULL</strong>, \lt_p{channel_name} names an
+ existing channel within the recording session and tracing domain of
+ \lt_p{handle}.
+*/
+LTTNG_EXPORT extern int lttng_add_context(struct lttng_handle *handle,
+ struct lttng_event_context *context_field_descriptor,
+ const char *event_name,
+ const char *channel_name);
+
+/*!
+@brief
+ Alias of lttng_enable_event_with_exclusions() which passes the
+ \ref api-rer-conds-filter "event payload and context filter"
+ expression of \lt_p{event_rule}
+ as the \lt_p{filter_expr} parameter and the
+ \ref api-rer-conds-event-name "event name" exclusion patterns
+ of \lt_p{event_rule} as the
+ \lt_p{event_name_exclusion_count} and
+ \lt_p{event_name_exclusions} parameters.
+
+@ingroup api_rer
+
+This function is equivalent to:
+
+@code
+int ret;
+int i;
+char **event_name_exclusions = NULL;
+const char *filter_expr = NULL;
+const int event_name_exclusion_count = lttng_event_get_exclusion_name_count(event_rule);
+
+assert(event_name_exclusion_count >= 0);
+
+if (event_name_exclusion_count > 0) {
+ event_name_exclusions = calloc(event_name_exclusion_count,
+ sizeof(*event_name_exclusions));
+ assert(event_name_exclusions);
+
+ for (i = 0; i < event_name_exclusion_count; i++) {
+ const char *event_name_exclusion;
+
+ ret = lttng_event_get_exclusion_name(event_rule, (size_t) i,
+ &event_name_exclusion);
+ assert(ret == 0);
+ event_name_exclusions[i] = (char *) event_name_exclusion;
+ }
+}
+
+ret = lttng_event_get_filter_expression(event_rule, &filter_expr);
+assert(ret == 0);
+ret = lttng_enable_event_with_exclusions(handle, event_rule, channel_name,
+ filter_expr,
+ event_name_exclusion_count,
+ event_name_exclusions);
+free(event_name_exclusions);
+return ret;
+@endcode
+*/
+LTTNG_EXPORT extern int lttng_enable_event(struct lttng_handle *handle,
+ struct lttng_event *event_rule,
+ const char *channel_name);
+
+/*!
+@brief
+ Alias of lttng_enable_event_with_exclusions() which passes the
+ the \ref api-rer-conds-event-name "event name" exclusion patterns
+ of \lt_p{event_rule} as the
+ \lt_p{event_name_exclusion_count} and
+ \lt_p{event_name_exclusions} parameters.
+
+@ingroup api_rer
+
+This function is equivalent to:
+
+@code
+int ret;
+int i;
+char **event_name_exclusions = NULL;
+const char *filter_expr = NULL;
+const int event_name_exclusion_count = lttng_event_get_exclusion_name_count(event_rule);
+
+assert(event_name_exclusion_count >= 0);
+
+if (event_name_exclusion_count > 0) {
+ event_name_exclusions = calloc(event_name_exclusion_count,
+ sizeof(*event_name_exclusions));
+ assert(event_name_exclusions);
+
+ for (i = 0; i < event_name_exclusion_count; i++) {
+ const char *event_name_exclusion;
+
+ ret = lttng_event_get_exclusion_name(event_rule, (size_t) i,
+ &event_name_exclusion);
+ assert(ret == 0);
+ event_name_exclusions[i] = (char *) event_name_exclusion;
+ }
+}
+
+ret = lttng_enable_event_with_exclusions(handle, event_rule, channel_name,
+ filter_expr,
+ event_name_exclusion_count,
+ event_name_exclusions);
+free(event_name_exclusions);
+return ret;
+@endcode
+*/
+LTTNG_EXPORT extern int lttng_enable_event_with_filter(struct lttng_handle *handle,
+ struct lttng_event *event_rule,
+ const char *channel_name,
+ const char *filter_expr);
+
+/*!
+@brief
+ Creates or enables a recording event rule
+ described by \lt_p{event_rule}, having the
+ \ref api-rer-conds-filter "event payload and context filter"
+ expression \lt_p{filter_expr} and the
+ \ref api-rer-conds-event-name "event name" exclusion patterns
+ \lt_p{event_name_exclusions}, within
+ the \lt_obj_channel named \lt_p{channel_name}
+ (or within a default channel if \c NULL) within the recording
+ session handle \lt_p{handle}.
+
+@ingroup api_rer
+
+This function, depending on the
+\ref api-rer-conds-inst-pt-type "instrumentation point type",
+\ref api-rer-conds-event-name "event name",
+and \ref api-rer-conds-ll "log level" conditions of \lt_p{event_rule},
+as well as on \lt_p{filter_expr} and \lt_p{event_name_exclusions}:
+
+<dl>
+ <dt>
+ The conditions and parameters describe an existing recording event
+ rule within the selected channel
+ <dd>
+ Enables the existing recording event rule.
+
+ <dt>Otherwise
+ <dd>
+ Creates and enables a new recording event rule within the
+ selected channel.
+</dl>
+
+If \lt_p{event_rule->type} is #LTTNG_EVENT_ALL and
+\lt_p{handle->domain.type} is #LTTNG_DOMAIN_KERNEL, then this
+function actually creates or enables two recording event rules: one with
+the #LTTNG_EVENT_TRACEPOINT type, and one with the #LTTNG_EVENT_SYSCALL
+type.
+
+@param[in] handle
+ Recording session handle which contains the name of the recording
+ session and the summary of the \lt_obj_domain which own the selected
+ channel.
+@param[in] event_rule
+ @parblock
+ Descriptor of the recording event rule to create or enable.
+
+ This function:
+
+ - Ignores any event payload and context filter
+ expression within \lt_p{event_rule}: it always uses
+ \lt_p{filter_expr}.
+
+ - Ignores any event name exclusion patterns within
+ \lt_p{event_rule}: it always uses \lt_p{event_name_exclusions}.
+ @endparblock
+@param[in] channel_name
+ @parblock
+ Name of the channel, within \lt_p{handle}, to select (that is,
+ containing the recording event rule to create or enable).
+
+ If \c NULL, then this function uses \c channel0. If no channel named
+ \c channel0 within \lt_p{handle} exists, then LTTng creates a new,
+ default channel named as such and selects it before it creates the
+ recording event rule described by \lt_p{event_rule}.
+ @endparblock
+@param[in] filter_expr
+ @parblock
+ Event payload and context filter expression of the recording
+ event rule to create or enable.
+
+ <strong>If \c NULL</strong>, the created or enabled recording event
+ rule has no event payload and context filter expression.
+
+ This parameter, even when \c NULL, overrides any existing
+ event payload and context filter expression within
+ \lt_p{event_rule}.
+ @endparblock
+@param[in] event_name_exclusion_count
+ Number of items in \lt_p{event_name_exclusions}.
+@param[in] event_name_exclusions
+ @parblock
+ Event name exclusion patterns of the recording event rule to create
+ or enable.
+
+ This function copies the strings of this array.
+
+ \lt_p{event_name_exclusion_count} indicates the size of this
+ array, which may be \c NULL if \lt_p{event_name_exclusion_count}
+ is 0.
+
+ This parameter, even when \c NULL or empty, overrides any existing
+ event name exclusion patterns within \lt_p{event_rule}.
+ @endparblock
+
+@returns
+ 0 on success, or a \em negative #lttng_error_code enumerator
+ otherwise.
+
+@lt_pre_conn
+@lt_pre_not_null{handle}
+@lt_pre_valid_c_str{handle->session_name}
+@lt_pre_sess_exists{handle->session_name}
+@pre
+ \lt_p{handle->domain} is valid as per the documentation of
+ #lttng_domain.
+@lt_pre_not_null{event_rule}
+@pre
+ \lt_p{event_rule} is \ref api-rer-valid-event-struct "valid".
+@pre
+ <strong>If \lt_p{handle->domain.type} is \em not
+ #LTTNG_DOMAIN_KERNEL</strong>, then \lt_p{event_rule->type} is
+ #LTTNG_EVENT_TRACEPOINT.
+@pre
+ <strong>If \lt_p{handle->domain.type} is \em not
+ #LTTNG_DOMAIN_UST</strong>, then \lt_p{event_name_exclusion_count}
+ is 0.
+@pre
+ <strong>If this function must enable an existing recording event
+ rule</strong>, then the recording event rule to enable is disabled.
+@pre
+ <strong>If not \c NULL</strong>, \lt_p{channel_name} names an
+ existing channel within the recording session and tracing domain of
+ \lt_p{handle}.
+@pre
+ <strong>If \lt_p{channel_name} is \c NULL</strong>, then
+ \lt_p{handle} contains either no channels or a default channel named
+ \c channel0.
+@pre
+ <strong>If not \c NULL</strong>, \lt_p{filter_expr} is a valid
+ event payload and context filter expression.
+@pre
+ \lt_p{event_name_exclusion_count} ≥ 0.
+
+@sa lttng_enable_event() --
+ Alias which calls this function with the event payload and context
+ filter expression and event name exclusion patterns of the
+ recording event rule descriptor.
+@sa lttng_enable_event_with_filter() --
+ Alias which calls this function with the event name exclusion
+ patterns of the recording event rule descriptor.
+@sa lttng_disable_event_ext() --
+ Disables a recording event rule.
+*/
+LTTNG_EXPORT extern int lttng_enable_event_with_exclusions(struct lttng_handle *handle,
+ struct lttng_event *event_rule,
+ const char *channel_name,
+ const char *filter_expr,
+ int event_name_exclusion_count,
+ char **event_name_exclusions);
+
+/*!
+@brief
+ Alias of lttng_disable_event_ext() which creates a temporary
+ recording event rule descriptor, settings its
+ lttng_event::name member to \lt_p{event_name} if not \c NULL and
+ its lttng_event::type member to #LTTNG_EVENT_ALL.
+
+@ingroup api_rer
+
+This function is equivalent to:
+
+@code
+struct lttng_event event_rule = { 0 };
+
+event_rule.type = LTTNG_EVENT_ALL;
+
+if (event_name) {
+ strcpy(event_rule.name, event_name);
+}
+
+event_rule.loglevel = -1;
+return lttng_disable_event_ext(handle, &event_rule, channel_name, NULL);
+@endcode
+*/
+LTTNG_EXPORT extern int
+lttng_disable_event(struct lttng_handle *handle, const char *event_name, const char *channel_name);
+
+/*!
+@brief
+ Disables recording event rules by
+ \ref api-rer-conds-inst-pt-type "instrumentation point type" and
+ \ref api-rer-conds-event-name "event name" condition within the
+ \lt_obj_channel named \lt_p{channel_name}
+ (or within a default channel if \c NULL) within the recording
+ session handle \lt_p{handle}.
+
+@ingroup api_rer
+
+Depending on \lt_p{event_rule->name}, this function:
+
+<dl>
+ <dt>Not empty
+ <dd>
+ Depending on \lt_p{event_rule->type}:
+
+ <dl>
+ <dt>#LTTNG_EVENT_ALL
+ <dd>
+ Disables \em all the recording event rules of which the event
+ name pattern is exactly \lt_p{event_rule->name} within the
+ selected channel.
+
+ <dt>Otherwise
+ <dd>
+ Disables all the recording event rules of which the
+ instrumentation point type is
+ \lt_p{event_rule->type} and the event
+ name pattern is exactly \lt_p{event_rule->name} within the
+ selected channel.
+
+ Only supported when \lt_p{handle->domain.type} is
+ #LTTNG_DOMAIN_KERNEL.
+ </dl>
+
+ <dt>Empty
+ <dd>
+ Depending on \lt_p{event_rule->type}:
+
+ <dl>
+ <dt>#LTTNG_EVENT_ALL
+ <dd>
+ Disables \em all the recording event rules within the selected
+ channel.
+
+ <dt>Otherwise
+ <dd>
+ Disables all the recording event rules of which the
+ instrumentation point type is
+ \lt_p{event_rule->type} within the
+ selected channel.
+
+ Only supported when \lt_p{handle->domain.type} is
+ #LTTNG_DOMAIN_KERNEL.
+ </dl>
+</dl>
+
+This function ignores all the other \ref api-rer-conds "condition"
+properties of \lt_p{event_rule}.
+
+To use this function, create a temporary, zeroed
+\link #lttng_event recording event rule descriptor\endlink,
+setting only:
+
+- <strong>Optional, and only if \lt_p{handle->domain.type}
+ is #LTTNG_DOMAIN_KERNEL</strong>: its lttng_event::type member.
+
+- <strong>Optional</strong>: its lttng_event::name member
+
+- Its lttng_event::loglevel member to -1.
+
+For example:
+
+@code
+struct lttng_event event_rule = { 0 };
+
+event_rule.type = LTTNG_EVENT_SYSCALL;
+strcpy(event_rule.name, "open*");
+event_rule.loglevel = -1;
+@endcode
+
+@param[in] handle
+ Recording session handle which contains the name of the recording
+ session and the summary of the \lt_obj_domain which own the selected
+ channel.
+@param[in] event_rule
+ @parblock
+ Recording event rule descriptor which contains the
+ instrumentation point type and event name conditions to consider
+ to disable recording event rules within the selected channel.
+ @endparblock
+@param[in] channel_name
+ @parblock
+ Name of the channel, within \lt_p{handle}, to select (that is,
+ containing the recording event rules to disable).
+
+ If \c NULL, then this function uses \c channel0.
+ @endparblock
+@param[in] filter_expr
+ Unused: must be \c NULL.
+
+@returns
+ 0 on success, or a \em negative #lttng_error_code enumerator
+ otherwise.
+
+@lt_pre_conn
+@lt_pre_not_null{handle}
+@lt_pre_valid_c_str{handle->session_name}
+@lt_pre_sess_exists{handle->session_name}
+@pre
+ \lt_p{handle->domain} is valid as per the documentation of
+ #lttng_domain.
+@lt_pre_not_null{event_rule}
+@pre
+ <strong>If \lt_p{handle->domain.type} is \em not
+ #LTTNG_DOMAIN_KERNEL</strong>, then \lt_p{event_rule->type}
+ is #LTTNG_EVENT_ALL.
+@pre
+ <strong>If not #LTTNG_EVENT_ALL</strong>, then
+ \lt_p{event_rule->type} is the instrumentation point type of at
+ least one Linux kernel recording event rule within the selected
+ channel.
+@pre
+ <strong>If not empty</strong>, then \lt_p{event_rule->name} is the
+ exact event name pattern of at least one recording event rule within
+ the selected channel.
+@pre
+ The recording event rules to disable are enabled.
+@pre
+ <strong>If not \c NULL</strong>, then \lt_p{channel_name} names an
+ existing channel within the recording session and tracing domain of
+ \lt_p{handle}.
+@pre
+ <strong>If \lt_p{channel_name} is \c NULL</strong>, then the
+ channel named \c channel0 exists within the recording session and
+ tracing domain of \lt_p{handle}.
+
+@sa lttng_disable_event() --
+ Alias which calls this function with \lt_p{event_rule->type}
+ set to #LTTNG_EVENT_ALL.
+@sa lttng_enable_event_with_exclusions() --
+ Creates or enables a recording event rule.
+*/
+LTTNG_EXPORT extern int lttng_disable_event_ext(struct lttng_handle *handle,
+ struct lttng_event *event_rule,
+ const char *channel_name,
+ const char *filter_expr);