diff options
author | kfraser@localhost.localdomain <kfraser@localhost.localdomain> | 2007-02-21 16:13:49 +0000 |
---|---|---|
committer | kfraser@localhost.localdomain <kfraser@localhost.localdomain> | 2007-02-21 16:13:49 +0000 |
commit | c6c62d99d860ff01493f1aa3530e517f6ba7de6d (patch) | |
tree | 8bb47c79f7ff771896089a6adeebd3a3fa8bbcd6 /xen/common/sched_sedf.c | |
parent | 39475b429d06a097bc528468a80c1bee2eb38a5b (diff) | |
download | xen-c6c62d99d860ff01493f1aa3530e517f6ba7de6d.tar.gz xen-c6c62d99d860ff01493f1aa3530e517f6ba7de6d.tar.bz2 xen-c6c62d99d860ff01493f1aa3530e517f6ba7de6d.zip |
Use RCU for domain_list and domain_hash.
Signed-off-by: Jose Renato Santos <jsantos@hpl.hp.com>
Signed-off-by: Keir Fraser <keir@xensource.com>
Diffstat (limited to 'xen/common/sched_sedf.c')
-rw-r--r-- | xen/common/sched_sedf.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/xen/common/sched_sedf.c b/xen/common/sched_sedf.c index 5381fcb3ca..8f79dd23b4 100644 --- a/xen/common/sched_sedf.c +++ b/xen/common/sched_sedf.c @@ -1277,6 +1277,7 @@ static void sedf_dump_cpu_state(int i) loop = 0; printk("\nnot on Q\n"); + rcu_read_lock(&domlist_read_lock); for_each_domain ( d ) { for_each_vcpu(d, ed) @@ -1288,6 +1289,7 @@ static void sedf_dump_cpu_state(int i) } } } + rcu_read_unlock(&domlist_read_lock); } @@ -1298,8 +1300,9 @@ static int sedf_adjust_weights(struct xen_domctl_scheduler_op *cmd) struct domain *d; int sumw[NR_CPUS] = { 0 }; s_time_t sumt[NR_CPUS] = { 0 }; - + /* Sum across all weights. */ + rcu_read_lock(&domlist_read_lock); for_each_domain( d ) { for_each_vcpu( d, p ) @@ -1323,8 +1326,10 @@ static int sedf_adjust_weights(struct xen_domctl_scheduler_op *cmd) } } } + rcu_read_unlock(&domlist_read_lock); /* Adjust all slices (and periods) to the new weight. */ + rcu_read_lock(&domlist_read_lock); for_each_domain( d ) { for_each_vcpu ( d, p ) @@ -1341,6 +1346,7 @@ static int sedf_adjust_weights(struct xen_domctl_scheduler_op *cmd) } } } + rcu_read_unlock(&domlist_read_lock); return 0; } |