[ltt-dev] [PATCH take2 02/13] get name and fmt from permanent eID

Mathieu Desnoyers compudj at krystal.dyndns.org
Mon Feb 23 11:37:07 EST 2009


* Lai Jiangshan (laijs at cn.fujitsu.com) wrote:
> struct marker_entry is permanent, we introduce two APIs for
> getting name and fmt from eIDs.

Please change the description of this patch and of patch 01 for
something which includes :

struct marker_entry is permanent for the duration of active tracing
sessions. That means : as long as a struct marker_entry channel and
event IDs can be seen by an active tracing session, it stays valid until
all tracing sessions end.

Otherwise just saying that "struct marker_entry is permanent" is
misleading.

Mathieu

> 
> Signed-off-by: Lai Jiangshan <laijs at cn.fujitsu.com>
> ---
> diff --git a/include/linux/marker.h b/include/linux/marker.h
> index 32387e8..2fe8977 100644
> --- a/include/linux/marker.h
> +++ b/include/linux/marker.h
> @@ -238,6 +238,9 @@ extern int marker_probe_unregister_private_data(marker_probe_func *probe,
>  extern void *marker_get_private_data(const char *channel, const char *name,
>  	marker_probe_func *probe, int num);
>  
> +const char *marker_get_name_form_id(u16 channel_id, u16 event_id);
> +const char *marker_get_fmt_form_id(u16 channel_id, u16 event_id);
> +
>  /*
>   * marker_synchronize_unregister must be called between the last marker probe
>   * unregistration and the end of module exit to make sure there is no caller
> diff --git a/kernel/marker.c b/kernel/marker.c
> index b11a82a..6a918e2 100644
> --- a/kernel/marker.c
> +++ b/kernel/marker.c
> @@ -997,6 +1010,40 @@ void *marker_get_private_data(const char *channel, const char *name,
>  }
>  EXPORT_SYMBOL_GPL(marker_get_private_data);
>  
> +static struct marker_entry *get_entry_from_id(u16 channel_id, u16 event_id)
> +{
> +	struct hlist_head *head;
> +	struct hlist_node *node;
> +	struct marker_entry *e, *found = NULL;
> +	u32 hash = hash_32((channel_id << 16) | event_id, MARKER_HASH_BITS);
> +
> +	mutex_lock(&markers_mutex);
> +	head = id_table + hash;
> +	hlist_for_each_entry(e, node, head, id_list) {
> +		if (e->channel_id == channel_id && e->event_id == event_id) {
> +			found = e;
> +			break;
> +		}
> +	}
> +	mutex_unlock(&markers_mutex);
> +	return found;
> +}
> +
> +/* must call when ids/marker_entry are kept alive */
> +const char *marker_get_name_form_id(u16 channel_id, u16 event_id)
> +{
> +	struct marker_entry *e = get_entry_from_id(channel_id, event_id);
> +	return e ? e->name : NULL;
> +}
> +EXPORT_SYMBOL_GPL(marker_get_name_form_id);
> +
> +const char *marker_get_fmt_form_id(u16 channel_id, u16 event_id)
> +{
> +	struct marker_entry *e = get_entry_from_id(channel_id, event_id);
> +	return e ? e->format : NULL;
> +}
> +EXPORT_SYMBOL_GPL(marker_get_fmt_form_id);
> +
>  /**
>   * markers_compact_event_ids: Compact markers event IDs and reassign channels
>   *
> 
> 
> 
> _______________________________________________
> ltt-dev mailing list
> ltt-dev at lists.casi.polymtl.ca
> http://lists.casi.polymtl.ca/cgi-bin/mailman/listinfo/ltt-dev
> 

-- 
Mathieu Desnoyers
OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F  BA06 3F25 A8FE 3BAE 9A68




More information about the lttng-dev mailing list