aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/smp.h
diff options
context:
space:
mode:
authorChristoph Hellwig <hch@infradead.org>2014-01-30 18:45:47 -0500
committerLinus Torvalds <torvalds@linux-foundation.org>2014-01-30 19:56:54 -0500
commit6897fc22ea01b562b55c6168592bcbd3ee62b006 (patch)
tree034c4b774880c2bbf8a9347acef749478a3443b0 /include/linux/smp.h
parent0c692d07842a67d9aa6b8266a80e4ac460a5c1a2 (diff)
kernel: use lockless list for smp_call_function_single
Make smp_call_function_single and friends more efficient by using a lockless list. Signed-off-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Jan Kara <jack@suse.cz> Cc: Jens Axboe <axboe@kernel.dk> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'include/linux/smp.h')
-rw-r--r--include/linux/smp.h6
1 files changed, 5 insertions, 1 deletions
diff --git a/include/linux/smp.h b/include/linux/smp.h
index 5da22ee42e16..3834f43f9993 100644
--- a/include/linux/smp.h
+++ b/include/linux/smp.h
@@ -11,12 +11,16 @@
11#include <linux/list.h> 11#include <linux/list.h>
12#include <linux/cpumask.h> 12#include <linux/cpumask.h>
13#include <linux/init.h> 13#include <linux/init.h>
14#include <linux/llist.h>
14 15
15extern void cpu_idle(void); 16extern void cpu_idle(void);
16 17
17typedef void (*smp_call_func_t)(void *info); 18typedef void (*smp_call_func_t)(void *info);
18struct call_single_data { 19struct call_single_data {
19 struct list_head list; 20 union {
21 struct list_head list;
22 struct llist_node llist;
23 };
20 smp_call_func_t func; 24 smp_call_func_t func;
21 void *info; 25 void *info;
22 u16 flags; 26 u16 flags;