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 Bonziniint 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 Bonzinivoid 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 BonziniHANDLE event_notifier_get_handle(EventNotifier *e) 31baacf047SPaolo Bonzini { 32baacf047SPaolo Bonzini return e->event; 33baacf047SPaolo Bonzini } 34baacf047SPaolo Bonzini event_notifier_set(EventNotifier * e)35baacf047SPaolo Bonziniint 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 Bonziniint 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