xref: /openbmc/qemu/util/event_notifier-win32.c (revision 0f9668e0)
1baacf047SPaolo Bonzini /*
2baacf047SPaolo Bonzini  * event notifier support
3baacf047SPaolo Bonzini  *
4baacf047SPaolo Bonzini  * Copyright Red Hat, Inc. 2010
5baacf047SPaolo Bonzini  *
6baacf047SPaolo Bonzini  * Authors:
7baacf047SPaolo Bonzini  *  Michael S. Tsirkin <mst@redhat.com>
8baacf047SPaolo Bonzini  *
9baacf047SPaolo Bonzini  * This work is licensed under the terms of the GNU GPL, version 2 or later.
10baacf047SPaolo Bonzini  * See the COPYING file in the top-level directory.
11baacf047SPaolo Bonzini  */
12baacf047SPaolo Bonzini 
13aafd7584SPeter Maydell #include "qemu/osdep.h"
14baacf047SPaolo Bonzini #include "qemu/event_notifier.h"
15baacf047SPaolo Bonzini #include "qemu/main-loop.h"
16baacf047SPaolo Bonzini 
event_notifier_init(EventNotifier * e,int active)17baacf047SPaolo Bonzini int event_notifier_init(EventNotifier *e, int active)
18baacf047SPaolo Bonzini {
19baacf047SPaolo Bonzini     e->event = CreateEvent(NULL, TRUE, FALSE, NULL);
20baacf047SPaolo Bonzini     assert(e->event);
21baacf047SPaolo Bonzini     return 0;
22baacf047SPaolo Bonzini }
23baacf047SPaolo Bonzini 
event_notifier_cleanup(EventNotifier * e)24baacf047SPaolo Bonzini void event_notifier_cleanup(EventNotifier *e)
25baacf047SPaolo Bonzini {
26baacf047SPaolo Bonzini     CloseHandle(e->event);
27*aa262928SHalil Pasic     e->event = NULL;
28baacf047SPaolo Bonzini }
29baacf047SPaolo Bonzini 
event_notifier_get_handle(EventNotifier * e)30baacf047SPaolo Bonzini HANDLE event_notifier_get_handle(EventNotifier *e)
31baacf047SPaolo Bonzini {
32baacf047SPaolo Bonzini     return e->event;
33baacf047SPaolo Bonzini }
34baacf047SPaolo Bonzini 
event_notifier_set(EventNotifier * e)35baacf047SPaolo Bonzini int event_notifier_set(EventNotifier *e)
36baacf047SPaolo Bonzini {
37baacf047SPaolo Bonzini     SetEvent(e->event);
38baacf047SPaolo Bonzini     return 0;
39baacf047SPaolo Bonzini }
40baacf047SPaolo Bonzini 
event_notifier_test_and_clear(EventNotifier * e)41baacf047SPaolo Bonzini int event_notifier_test_and_clear(EventNotifier *e)
42baacf047SPaolo Bonzini {
43baacf047SPaolo Bonzini     int ret = WaitForSingleObject(e->event, 0);
44baacf047SPaolo Bonzini     if (ret == WAIT_OBJECT_0) {
45baacf047SPaolo Bonzini         ResetEvent(e->event);
46baacf047SPaolo Bonzini         return true;
47baacf047SPaolo Bonzini     }
48baacf047SPaolo Bonzini     return false;
49baacf047SPaolo Bonzini }
50