Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
SUSE:SLE-12:Update
xen.8005
5aeaeae4-introduce-vcpu_sleep_nosync_locked.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 5aeaeae4-introduce-vcpu_sleep_nosync_locked.patch of Package xen.8005
# Commit da0a5e00de8aa93f2a7482d138dbee9dec2aa5c2 # Date 2018-05-03 11:56:36 +0100 # Author George Dunlap <george.dunlap@citrix.com> # Committer George Dunlap <george.dunlap@citrix.com> xen: Introduce vcpu_sleep_nosync_locked() There are a lot of places which release a lock before calling vcpu_sleep_nosync(), which then just grabs the lock again. This is not only a waste of time, but leads to more code duplication (since you have to copy-and-paste recipes rather than calling a unified function), which in turn leads to an increased chance of bugs. Introduce vcpu_sleep_nosync_locked(), which can be called if you already hold the schedule lock. Signed-off-by: George Dunlap <george.dunlap@citrix.com> Reviewed-by: Dario Faggioli <dfaggioli@suse.com> --- a/xen/common/schedule.c +++ b/xen/common/schedule.c @@ -343,10 +343,9 @@ void sched_destroy_domain(struct domain SCHED_OP(DOM2OP(d), destroy_domain, d); } -void vcpu_sleep_nosync(struct vcpu *v) +void vcpu_sleep_nosync_locked(struct vcpu *v) { - unsigned long flags; - spinlock_t *lock = vcpu_schedule_lock_irqsave(v, &flags); + ASSERT(spin_is_locked(per_cpu(schedule_data,v->processor).schedule_lock)); if ( likely(!vcpu_runnable(v)) ) { @@ -355,6 +354,14 @@ void vcpu_sleep_nosync(struct vcpu *v) SCHED_OP(VCPU2OP(v), sleep, v); } +} + +void vcpu_sleep_nosync(struct vcpu *v) +{ + unsigned long flags; + spinlock_t *lock = vcpu_schedule_lock_irqsave(v, &flags); + + vcpu_sleep_nosync_locked(v); vcpu_schedule_unlock_irqrestore(lock, flags, v);
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor