Source
45
45
#include <linux/cpu.h>
46
46
#include <linux/mutex.h>
47
47
#include <linux/export.h>
48
48
#include <linux/hardirq.h>
49
49
#include <linux/delay.h>
50
50
#include <linux/moduleparam.h>
51
51
#include <linux/kthread.h>
52
52
#include <linux/tick.h>
53
53
#include <linux/rcupdate_wait.h>
54
54
#include <linux/sched/isolation.h>
55
+
#include <linux/kprobes.h>
55
56
56
57
#define CREATE_TRACE_POINTS
57
58
58
59
#include "rcu.h"
59
60
60
61
#ifdef MODULE_PARAM_PREFIX
61
62
#undef MODULE_PARAM_PREFIX
62
63
#endif
63
64
#define MODULE_PARAM_PREFIX "rcupdate."
64
65
242
243
struct lockdep_map rcu_callback_map =
243
244
STATIC_LOCKDEP_MAP_INIT("rcu_callback", &rcu_callback_key);
244
245
EXPORT_SYMBOL_GPL(rcu_callback_map);
245
246
246
247
int notrace debug_lockdep_rcu_enabled(void)
247
248
{
248
249
return rcu_scheduler_active != RCU_SCHEDULER_INACTIVE && debug_locks &&
249
250
current->lockdep_recursion == 0;
250
251
}
251
252
EXPORT_SYMBOL_GPL(debug_lockdep_rcu_enabled);
253
+
NOKPROBE_SYMBOL(debug_lockdep_rcu_enabled);
252
254
253
255
/**
254
256
* rcu_read_lock_held() - might we be in RCU read-side critical section?
255
257
*
256
258
* If CONFIG_DEBUG_LOCK_ALLOC is selected, returns nonzero iff in an RCU
257
259
* read-side critical section. In absence of CONFIG_DEBUG_LOCK_ALLOC,
258
260
* this assumes we are in an RCU read-side critical section unless it can
259
261
* prove otherwise. This is useful for debug checks in functions that
260
262
* require that they be called within an RCU read-side critical section.
261
263
*