Branch data Line data Source code
1 : : #ifndef _LINUX_JUMP_LABEL_RATELIMIT_H
2 : : #define _LINUX_JUMP_LABEL_RATELIMIT_H
3 : :
4 : : #include <linux/jump_label.h>
5 : : #include <linux/workqueue.h>
6 : :
7 : : #if defined(CC_HAVE_ASM_GOTO) && defined(CONFIG_JUMP_LABEL)
8 : : struct static_key_deferred {
9 : : struct static_key key;
10 : : unsigned long timeout;
11 : : struct delayed_work work;
12 : : };
13 : : #endif
14 : :
15 : : #ifdef HAVE_JUMP_LABEL
16 : : extern void static_key_slow_dec_deferred(struct static_key_deferred *key);
17 : : extern void
18 : : jump_label_rate_limit(struct static_key_deferred *key, unsigned long rl);
19 : :
20 : : #else /* !HAVE_JUMP_LABEL */
21 : : struct static_key_deferred {
22 : : struct static_key key;
23 : : };
24 : : static inline void static_key_slow_dec_deferred(struct static_key_deferred *key)
25 : : {
26 [ # # ][ # # ]: 0 : STATIC_KEY_CHECK_USE();
27 : : static_key_slow_dec(&key->key);
28 : : }
29 : : static inline void
30 : : jump_label_rate_limit(struct static_key_deferred *key,
31 : : unsigned long rl)
32 : : {
33 [ # # ]: 0 : STATIC_KEY_CHECK_USE();
34 : : }
35 : : #endif /* HAVE_JUMP_LABEL */
36 : : #endif /* _LINUX_JUMP_LABEL_RATELIMIT_H */
|