X-Git-Url: http://git.lttng.org/?p=ust.git;a=blobdiff_plain;f=libust%2Ftracepoint.c;h=dbaca6fcee0f65086a2a54217ebc6a680271bed3;hp=6fe9cd7569444a79895d0fe7133e8a27c8e1ed4c;hb=0222e1213f196b66cbc08cd29093aca4a28e9ffb;hpb=fc214788832b93d238449c2b7736a8425b7e5330 diff --git a/libust/tracepoint.c b/libust/tracepoint.c index 6fe9cd7..dbaca6f 100644 --- a/libust/tracepoint.c +++ b/libust/tracepoint.c @@ -35,7 +35,7 @@ static const int tracepoint_debug; /* libraries that contain tracepoints (struct tracepoint_lib) */ -static LIST_HEAD(libs); +static CDS_LIST_HEAD(libs); /* * tracepoints_mutex nests inside module_mutex. Tracepoints mutex protects the @@ -67,7 +67,7 @@ struct tracepoint_entry { struct tp_probes { union { //ust// struct rcu_head rcu; - struct list_head list; + struct cds_list_head list; } u; struct probe probes[0]; }; @@ -257,10 +257,10 @@ static void set_tracepoint(struct tracepoint_entry **entry, WARN_ON(strcmp((*entry)->name, elem->name) != 0); /* - * rcu_assign_pointer has a smp_wmb() which makes sure that the new + * rcu_assign_pointer has a cmm_smp_wmb() which makes sure that the new * probe callbacks array is consistent before setting a pointer to it. * This array is referenced by __DO_TRACE from - * include/linux/tracepoints.h. A matching smp_read_barrier_depends() + * include/linux/tracepoints.h. A matching cmm_smp_read_barrier_depends() * is used. */ rcu_assign_pointer(elem->probes, (*entry)->probes); @@ -314,7 +314,7 @@ static void lib_update_tracepoints(void) struct tracepoint_lib *lib; //ust// pthread_mutex_lock(&module_mutex); - list_for_each_entry(lib, &libs, list) + cds_list_for_each_entry(lib, &libs, list) tracepoint_update_probe_range(lib->tracepoints_start, lib->tracepoints_start + lib->tracepoints_count); //ust// pthread_mutex_unlock(&module_mutex); @@ -420,7 +420,7 @@ int tracepoint_probe_unregister(const char *name, void *probe, void *data) } //ust// EXPORT_SYMBOL_GPL(tracepoint_probe_unregister); -static LIST_HEAD(old_probes); +static CDS_LIST_HEAD(old_probes); static int need_update; static void tracepoint_add_old_probes(void *old) @@ -429,7 +429,7 @@ static void tracepoint_add_old_probes(void *old) if (old) { struct tp_probes *tp_probes = _ust_container_of(old, struct tp_probes, probes[0]); - list_add(&tp_probes->u.list, &old_probes); + cds_list_add(&tp_probes->u.list, &old_probes); } } @@ -486,7 +486,7 @@ int tracepoint_probe_unregister_noupdate(const char *name, void *probe, */ void tracepoint_probe_update_all(void) { - LIST_HEAD(release_probes); + CDS_LIST_HEAD(release_probes); struct tp_probes *pos, *next; pthread_mutex_lock(&tracepoints_mutex); @@ -494,14 +494,14 @@ void tracepoint_probe_update_all(void) pthread_mutex_unlock(&tracepoints_mutex); return; } - if (!list_empty(&old_probes)) - list_replace_init(&old_probes, &release_probes); + if (!cds_list_empty(&old_probes)) + cds_list_replace_init(&old_probes, &release_probes); need_update = 0; pthread_mutex_unlock(&tracepoints_mutex); tracepoint_update_probes(); - list_for_each_entry_safe(pos, next, &release_probes, u.list) { - list_del(&pos->u.list); + cds_list_for_each_entry_safe(pos, next, &release_probes, u.list) { + cds_list_del(&pos->u.list); //ust// call_rcu_sched(&pos->u.rcu, rcu_free_old_probes); synchronize_rcu(); free(pos); @@ -519,7 +519,7 @@ int lib_get_iter_tracepoints(struct tracepoint_iter *iter) int found = 0; //ust// pthread_mutex_lock(&module_mutex); - list_for_each_entry(iter_lib, &libs, list) { + cds_list_for_each_entry(iter_lib, &libs, list) { if (iter_lib < iter->lib) continue; else if (iter_lib > iter->lib) @@ -668,7 +668,7 @@ int tracepoint_register_lib(struct tracepoint *tracepoints_start, int tracepoint /* FIXME: maybe protect this with its own mutex? */ pthread_mutex_lock(&tracepoints_mutex); - list_add(&pl->list, &libs); + cds_list_add(&pl->list, &libs); pthread_mutex_unlock(&tracepoints_mutex); new_tracepoints(tracepoints_start, tracepoints_start + tracepoints_count); @@ -687,10 +687,10 @@ int tracepoint_unregister_lib(struct tracepoint *tracepoints_start) pthread_mutex_lock(&tracepoints_mutex); - list_for_each_entry(lib, &libs, list) { + cds_list_for_each_entry(lib, &libs, list) { if(lib->tracepoints_start == tracepoints_start) { struct tracepoint_lib *lib2free = lib; - list_del(&lib->list); + cds_list_del(&lib->list); free(lib2free); break; }