Messages in this thread Patch in this message | | | From | Huang Ying <> | Subject | [PATCH -mm -v2 2/5] llist, Define macro to check NMI safe cmpxchg | Date | Thu, 8 Sep 2011 14:00:43 +0800 |
| |
To make code cleaner and reduce code duplication. Thanks Peter Zijlstra for reminding.
Signed-off-by: Huang Ying <ying.huang@intel.com> Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> Cc: Peter Zijlstra <peterz@infradead.org> --- include/linux/llist.h | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-)
--- a/include/linux/llist.h +++ b/include/linux/llist.h @@ -70,6 +70,12 @@ struct llist_node { #define LLIST_HEAD_INIT(name) { NULL } #define LLIST_HEAD(name) struct llist_head name = LLIST_HEAD_INIT(name) +#ifdef CONFIG_ARCH_HAVE_NMI_SAFE_CMPXCHG +#define CHECK_NMI_SAFE_CMPXCHG() +#else +#define CHECK_NMI_SAFE_CMPXCHG() BUG_ON(in_nmi()) +#endif + /** * init_llist_head - initialize lock-less list head * @head: the head for your lock-less list @@ -147,9 +153,7 @@ static inline void llist_add(struct llis { struct llist_node *entry, *old_entry; -#ifndef CONFIG_ARCH_HAVE_NMI_SAFE_CMPXCHG - BUG_ON(in_nmi()); -#endif + CHECK_NMI_SAFE_CMPXCHG(); entry = head->first; do { @@ -171,9 +175,7 @@ static inline void llist_add_batch(struc { struct llist_node *entry, *old_entry; -#ifndef CONFIG_ARCH_HAVE_NMI_SAFE_CMPXCHG - BUG_ON(in_nmi()); -#endif + CHECK_NMI_SAFE_CMPXCHG(); entry = head->first; do { @@ -201,9 +203,7 @@ static inline struct llist_node *llist_d { struct llist_node *entry, *old_entry, *next; -#ifndef CONFIG_ARCH_HAVE_NMI_SAFE_CMPXCHG - BUG_ON(in_nmi()); -#endif + CHECK_NMI_SAFE_CMPXCHG(); entry = head->first; do { @@ -227,9 +227,7 @@ static inline struct llist_node *llist_d */ static inline struct llist_node *llist_del_all(struct llist_head *head) { -#ifndef CONFIG_ARCH_HAVE_NMI_SAFE_CMPXCHG - BUG_ON(in_nmi()); -#endif + CHECK_NMI_SAFE_CMPXCHG(); return xchg(&head->first, NULL); }
| |