*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
+#define _LGPL_SOURCE
#include <stdlib.h>
#include <errno.h>
-#define _LGPL_SOURCE
#include <urcu-bp.h>
#include <urcu/rculist.h>
#include <urcu/hlist.h>
* ust_marker hash table, containing the active ust_marker.
* Protected by module_mutex.
*/
-#define ust_marker_HASH_BITS 6
-#define ust_marker_TABLE_SIZE (1 << ust_marker_HASH_BITS)
-static struct cds_hlist_head ust_marker_table[ust_marker_TABLE_SIZE];
+#define UST_MARKER_HASH_BITS 6
+#define UST_MARKER_TABLE_SIZE (1 << UST_MARKER_HASH_BITS)
+static struct cds_hlist_head ust_marker_table[UST_MARKER_TABLE_SIZE];
/*
* Note about RCU :
u32 hash;
hash = jhash(channel, channel_len-1, 0) ^ jhash(name, name_len-1, 0);
- head = &ust_marker_table[hash & ((1 << ust_marker_HASH_BITS)-1)];
+ head = &ust_marker_table[hash & ((1 << UST_MARKER_HASH_BITS)-1)];
cds_hlist_for_each_entry(e, node, head, hlist) {
if (!strcmp(channel, e->channel) && !strcmp(name, e->name))
return e;
hash = jhash(channel, channel_len-1, 0) ^ jhash(name, name_len-1, 0);
if (format)
format_len = strlen(format) + 1;
- head = &ust_marker_table[hash & ((1 << ust_marker_HASH_BITS)-1)];
+ head = &ust_marker_table[hash & ((1 << UST_MARKER_HASH_BITS)-1)];
cds_hlist_for_each_entry(e, node, head, hlist) {
if (!strcmp(channel, e->channel) && !strcmp(name, e->name)) {
DBG("ust_marker %s.%s busy", channel, name);
e->call = ust_marker_probe_cb_noarg;
else
e->call = ust_marker_probe_cb;
- __ust_marker(0, metadata, core_marker_format, NULL,
+ __ust_marker(metadata, core_marker_format, NULL,
"channel %s name %s format %s",
e->channel, e->name, e->format);
} else {
int ret;
hash = jhash(channel, channel_len-1, 0) ^ jhash(name, name_len-1, 0);
- head = &ust_marker_table[hash & ((1 << ust_marker_HASH_BITS)-1)];
+ head = &ust_marker_table[hash & ((1 << UST_MARKER_HASH_BITS)-1)];
cds_hlist_for_each_entry(e, node, head, hlist) {
if (!strcmp(channel, e->channel) && !strcmp(name, e->name)) {
found = 1;
return -ENOMEM;
entry->format_allocated = 1;
- __ust_marker(0, metadata, core_marker_format, NULL,
+ __ust_marker(metadata, core_marker_format, NULL,
"channel %s name %s format %s",
entry->channel, entry->name, entry->format);
return 0;
cmm_smp_wmb();
elem->ptype = entry->ptype;
- if (elem->tp_name && (active ^ _imv_read(elem->state))) {
+ if (elem->tp_name && (active ^ elem->state)) {
WARN_ON(!elem->tp_cb);
/*
* It is ok to directly call the probe registration because type
//ust// (unsigned long)elem->tp_cb));
}
}
- elem->state__imv = active;
+ elem->state = active;
return ret;
}
int ret;
/* leave "call" as is. It is known statically. */
- if (elem->tp_name && _imv_read(elem->state)) {
+ if (elem->tp_name && elem->state) {
WARN_ON(!elem->tp_cb);
/*
* It is ok to directly call the probe registration because type
*/
//ust// module_put(__module_text_address((unsigned long)elem->tp_cb));
}
- elem->state__imv = 0;
+ elem->state = 0;
elem->single.func = __ust_marker_empty_function;
/* Update the function before setting the ptype */
cmm_smp_wmb();
{
lib_update_ust_marker();
tracepoint_probe_update_all();
- /* Update immediate values */
- core_imv_update();
-//ust// module_imv_update(); /* FIXME: need to port for libs? */
ust_marker_update_processes();
}
goto error_unregister_channel;
entry->event_id = ret;
ret = 0;
- __ust_marker(0, metadata, core_marker_id, NULL,
+ __ust_marker(metadata, core_marker_id, NULL,
"channel %s name %s event_id %hu "
"int #1u%zu long #1u%zu pointer #1u%zu "
"size_t #1u%zu alignment #1u%u",
struct cds_hlist_head *head;
struct cds_hlist_node *node;
- for (i = 0; i < ust_marker_TABLE_SIZE; i++) {
+ for (i = 0; i < UST_MARKER_TABLE_SIZE; i++) {
head = &ust_marker_table[i];
cds_hlist_for_each_entry(entry, node, head, hlist) {
if (!entry->ptype) {
u32 hash;
hash = jhash(channel, channel_len-1, 0) ^ jhash(name, name_len-1, 0);
- head = &ust_marker_table[hash & ((1 << ust_marker_HASH_BITS)-1)];
+ head = &ust_marker_table[hash & ((1 << UST_MARKER_HASH_BITS)-1)];
cds_hlist_for_each_entry(e, node, head, hlist) {
if (!strcmp(channel, e->channel) && !strcmp(name, e->name)) {
if (!e->ptype) {
//ust// struct hlist_node *node;
//ust// int ret;
//ust//
-//ust// for (i = 0; i < ust_marker_TABLE_SIZE; i++) {
+//ust// for (i = 0; i < UST_MARKER_TABLE_SIZE; i++) {
//ust// head = &ust_marker_table[i];
//ust// hlist_for_each_entry(entry, node, head, hlist) {
//ust// ret = ltt_channels_get_index_from_name(entry->channel);
//ust// }
//ust// }
//ust// }
-//ust// clear_thread_flag(TIF_ust_marker_PENDING);
+//ust// clear_thread_flag(TIF_UST_MARKER_PENDING);
//ust// pthread_mutex_unlock(¤t->group_leader->user_ust_marker_mutex);
//ust// pthread_mutex_unlock(&ust_marker_mutex);
//ust// }
call_data.trace = trace;
call_data.serializer = NULL;
- for (i = 0; i < ust_marker_TABLE_SIZE; i++) {
+ for (i = 0; i < UST_MARKER_TABLE_SIZE; i++) {
head = &ust_marker_table[i];
cds_hlist_for_each_entry(entry, node, head, hlist) {
- __ust_marker(0, metadata, core_marker_id,
+ __ust_marker(metadata, core_marker_id,
&call_data,
"channel %s name %s event_id %hu "
"int #1u%zu long #1u%zu pointer #1u%zu "
sizeof(void *), sizeof(size_t),
ltt_get_alignment());
if (entry->format)
- __ust_marker(0, metadata,
+ __ust_marker(metadata,
core_marker_format,
&call_data,
"channel %s name %s format %s",