]>
Commit | Line | Data |
---|---|---|
851cf6e7 AJ |
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 | { | |
c4b2c0c5 | 26 | STATIC_KEY_CHECK_USE(); |
851cf6e7 AJ |
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 | { | |
c4b2c0c5 | 33 | STATIC_KEY_CHECK_USE(); |
851cf6e7 AJ |
34 | } |
35 | #endif /* HAVE_JUMP_LABEL */ | |
36 | #endif /* _LINUX_JUMP_LABEL_RATELIMIT_H */ |