wrapper: remove rcu list traversal wrapper
authorMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Tue, 14 Apr 2020 12:23:19 +0000 (08:23 -0400)
committerMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Tue, 14 Apr 2020 12:26:32 +0000 (08:26 -0400)
lttng-syscalls.c
probes/lttng-tracepoint-event-impl.h
wrapper/rcu.h [deleted file]

index edb69b09bc23c79d133a72209eedb95fb672b033..41fc2e3dc6565927baa499f849266247fb5249e1 100644 (file)
@@ -391,7 +391,7 @@ void syscall_entry_probe(void *__data, struct pt_regs *regs, long id)
        if (unlikely(in_compat_syscall())) {
                struct lttng_syscall_filter *filter;
 
-               filter = lttng_rcu_dereference(chan->sc_filter);
+               filter = rcu_dereference_raw_check(chan->sc_filter);
                if (filter) {
                        if (id < 0 || id >= NR_compat_syscalls
                                || !test_bit(id, filter->sc_compat)) {
@@ -405,7 +405,7 @@ void syscall_entry_probe(void *__data, struct pt_regs *regs, long id)
        } else {
                struct lttng_syscall_filter *filter;
 
-               filter = lttng_rcu_dereference(chan->sc_filter);
+               filter = rcu_dereference_raw_check(chan->sc_filter);
                if (filter) {
                        if (id < 0 || id >= NR_syscalls
                                || !test_bit(id, filter->sc)) {
@@ -545,7 +545,7 @@ void syscall_exit_probe(void *__data, struct pt_regs *regs, long ret)
        if (unlikely(in_compat_syscall())) {
                struct lttng_syscall_filter *filter;
 
-               filter = lttng_rcu_dereference(chan->sc_filter);
+               filter = rcu_dereference_raw_check(chan->sc_filter);
                if (filter) {
                        if (id < 0 || id >= NR_compat_syscalls
                                || !test_bit(id, filter->sc_compat)) {
@@ -559,7 +559,7 @@ void syscall_exit_probe(void *__data, struct pt_regs *regs, long ret)
        } else {
                struct lttng_syscall_filter *filter;
 
-               filter = lttng_rcu_dereference(chan->sc_filter);
+               filter = rcu_dereference_raw_check(chan->sc_filter);
                if (filter) {
                        if (id < 0 || id >= NR_syscalls
                                || !test_bit(id, filter->sc)) {
index 11c89390a58fe77ddd536b981866b5f67817df43..8584fbe0893d1be6f3b1d5aa94b761cd467d2aaf 100644 (file)
@@ -17,7 +17,6 @@
 #include <probes/lttng-probe-user.h>
 #include <include/ringbuffer/frontend_types.h>
 #include <include/ringbuffer/backend.h>
-#include <wrapper/rcu.h>
 #include <wrapper/user_namespace.h>
 #include <lttng-events.h>
 #include <lttng-tracer-core.h>
@@ -1156,25 +1155,25 @@ static void __event_probe__##_name(void *__data, _proto)                      \
                return;                                                       \
        if (unlikely(!READ_ONCE(__event->enabled)))                           \
                return;                                                       \
-       __lf = lttng_rcu_dereference(__session->pid_tracker.p);               \
+       __lf = rcu_dereference_raw_check(__session->pid_tracker.p);           \
        if (__lf && likely(!lttng_id_tracker_lookup(__lf, current->tgid)))    \
                return;                                                       \
-       __lf = lttng_rcu_dereference(__session->vpid_tracker.p);              \
+       __lf = rcu_dereference_raw_check(__session->vpid_tracker.p);          \
        if (__lf && likely(!lttng_id_tracker_lookup(__lf, task_tgid_vnr(current)))) \
                return;                                                       \
-       __lf = lttng_rcu_dereference(__session->uid_tracker.p);               \
+       __lf = rcu_dereference_raw_check(__session->uid_tracker.p);           \
        if (__lf && likely(!lttng_id_tracker_lookup(__lf,                     \
                        lttng_current_uid())))                                \
                return;                                                       \
-       __lf = lttng_rcu_dereference(__session->vuid_tracker.p);              \
+       __lf = rcu_dereference_raw_check(__session->vuid_tracker.p);          \
        if (__lf && likely(!lttng_id_tracker_lookup(__lf,                     \
                        lttng_current_vuid())))                               \
                return;                                                       \
-       __lf = lttng_rcu_dereference(__session->gid_tracker.p);               \
+       __lf = rcu_dereference_raw_check(__session->gid_tracker.p);           \
        if (__lf && likely(!lttng_id_tracker_lookup(__lf,                     \
                        lttng_current_gid())))                                \
                return;                                                       \
-       __lf = lttng_rcu_dereference(__session->vgid_tracker.p);              \
+       __lf = rcu_dereference_raw_check(__session->vgid_tracker.p);          \
        if (__lf && likely(!lttng_id_tracker_lookup(__lf,                     \
                        lttng_current_vgid())))                               \
                return;                                                       \
@@ -1187,7 +1186,7 @@ static void __event_probe__##_name(void *__data, _proto)                \
                                                                              \
                __event_prepare_filter_stack__##_name(__stackvar.__filter_stack_data, \
                                tp_locvar, _args);                                    \
-               lttng_list_for_each_entry_rcu(bc_runtime, &__event->bytecode_runtime_head, node) { \
+               list_for_each_entry_rcu_notrace(bc_runtime, &__event->bytecode_runtime_head, node) { \
                        if (unlikely(bc_runtime->filter(bc_runtime, &__lttng_probe_ctx,       \
                                        __stackvar.__filter_stack_data) & LTTNG_FILTER_RECORD_FLAG)) { \
                                __filter_record = 1;                          \
@@ -1251,25 +1250,25 @@ static void __event_probe__##_name(void *__data)                              \
                return;                                                       \
        if (unlikely(!READ_ONCE(__event->enabled)))                           \
                return;                                                       \
-       __lf = lttng_rcu_dereference(__session->pid_tracker.p);               \
+       __lf = rcu_dereference_raw_check(__session->pid_tracker.p);           \
        if (__lf && likely(!lttng_id_tracker_lookup(__lf, current->tgid)))    \
                return;                                                       \
-       __lf = lttng_rcu_dereference(__session->vpid_tracker.p);              \
+       __lf = rcu_dereference_raw_check(__session->vpid_tracker.p);          \
        if (__lf && likely(!lttng_id_tracker_lookup(__lf, task_tgid_vnr(current)))) \
                return;                                                       \
-       __lf = lttng_rcu_dereference(__session->uid_tracker.p);               \
+       __lf = rcu_dereference_raw_check(__session->uid_tracker.p);           \
        if (__lf && likely(!lttng_id_tracker_lookup(__lf,                     \
                        lttng_current_uid())))                                \
                return;                                                       \
-       __lf = lttng_rcu_dereference(__session->vuid_tracker.p);              \
+       __lf = rcu_dereference_raw_check(__session->vuid_tracker.p);          \
        if (__lf && likely(!lttng_id_tracker_lookup(__lf,                     \
                        lttng_current_vuid())))                               \
                return;                                                       \
-       __lf = lttng_rcu_dereference(__session->gid_tracker.p);               \
+       __lf = rcu_dereference_raw_check(__session->gid_tracker.p);           \
        if (__lf && likely(!lttng_id_tracker_lookup(__lf,                     \
                        lttng_current_gid())))                                \
                return;                                                       \
-       __lf = lttng_rcu_dereference(__session->vgid_tracker.p);              \
+       __lf = rcu_dereference_raw_check(__session->vgid_tracker.p);          \
        if (__lf && likely(!lttng_id_tracker_lookup(__lf,                     \
                        lttng_current_vgid())))                               \
                return;                                                       \
@@ -1282,7 +1281,7 @@ static void __event_probe__##_name(void *__data)                        \
                                                                              \
                __event_prepare_filter_stack__##_name(__stackvar.__filter_stack_data, \
                                tp_locvar);                                   \
-               lttng_list_for_each_entry_rcu(bc_runtime, &__event->bytecode_runtime_head, node) { \
+               list_for_each_entry_rcu_notrace(bc_runtime, &__event->bytecode_runtime_head, node) { \
                        if (unlikely(bc_runtime->filter(bc_runtime, &__lttng_probe_ctx, \
                                        __stackvar.__filter_stack_data) & LTTNG_FILTER_RECORD_FLAG)) { \
                                __filter_record = 1;                          \
diff --git a/wrapper/rcu.h b/wrapper/rcu.h
deleted file mode 100644 (file)
index b1877a4..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-/* SPDX-License-Identifier: (GPL-2.0-only or LGPL-2.1-only)
- *
- * wrapper/rcu.h
- *
- * wrapper around linux/rcupdate.h and linux/rculist.h.
- *
- * Copyright (C) 2014 Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
- */
-
-#ifndef _LTTNG_WRAPPER_RCU_H
-#define _LTTNG_WRAPPER_RCU_H
-
-#include <linux/version.h>
-#include <linux/rculist.h>
-#include <linux/rcupdate.h>
-
-#ifndef rcu_dereference_raw_notrace
-#define rcu_dereference_raw_notrace(p) rcu_dereference_raw(p)
-#endif
-
-#define lttng_rcu_dereference(p) rcu_dereference_raw_notrace(p)
-
-/**
- * lttng_list_entry_rcu - get the struct for this entry
- * @ptr:        the &struct list_head pointer.
- * @type:       the type of the struct this is embedded in.
- * @member:     the name of the list_head within the struct.
- *
- * This primitive may safely run concurrently with the _rcu list-mutation
- * primitives such as list_add_rcu() as long as it's guarded by
- * rcu_read_lock_sched().
- * Can be used while tracing RCU.
- */
-#define lttng_list_entry_rcu(ptr, type, member) \
-({ \
-       typeof(*ptr) __rcu *__ptr = (typeof(*ptr) __rcu __force *)ptr; \
-       container_of((typeof(ptr))lttng_rcu_dereference(__ptr), type, member); \
-})
-
-/**
- * lttng_list_for_each_entry_rcu - iterate over rcu list of given type
- * @pos:       the type * to use as a loop cursor.
- * @head:      the head for your list.
- * @member:    the name of the list_head within the struct.
- *
- * This list-traversal primitive may safely run concurrently with
- * the _rcu list-mutation primitives such as list_add_rcu()
- * as long as the traversal is guarded by rcu_read_lock_sched().
- * Can be used while tracing RCU.
- */
-#define lttng_list_for_each_entry_rcu(pos, head, member) \
-       for (pos = lttng_list_entry_rcu((head)->next, typeof(*pos), member); \
-               &pos->member != (head); \
-               pos = lttng_list_entry_rcu(pos->member.next, typeof(*pos), member))
-
-#endif /* _LTTNG_WRAPPER_RCU_H */
This page took 0.030134 seconds and 4 git commands to generate.