ctx->osevent_hooks = 0;
+ ctx->poller_app = 0;
LIBXL_LIST_INIT(&ctx->pollers_event);
LIBXL_LIST_INIT(&ctx->pollers_idle);
rc = libxl__atfork_init(ctx);
if (rc) goto out;
- rc = libxl__poller_init(ctx, &ctx->poller_app);
- if (rc) goto out;
+ ctx->poller_app = libxl__poller_get(ctx);
+ if (!ctx->poller_app) {
+ rc = ERROR_FAIL;
+ goto out;
+ }
if ( stat(XENSTORE_PID_FILE, &stat_buf) != 0 ) {
LIBXL__LOG_ERRNO(ctx, LIBXL__LOG_ERROR, "Is xenstore daemon running?\n"
libxl_version_info_dispose(&ctx->version_info);
if (ctx->xsh) xs_daemon_close(ctx->xsh);
- libxl__poller_dispose(&ctx->poller_app);
+ libxl__poller_put(ctx, ctx->poller_app);
+ ctx->poller_app = NULL;
assert(LIBXL_LIST_EMPTY(&ctx->pollers_event));
libxl__poller *poller, *poller_tmp;
LIBXL_LIST_FOREACH_SAFE(poller, &ctx->pollers_idle, entry, poller_tmp) {
{
EGC_INIT(ctx);
CTX_LOCK;
- int rc = beforepoll_internal(gc, &ctx->poller_app,
+ int rc = beforepoll_internal(gc, ctx->poller_app,
nfds_io, fds, timeout_upd, now);
CTX_UNLOCK;
EGC_FREE;
{
EGC_INIT(ctx);
CTX_LOCK;
- afterpoll_internal(egc, &ctx->poller_app, nfds, fds, now);
+ afterpoll_internal(egc, ctx->poller_app, nfds, fds, now);
CTX_UNLOCK;
EGC_FREE;
}
/* See the comment for OSEVENT_HOOK_INTERN in libxl_event.c
* for restrictions on the use of the osevent fields. */
- libxl__poller poller_app; /* libxl_osevent_beforepoll and _afterpoll */
+ libxl__poller *poller_app; /* libxl_osevent_beforepoll and _afterpoll */
LIBXL_LIST_HEAD(, libxl__poller) pollers_event, pollers_idle;
LIBXL_SLIST_HEAD(libxl__osevent_hook_nexi, libxl__osevent_hook_nexus)