diff options
author | Paul E. McKenney <paulmck@linux.vnet.ibm.com> | 2014-11-23 23:30:06 -0500 |
---|---|---|
committer | Paul E. McKenney <paulmck@linux.vnet.ibm.com> | 2015-01-06 14:04:26 -0500 |
commit | a5c198f4f7da6cc48116ca239c59c9f44b753364 (patch) | |
tree | a60e0e2ec6158f785f79c5fe55306c11d10ddd0d | |
parent | 734d16801349fbe951d2f780191d32c5b8a892d1 (diff) |
rcu: Expand SRCU ->completed to 64 bits
When rcutorture used only the low-order 32 bits of the grace-period
number, it was not a problem for SRCU to use a 32-bit completed field.
However, rcutorture now uses the full 64 bits on 64-bit systems, so
this commit converts SRCU's ->completed field to unsigned long so as to
provide 64 bits on 64-bit systems.
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
-rw-r--r-- | include/linux/srcu.h | 4 | ||||
-rw-r--r-- | kernel/rcu/srcu.c | 2 |
2 files changed, 3 insertions, 3 deletions
diff --git a/include/linux/srcu.h b/include/linux/srcu.h index a2783cb5d275..ef923dd96249 100644 --- a/include/linux/srcu.h +++ b/include/linux/srcu.h | |||
@@ -45,7 +45,7 @@ struct rcu_batch { | |||
45 | #define RCU_BATCH_INIT(name) { NULL, &(name.head) } | 45 | #define RCU_BATCH_INIT(name) { NULL, &(name.head) } |
46 | 46 | ||
47 | struct srcu_struct { | 47 | struct srcu_struct { |
48 | unsigned completed; | 48 | unsigned long completed; |
49 | struct srcu_struct_array __percpu *per_cpu_ref; | 49 | struct srcu_struct_array __percpu *per_cpu_ref; |
50 | spinlock_t queue_lock; /* protect ->batch_queue, ->running */ | 50 | spinlock_t queue_lock; /* protect ->batch_queue, ->running */ |
51 | bool running; | 51 | bool running; |
@@ -135,7 +135,7 @@ int __srcu_read_lock(struct srcu_struct *sp) __acquires(sp); | |||
135 | void __srcu_read_unlock(struct srcu_struct *sp, int idx) __releases(sp); | 135 | void __srcu_read_unlock(struct srcu_struct *sp, int idx) __releases(sp); |
136 | void synchronize_srcu(struct srcu_struct *sp); | 136 | void synchronize_srcu(struct srcu_struct *sp); |
137 | void synchronize_srcu_expedited(struct srcu_struct *sp); | 137 | void synchronize_srcu_expedited(struct srcu_struct *sp); |
138 | long srcu_batches_completed(struct srcu_struct *sp); | 138 | unsigned long srcu_batches_completed(struct srcu_struct *sp); |
139 | void srcu_barrier(struct srcu_struct *sp); | 139 | void srcu_barrier(struct srcu_struct *sp); |
140 | 140 | ||
141 | #ifdef CONFIG_DEBUG_LOCK_ALLOC | 141 | #ifdef CONFIG_DEBUG_LOCK_ALLOC |
diff --git a/kernel/rcu/srcu.c b/kernel/rcu/srcu.c index e037f3eb2f7b..445bf8ffe3fb 100644 --- a/kernel/rcu/srcu.c +++ b/kernel/rcu/srcu.c | |||
@@ -546,7 +546,7 @@ EXPORT_SYMBOL_GPL(srcu_barrier); | |||
546 | * Report the number of batches, correlated with, but not necessarily | 546 | * Report the number of batches, correlated with, but not necessarily |
547 | * precisely the same as, the number of grace periods that have elapsed. | 547 | * precisely the same as, the number of grace periods that have elapsed. |
548 | */ | 548 | */ |
549 | long srcu_batches_completed(struct srcu_struct *sp) | 549 | unsigned long srcu_batches_completed(struct srcu_struct *sp) |
550 | { | 550 | { |
551 | return sp->completed; | 551 | return sp->completed; |
552 | } | 552 | } |