| #ifndef _LINUX_JUMP_LABEL_REF_H |
| #define _LINUX_JUMP_LABEL_REF_H |
| #include <linux/jump_label.h> |
| static inline void jump_label_inc(atomic_t *key) |
| if (atomic_add_return(1, key) == 1) |
| static inline void jump_label_dec(atomic_t *key) |
| if (atomic_dec_and_test(key)) |
| #else /* !HAVE_JUMP_LABEL */ |
| static inline void jump_label_inc(atomic_t *key) |
| static inline void jump_label_dec(atomic_t *key) |
| #define JUMP_LABEL(key, label) \ |
| if (unlikely(__builtin_choose_expr( \ |
| __builtin_types_compatible_p(typeof(key), atomic_t *), \ |
| atomic_read((atomic_t *)(key)), *(key)))) \ |
| #endif /* HAVE_JUMP_LABEL */ |
| #endif /* _LINUX_JUMP_LABEL_REF_H */ |