Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:12.2:ARM
xen
24231-waitqueue_Implement_wake_up_nroneall..patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 24231-waitqueue_Implement_wake_up_nroneall..patch of Package xen
changeset: 24231:2a81ce2b2b93 user: Keir Fraser <keir@xen.org> date: Fri Nov 25 20:27:11 2011 +0000 files: xen/common/wait.c xen/include/xen/wait.h description: waitqueue: Implement wake_up_{nr,one,all}. Signed-off-by: Keir Fraser <keir@xen.org> --- xen/common/wait.c | 14 ++++++++++++-- xen/include/xen/wait.h | 6 ++++-- 2 files changed, 16 insertions(+), 4 deletions(-) Index: xen-4.1.2-testing/xen/common/wait.c =================================================================== --- xen-4.1.2-testing.orig/xen/common/wait.c +++ xen-4.1.2-testing/xen/common/wait.c @@ -87,13 +87,13 @@ void init_waitqueue_head(struct waitqueu INIT_LIST_HEAD(&wq->list); } -void wake_up(struct waitqueue_head *wq) +void wake_up_nr(struct waitqueue_head *wq, unsigned int nr) { struct waitqueue_vcpu *wqv; spin_lock(&wq->lock); - while ( !list_empty(&wq->list) ) + while ( !list_empty(&wq->list) && nr-- ) { wqv = list_entry(wq->list.next, struct waitqueue_vcpu, list); list_del_init(&wqv->list); @@ -103,6 +103,16 @@ void wake_up(struct waitqueue_head *wq) spin_unlock(&wq->lock); } +void wake_up_one(struct waitqueue_head *wq) +{ + wake_up_nr(wq, 1); +} + +void wake_up_all(struct waitqueue_head *wq) +{ + wake_up_nr(wq, UINT_MAX); +} + #ifdef CONFIG_X86 static void __prepare_to_wait(struct waitqueue_vcpu *wqv) Index: xen-4.1.2-testing/xen/include/xen/wait.h =================================================================== --- xen-4.1.2-testing.orig/xen/include/xen/wait.h +++ xen-4.1.2-testing/xen/include/xen/wait.h @@ -28,8 +28,10 @@ struct waitqueue_head { /* Dynamically initialise a waitqueue. */ void init_waitqueue_head(struct waitqueue_head *wq); -/* Wake all VCPUs waiting on specified waitqueue. */ -void wake_up(struct waitqueue_head *wq); +/* Wake VCPU(s) waiting on specified waitqueue. */ +void wake_up_nr(struct waitqueue_head *wq, unsigned int nr); +void wake_up_one(struct waitqueue_head *wq); +void wake_up_all(struct waitqueue_head *wq); /* Wait on specified waitqueue until @condition is true. */ #define wait_event(wq, condition) \
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