/** * xenStoreClose: * @conn: pointer to the connection block * * Close the connection to the Xen hypervisor. * * Returns 0 in case of success or -1 in case of error. */ int xenStoreClose(virConnectPtr conn) { xenUnifiedPrivatePtr priv = conn->privateData; if (xenStoreRemoveWatch(conn, "@introduceDomain", "introduceDomain") < 0) { VIR_DEBUG("Warning, could not remove @introduceDomain watch"); /* not fatal */ } if (xenStoreRemoveWatch(conn, "@releaseDomain", "releaseDomain") < 0) { VIR_DEBUG("Warning, could not remove @releaseDomain watch"); /* not fatal */ } xenStoreWatchListFree(priv->xsWatchList); priv->xsWatchList = NULL; xenUnifiedDomainInfoListFree(priv->activeDomainList); priv->activeDomainList = NULL; if (priv->xshandle == NULL) return -1; if (priv->xsWatch != -1) virEventRemoveHandle(priv->xsWatch); xs_daemon_close(priv->xshandle); priv->xshandle = NULL; return 0; }
/** * xenInotifyClose: * @conn: pointer to the connection block * * Close and stop listening for inotify events * * Returns 0 in case of success or -1 in case of error. */ int xenInotifyClose(virConnectPtr conn) { xenUnifiedPrivatePtr priv = conn->privateData; if (priv->configInfoList) xenUnifiedDomainInfoListFree(priv->configInfoList); if (priv->inotifyWatch != -1) virEventRemoveHandle(priv->inotifyWatch); VIR_FORCE_CLOSE(priv->inotifyFD); return 0; }