struct lttng_kernel_channel_buffer_private *chan_priv, *tmpchan_priv;
struct lttng_kernel_event_recorder_private *event_recorder_priv, *tmpevent_recorder_priv;
struct lttng_metadata_stream *metadata_stream;
struct lttng_kernel_channel_buffer_private *chan_priv, *tmpchan_priv;
struct lttng_kernel_event_recorder_private *event_recorder_priv, *tmpevent_recorder_priv;
struct lttng_metadata_stream *metadata_stream;
* Supports event creation while tracing session is active.
* Needs to be called with sessions mutex held.
*/
* Supports event creation while tracing session is active.
* Needs to be called with sessions mutex held.
*/
const struct lttng_kernel_event_desc *event_desc)
{
struct lttng_kernel_channel_buffer *chan = event_enabler->chan;
const struct lttng_kernel_event_desc *event_desc)
{
struct lttng_kernel_channel_buffer *chan = event_enabler->chan;
{
struct lttng_kernel_session *session = event_enabler->chan->parent.session;
struct lttng_kernel_probe_desc *probe_desc;
{
struct lttng_kernel_session *session = event_enabler->chan->parent.session;
struct lttng_kernel_probe_desc *probe_desc;
desc = probe_desc->event_desc[i];
if (!lttng_desc_match_enabler(desc,
desc = probe_desc->event_desc[i];
if (!lttng_desc_match_enabler(desc,
{
struct lttng_kernel_channel_buffer *chan = event_enabler->chan;
struct lttng_kernel_session *session = event_enabler->chan->parent.session;
{
struct lttng_kernel_channel_buffer *chan = event_enabler->chan;
struct lttng_kernel_session *session = event_enabler->chan->parent.session;
struct lttng_kernel_event_recorder_private *event_recorder_priv;
if (base_enabler->event_param.instrumentation == LTTNG_KERNEL_ABI_SYSCALL &&
struct lttng_kernel_event_recorder_private *event_recorder_priv;
if (base_enabler->event_param.instrumentation == LTTNG_KERNEL_ABI_SYSCALL &&
if (!lttng_event_enabler_match_event(event_enabler, event_recorder))
continue;
enabler_ref = lttng_enabler_ref(&event_recorder_priv->parent.enablers_ref_head,
if (!lttng_event_enabler_match_event(event_enabler, event_recorder))
continue;
enabler_ref = lttng_enabler_ref(&event_recorder_priv->parent.enablers_ref_head,
list_add(&enabler_ref->node,
&event_recorder_priv->parent.enablers_ref_head);
}
list_add(&enabler_ref->node,
&event_recorder_priv->parent.enablers_ref_head);
}
lttng_enabler_link_bytecode(event_recorder_priv->parent.desc,
lttng_static_ctx,
&event_recorder_priv->parent.filter_bytecode_runtime_head,
lttng_enabler_link_bytecode(event_recorder_priv->parent.desc,
lttng_static_ctx,
&event_recorder_priv->parent.filter_bytecode_runtime_head,
enum lttng_enabler_format_type format_type,
struct lttng_kernel_abi_event *event_param,
struct lttng_kernel_channel_buffer *chan)
{
enum lttng_enabler_format_type format_type,
struct lttng_kernel_abi_event *event_param,
struct lttng_kernel_channel_buffer *chan)
{
{
mutex_lock(&sessions_mutex);
list_add(&event_enabler->node, &session->priv->enablers_head);
{
mutex_lock(&sessions_mutex);
list_add(&event_enabler->node, &session->priv->enablers_head);
lttng_session_lazy_sync_event_enablers(event_enabler->chan->parent.session);
mutex_unlock(&sessions_mutex);
return 0;
}
lttng_session_lazy_sync_event_enablers(event_enabler->chan->parent.session);
mutex_unlock(&sessions_mutex);
return 0;
}
lttng_session_lazy_sync_event_enablers(event_enabler->chan->parent.session);
mutex_unlock(&sessions_mutex);
return 0;
lttng_session_lazy_sync_event_enablers(event_enabler->chan->parent.session);
mutex_unlock(&sessions_mutex);
return 0;
struct lttng_kernel_abi_filter_bytecode __user *bytecode)
{
int ret;
ret = lttng_enabler_attach_filter_bytecode(
struct lttng_kernel_abi_filter_bytecode __user *bytecode)
{
int ret;
ret = lttng_enabler_attach_filter_bytecode(
struct lttng_kernel_event_recorder_private *event_recorder_priv;
list_for_each_entry(event_enabler, &session->priv->enablers_head, node)
struct lttng_kernel_event_recorder_private *event_recorder_priv;
list_for_each_entry(event_enabler, &session->priv->enablers_head, node)