X-Git-Url: http://git.liburcu.org/?a=blobdiff_plain;f=lttng-tracker-pid.c;h=55bf63c994de212ea34a372be80a033d9bcc2be7;hb=refs%2Fheads%2Fstable-2.7;hp=f8f0a51dcc1e738727286b69e28f343ac43476e1;hpb=e0130fabb0cbec05e19fcc7fe955fe9d8d8bc91e;p=lttng-modules.git diff --git a/lttng-tracker-pid.c b/lttng-tracker-pid.c index f8f0a51d..55bf63c9 100644 --- a/lttng-tracker-pid.c +++ b/lttng-tracker-pid.c @@ -25,11 +25,12 @@ #include #include #include -#include #include #include #include "wrapper/tracepoint.h" +#include "wrapper/rcu.h" +#include "wrapper/list.h" #include "lttng-events.h" /* @@ -42,10 +43,10 @@ * sessions_mutex across calls to create, destroy, add, and del * functions of this API. */ -struct lttng_pid_hash_node { - struct hlist_node hlist; - int pid; -}; +int lttng_pid_tracker_get_node_pid(const struct lttng_pid_hash_node *node) +{ + return node->pid; +} /* * Lookup performed from RCU read-side critical section (RCU sched), @@ -59,7 +60,7 @@ bool lttng_pid_tracker_lookup(struct lttng_pid_tracker *lpf, int pid) uint32_t hash = hash_32(pid, 32); head = &lpf->pid_hash[hash & (LTTNG_PID_TABLE_SIZE - 1)]; - hlist_for_each_entry_rcu_notrace(e, head, hlist) { + lttng_hlist_for_each_entry_rcu(e, head, hlist) { if (pid == e->pid) return 1; /* Found */ } @@ -77,7 +78,7 @@ int lttng_pid_tracker_add(struct lttng_pid_tracker *lpf, int pid) uint32_t hash = hash_32(pid, 32); head = &lpf->pid_hash[hash & (LTTNG_PID_TABLE_SIZE - 1)]; - hlist_for_each_entry(e, head, hlist) { + lttng_hlist_for_each_entry(e, head, hlist) { if (pid == e->pid) return -EEXIST; } @@ -127,7 +128,7 @@ int lttng_pid_tracker_del(struct lttng_pid_tracker *lpf, int pid) * No need of _safe iteration, because we stop traversal as soon * as we remove the entry. */ - hlist_for_each_entry(e, head, hlist) { + lttng_hlist_for_each_entry(e, head, hlist) { if (pid == e->pid) { pid_tracker_del_node_rcu(e); return 0; @@ -150,7 +151,7 @@ void lttng_pid_tracker_destroy(struct lttng_pid_tracker *lpf) struct lttng_pid_hash_node *e; struct hlist_node *tmp; - hlist_for_each_entry_safe(e, tmp, head, hlist) + lttng_hlist_for_each_entry_safe(e, tmp, head, hlist) pid_tracker_del_node(e); } kfree(lpf);