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 static_key_slow_dec(&key->key); 27 } 28 static inline void 29 jump_label_rate_limit(struct static_key_deferred *key, 30 unsigned long rl) 31 { 32 } 33 #endif /* HAVE_JUMP_LABEL */ 34 #endif /* _LINUX_JUMP_LABEL_RATELIMIT_H */ 35