Statistics
| Branch: | Revision:

root / event_notifier-win32.c @ 1de7afc9

History | View | Annotate | Download (1.2 kB)

1
/*
2
 * event notifier support
3
 *
4
 * Copyright Red Hat, Inc. 2010
5
 *
6
 * Authors:
7
 *  Michael S. Tsirkin <mst@redhat.com>
8
 *
9
 * This work is licensed under the terms of the GNU GPL, version 2 or later.
10
 * See the COPYING file in the top-level directory.
11
 */
12

    
13
#include "qemu-common.h"
14
#include "qemu/event_notifier.h"
15
#include "qemu/main-loop.h"
16

    
17
int event_notifier_init(EventNotifier *e, int active)
18
{
19
    e->event = CreateEvent(NULL, TRUE, FALSE, NULL);
20
    assert(e->event);
21
    return 0;
22
}
23

    
24
void event_notifier_cleanup(EventNotifier *e)
25
{
26
    CloseHandle(e->event);
27
}
28

    
29
HANDLE event_notifier_get_handle(EventNotifier *e)
30
{
31
    return e->event;
32
}
33

    
34
int event_notifier_set_handler(EventNotifier *e,
35
                               EventNotifierHandler *handler)
36
{
37
    if (handler) {
38
        return qemu_add_wait_object(e->event, (IOHandler *)handler, e);
39
    } else {
40
        qemu_del_wait_object(e->event, (IOHandler *)handler, e);
41
        return 0;
42
    }
43
}
44

    
45
int event_notifier_set(EventNotifier *e)
46
{
47
    SetEvent(e->event);
48
    return 0;
49
}
50

    
51
int event_notifier_test_and_clear(EventNotifier *e)
52
{
53
    int ret = WaitForSingleObject(e->event, 0);
54
    if (ret == WAIT_OBJECT_0) {
55
        ResetEvent(e->event);
56
        return true;
57
    }
58
    return false;
59
}