NULLing the RCU_NEXT_TAIL pointer was a clever way to save a byte, but forward-progress considerations would require that this pointer be both NULL and non-NULL, which, absent a quantum-computer port of the Linux kernel, simply won't happen. This commit therefore creates as separate ->enabled flag to replace the current NULL checks. [ paulmck: Add include files per 0day test robot and -next. ] Signed-off-by: Paul E. McKenney <paulmck@linux.ibm.com>
Showing the changes to include/linux (1 of 4 files). Show all
Unified · Split
| @@ -14,6 +14,9 @@ · 13 unmodified lines | |||
| 14 | #ifndef __INCLUDE_LINUX_RCU_SEGCBLIST_H | 14 | #ifndef __INCLUDE_LINUX_RCU_SEGCBLIST_H |
| 15 | #define __INCLUDE_LINUX_RCU_SEGCBLIST_H | 15 | #define __INCLUDE_LINUX_RCU_SEGCBLIST_H |
| 16 | 16 | ||
| 17 | #include <linux/types.h> | ||
| 18 | #include <linux/atomic.h> | ||
| 19 | |||
| 17 | /* Simple unsegmented callback lists. */ | 20 | /* Simple unsegmented callback lists. */ |
| 18 | struct rcu_cblist { | 21 | struct rcu_cblist { |
| 19 | struct rcu_head *head; | 22 | struct rcu_head *head; |
| @@ -67,6 +70,7 @@ struct rcu_segcblist { · 47 unmodified lines | |||
| 67 | unsigned long gp_seq[RCU_CBLIST_NSEGS]; | 70 | unsigned long gp_seq[RCU_CBLIST_NSEGS]; |
| 68 | long len; | 71 | long len; |
| 69 | long len_lazy; | 72 | long len_lazy; |
| 73 | u8 enabled; | ||
| 70 | }; | 74 | }; |
| 71 | 75 | ||
| 72 | #define RCU_SEGCBLIST_INITIALIZER(n) \ | 76 | #define RCU_SEGCBLIST_INITIALIZER(n) \ |