X-Git-Url: http://git.liburcu.org/?a=blobdiff_plain;f=libust%2Ftracepoint.c;h=1c4669b535890a444bacbd0805a509fb05c5f38f;hb=b979b3468dc6a9329288f53ce568815617780d9c;hp=335ba4f7f53ad9ae41e971654b5303d864ac8a89;hpb=f08ebbe29cc9f6fa1c108907be5d9d92d297067e;p=ust.git diff --git a/libust/tracepoint.c b/libust/tracepoint.c index 335ba4f..1c4669b 100644 --- a/libust/tracepoint.c +++ b/libust/tracepoint.c @@ -23,7 +23,7 @@ #include #include #include -#include "usterr.h" +#include "usterr_signal_safe.h" #define _LGPL_SOURCE #include @@ -60,7 +60,7 @@ static struct cds_hlist_head tracepoint_table[TRACEPOINT_TABLE_SIZE]; */ struct tracepoint_entry { struct cds_hlist_node hlist; - struct probe *probes; + struct tracepoint_probe *probes; int refcount; /* Number of times armed. 0 if disarmed. */ char name[0]; }; @@ -70,12 +70,12 @@ struct tp_probes { //ust// struct rcu_head rcu; struct cds_list_head list; } u; - struct probe probes[0]; + struct tracepoint_probe probes[0]; }; static inline void *allocate_probes(int count) { - struct tp_probes *p = zmalloc(count * sizeof(struct probe) + struct tp_probes *p = zmalloc(count * sizeof(struct tracepoint_probe) + sizeof(struct tp_probes)); return p == NULL ? NULL : p->probes; } @@ -112,7 +112,7 @@ tracepoint_entry_add_probe(struct tracepoint_entry *entry, void *probe, void *data) { int nr_probes = 0; - struct probe *old, *new; + struct tracepoint_probe *old, *new; WARN_ON(!probe); @@ -130,7 +130,7 @@ tracepoint_entry_add_probe(struct tracepoint_entry *entry, if (new == NULL) return ERR_PTR(-ENOMEM); if (old) - memcpy(new, old, nr_probes * sizeof(struct probe)); + memcpy(new, old, nr_probes * sizeof(struct tracepoint_probe)); new[nr_probes].func = probe; new[nr_probes].data = data; new[nr_probes + 1].func = NULL; @@ -145,7 +145,7 @@ tracepoint_entry_remove_probe(struct tracepoint_entry *entry, void *probe, void *data) { int nr_probes = 0, nr_del = 0, i; - struct probe *old, *new; + struct tracepoint_probe *old, *new; old = entry->probes; @@ -265,7 +265,7 @@ static void set_tracepoint(struct tracepoint_entry **entry, * is used. */ rcu_assign_pointer(elem->probes, (*entry)->probes); - elem->state__imv = active; + elem->state = active; } /* @@ -276,7 +276,7 @@ static void set_tracepoint(struct tracepoint_entry **entry, */ static void disable_tracepoint(struct tracepoint *elem) { - elem->state__imv = 0; + elem->state = 0; rcu_assign_pointer(elem->probes, NULL); } @@ -333,22 +333,19 @@ static void tracepoint_update_probes(void) //ust// __stop___tracepoints); /* tracepoints in modules. */ lib_update_tracepoints(); - /* Update immediate values */ - core_imv_update(); -//ust// module_imv_update(); } -static struct probe * +static struct tracepoint_probe * tracepoint_add_probe(const char *name, void *probe, void *data) { struct tracepoint_entry *entry; - struct probe *old; + struct tracepoint_probe *old; entry = get_tracepoint(name); if (!entry) { entry = add_tracepoint(name); if (IS_ERR(entry)) - return (struct probe *)entry; + return (struct tracepoint_probe *)entry; } old = tracepoint_entry_add_probe(entry, probe, data); if (IS_ERR(old) && !entry->refcount) @@ -697,7 +694,7 @@ lib_added: lib_update_tracepoints(); /* tracepoints_count - 1: skip dummy */ - DBG("just registered a tracepoints section from %p and having %d tracepoints", tracepoints_start, tracepoints_count - 1); + DBG("just registered a tracepoints section from %p and having %d tracepoints (minus dummy tracepoints)", tracepoints_start, tracepoints_count); return 0; }