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 | } |