41 lines
1.1 KiB
C
41 lines
1.1 KiB
C
|
/*
|
||
|
* Event loop with file descriptor polling
|
||
|
*
|
||
|
* Copyright 2012 IBM, Corp.
|
||
|
* Copyright 2012 Red Hat, Inc. and/or its affiliates
|
||
|
*
|
||
|
* Authors:
|
||
|
* Stefan Hajnoczi <stefanha@redhat.com>
|
||
|
*
|
||
|
* This work is licensed under the terms of the GNU GPL, version 2 or later.
|
||
|
* See the COPYING file in the top-level directory.
|
||
|
*
|
||
|
*/
|
||
|
|
||
|
#ifndef EVENT_POLL_H
|
||
|
#define EVENT_POLL_H
|
||
|
|
||
|
#include "qemu/event_notifier.h"
|
||
|
|
||
|
typedef struct EventHandler EventHandler;
|
||
|
typedef void EventCallback(EventHandler *handler);
|
||
|
struct EventHandler {
|
||
|
EventNotifier *notifier; /* eventfd */
|
||
|
EventCallback *callback; /* callback function */
|
||
|
};
|
||
|
|
||
|
typedef struct {
|
||
|
int epoll_fd; /* epoll(2) file descriptor */
|
||
|
EventNotifier stop_notifier; /* stop poll notifier */
|
||
|
EventHandler stop_handler; /* stop poll handler */
|
||
|
} EventPoll;
|
||
|
|
||
|
void event_poll_add(EventPoll *poll, EventHandler *handler,
|
||
|
EventNotifier *notifier, EventCallback *callback);
|
||
|
void event_poll_init(EventPoll *poll);
|
||
|
void event_poll_cleanup(EventPoll *poll);
|
||
|
void event_poll(EventPoll *poll);
|
||
|
void event_poll_notify(EventPoll *poll);
|
||
|
|
||
|
#endif /* EVENT_POLL_H */
|