Statistics
| Branch: | Revision:

root / event_notifier-win32.c @ 1de7afc9

History | View | Annotate | Download (1.2 kB)

1 fc97a652 Paolo Bonzini
/*
2 fc97a652 Paolo Bonzini
 * event notifier support
3 fc97a652 Paolo Bonzini
 *
4 fc97a652 Paolo Bonzini
 * Copyright Red Hat, Inc. 2010
5 fc97a652 Paolo Bonzini
 *
6 fc97a652 Paolo Bonzini
 * Authors:
7 fc97a652 Paolo Bonzini
 *  Michael S. Tsirkin <mst@redhat.com>
8 fc97a652 Paolo Bonzini
 *
9 fc97a652 Paolo Bonzini
 * This work is licensed under the terms of the GNU GPL, version 2 or later.
10 fc97a652 Paolo Bonzini
 * See the COPYING file in the top-level directory.
11 fc97a652 Paolo Bonzini
 */
12 fc97a652 Paolo Bonzini
13 fc97a652 Paolo Bonzini
#include "qemu-common.h"
14 1de7afc9 Paolo Bonzini
#include "qemu/event_notifier.h"
15 1de7afc9 Paolo Bonzini
#include "qemu/main-loop.h"
16 fc97a652 Paolo Bonzini
17 fc97a652 Paolo Bonzini
int event_notifier_init(EventNotifier *e, int active)
18 fc97a652 Paolo Bonzini
{
19 e9bff10f Jan Kiszka
    e->event = CreateEvent(NULL, TRUE, FALSE, NULL);
20 fc97a652 Paolo Bonzini
    assert(e->event);
21 fc97a652 Paolo Bonzini
    return 0;
22 fc97a652 Paolo Bonzini
}
23 fc97a652 Paolo Bonzini
24 fc97a652 Paolo Bonzini
void event_notifier_cleanup(EventNotifier *e)
25 fc97a652 Paolo Bonzini
{
26 fc97a652 Paolo Bonzini
    CloseHandle(e->event);
27 fc97a652 Paolo Bonzini
}
28 fc97a652 Paolo Bonzini
29 fc97a652 Paolo Bonzini
HANDLE event_notifier_get_handle(EventNotifier *e)
30 fc97a652 Paolo Bonzini
{
31 fc97a652 Paolo Bonzini
    return e->event;
32 fc97a652 Paolo Bonzini
}
33 fc97a652 Paolo Bonzini
34 fc97a652 Paolo Bonzini
int event_notifier_set_handler(EventNotifier *e,
35 fc97a652 Paolo Bonzini
                               EventNotifierHandler *handler)
36 fc97a652 Paolo Bonzini
{
37 fc97a652 Paolo Bonzini
    if (handler) {
38 fc97a652 Paolo Bonzini
        return qemu_add_wait_object(e->event, (IOHandler *)handler, e);
39 fc97a652 Paolo Bonzini
    } else {
40 fc97a652 Paolo Bonzini
        qemu_del_wait_object(e->event, (IOHandler *)handler, e);
41 fc97a652 Paolo Bonzini
        return 0;
42 fc97a652 Paolo Bonzini
    }
43 fc97a652 Paolo Bonzini
}
44 fc97a652 Paolo Bonzini
45 fc97a652 Paolo Bonzini
int event_notifier_set(EventNotifier *e)
46 fc97a652 Paolo Bonzini
{
47 fc97a652 Paolo Bonzini
    SetEvent(e->event);
48 fc97a652 Paolo Bonzini
    return 0;
49 fc97a652 Paolo Bonzini
}
50 fc97a652 Paolo Bonzini
51 fc97a652 Paolo Bonzini
int event_notifier_test_and_clear(EventNotifier *e)
52 fc97a652 Paolo Bonzini
{
53 fc97a652 Paolo Bonzini
    int ret = WaitForSingleObject(e->event, 0);
54 fc97a652 Paolo Bonzini
    if (ret == WAIT_OBJECT_0) {
55 fc97a652 Paolo Bonzini
        ResetEvent(e->event);
56 fc97a652 Paolo Bonzini
        return true;
57 fc97a652 Paolo Bonzini
    }
58 fc97a652 Paolo Bonzini
    return false;
59 fc97a652 Paolo Bonzini
}