git://ftp.safe.ca
/
safe
/
jmp
/
linux-2.6
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
panic: Allow warnings to set different taint flags
[safe/jmp/linux-2.6]
/
kernel
/
rcutiny.c
diff --git
a/kernel/rcutiny.c
b/kernel/rcutiny.c
index
0b54efd
..
9f6d9ff
100644
(file)
--- a/
kernel/rcutiny.c
+++ b/
kernel/rcutiny.c
@@
-20,22
+20,21
@@
* Author: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
*
* For detailed explanation of Read-Copy Update mechanism see -
* Author: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
*
* For detailed explanation of Read-Copy Update mechanism see -
- * Documentation/RCU
+ * Documentation/RCU
*/
*/
-
-#include <linux/types.h>
-#include <linux/kernel.h>
-#include <linux/init.h>
-#include <linux/rcupdate.h>
-#include <linux/interrupt.h>
-#include <linux/sched.h>
-#include <linux/module.h>
-#include <linux/completion.h>
#include <linux/moduleparam.h>
#include <linux/moduleparam.h>
+#include <linux/completion.h>
+#include <linux/interrupt.h>
#include <linux/notifier.h>
#include <linux/notifier.h>
-#include <linux/cpu.h>
+#include <linux/rcupdate.h>
+#include <linux/kernel.h>
+#include <linux/module.h>
#include <linux/mutex.h>
#include <linux/mutex.h>
+#include <linux/sched.h>
+#include <linux/types.h>
+#include <linux/init.h>
#include <linux/time.h>
#include <linux/time.h>
+#include <linux/cpu.h>
/* Global control variables for rcupdate callback mechanism. */
struct rcu_ctrlblk {
/* Global control variables for rcupdate callback mechanism. */
struct rcu_ctrlblk {
@@
-46,14
+45,13
@@
struct rcu_ctrlblk {
/* Definition for rcupdate control block. */
static struct rcu_ctrlblk rcu_ctrlblk = {
/* Definition for rcupdate control block. */
static struct rcu_ctrlblk rcu_ctrlblk = {
- .rcucblist = NULL,
- .donetail = &rcu_ctrlblk.rcucblist,
- .curtail = &rcu_ctrlblk.rcucblist,
+ .donetail = &rcu_ctrlblk.rcucblist,
+ .curtail = &rcu_ctrlblk.rcucblist,
};
};
+
static struct rcu_ctrlblk rcu_bh_ctrlblk = {
static struct rcu_ctrlblk rcu_bh_ctrlblk = {
- .rcucblist = NULL,
- .donetail = &rcu_bh_ctrlblk.rcucblist,
- .curtail = &rcu_bh_ctrlblk.rcucblist,
+ .donetail = &rcu_bh_ctrlblk.rcucblist,
+ .curtail = &rcu_bh_ctrlblk.rcucblist,
};
#ifdef CONFIG_NO_HZ
};
#ifdef CONFIG_NO_HZ
@@
-84,8
+82,8
@@
void rcu_exit_nohz(void)
/*
* Helper function for rcu_qsctr_inc() and rcu_bh_qsctr_inc().
/*
* Helper function for rcu_qsctr_inc() and rcu_bh_qsctr_inc().
- * Also disable irqs to avoid confusion due to interrupt handlers
invoking
- * call_rcu().
+ * Also disable irqs to avoid confusion due to interrupt handlers
+ *
invoking
call_rcu().
*/
static int rcu_qsctr_help(struct rcu_ctrlblk *rcp)
{
*/
static int rcu_qsctr_help(struct rcu_ctrlblk *rcp)
{
@@
-99,6
+97,7
@@
static int rcu_qsctr_help(struct rcu_ctrlblk *rcp)
return 1;
}
local_irq_restore(flags);
return 1;
}
local_irq_restore(flags);
+
return 0;
}
return 0;
}
@@
-143,8
+142,8
@@
void rcu_check_callbacks(int cpu, int user)
*/
static void __rcu_process_callbacks(struct rcu_ctrlblk *rcp)
{
*/
static void __rcu_process_callbacks(struct rcu_ctrlblk *rcp)
{
- unsigned long flags;
struct rcu_head *next, *list;
struct rcu_head *next, *list;
+ unsigned long flags;
/* If no RCU callbacks ready to invoke, just return. */
if (&rcp->rcucblist == rcp->donetail)
/* If no RCU callbacks ready to invoke, just return. */
if (&rcp->rcucblist == rcp->donetail)
@@
-179,16
+178,6
@@
static void rcu_process_callbacks(struct softirq_action *unused)
}
/*
}
/*
- * Null function to handle CPU being onlined. Longer term, we want to
- * make TINY_RCU avoid using rcupdate.c, but later...
- */
-int rcu_cpu_notify(struct notifier_block *self,
- unsigned long action, void *hcpu)
-{
- return NOTIFY_OK;
-}
-
-/*
* Wait for a grace period to elapse. But it is illegal to invoke
* synchronize_sched() from within an RCU read-side critical section.
* Therefore, any legal call to synchronize_sched() is a quiescent
* Wait for a grace period to elapse. But it is illegal to invoke
* synchronize_sched() from within an RCU read-side critical section.
* Therefore, any legal call to synchronize_sched() is a quiescent
@@
-223,6
+212,7
@@
static void __call_rcu(struct rcu_head *head,
head->func = func;
head->next = NULL;
head->func = func;
head->next = NULL;
+
local_irq_save(flags);
*rcp->curtail = head;
rcp->curtail = &head->next;
local_irq_save(flags);
*rcp->curtail = head;
rcp->curtail = &head->next;
@@
-234,8
+224,7
@@
static void __call_rcu(struct rcu_head *head,
* period. But since we have but one CPU, that would be after any
* quiescent state.
*/
* period. But since we have but one CPU, that would be after any
* quiescent state.
*/
-void call_rcu(struct rcu_head *head,
- void (*func)(struct rcu_head *rcu))
+void call_rcu(struct rcu_head *head, void (*func)(struct rcu_head *rcu))
{
__call_rcu(head, func, &rcu_ctrlblk);
}
{
__call_rcu(head, func, &rcu_ctrlblk);
}
@@
-245,8
+234,7
@@
EXPORT_SYMBOL_GPL(call_rcu);
* Post an RCU bottom-half callback to be invoked after any subsequent
* quiescent state.
*/
* Post an RCU bottom-half callback to be invoked after any subsequent
* quiescent state.
*/
-void call_rcu_bh(struct rcu_head *head,
- void (*func)(struct rcu_head *rcu))
+void call_rcu_bh(struct rcu_head *head, void (*func)(struct rcu_head *rcu))
{
__call_rcu(head, func, &rcu_bh_ctrlblk);
}
{
__call_rcu(head, func, &rcu_bh_ctrlblk);
}
@@
-288,7
+276,7
@@
void rcu_barrier_sched(void)
}
EXPORT_SYMBOL_GPL(rcu_barrier_sched);
}
EXPORT_SYMBOL_GPL(rcu_barrier_sched);
-void __rcu_init(void)
+void __
init
rcu_init(void)
{
open_softirq(RCU_SOFTIRQ, rcu_process_callbacks);
}
{
open_softirq(RCU_SOFTIRQ, rcu_process_callbacks);
}