virDomainObjPtr dom = obj;
VIR_DEBUG("obj=%p", dom);
+ virCondDestroy(&dom->cond);
virDomainDefFree(dom->def);
virDomainDefFree(dom->newDef);
if (!(domain = virObjectLockableNew(virDomainObjClass)))
return NULL;
+ if (virCondInit(&domain->cond) < 0) {
+ virReportSystemError(errno, "%s",
+ _("failed to initialize domain condition"));
+ goto error;
+ }
+
if (xmlopt->privateData.alloc) {
if (!(domain->privateData = (xmlopt->privateData.alloc)()))
goto error;
}
+void
+virDomainObjSignal(virDomainObjPtr vm)
+{
+ virCondSignal(&vm->cond);
+}
+
+
+void
+virDomainObjBroadcast(virDomainObjPtr vm)
+{
+ virCondBroadcast(&vm->cond);
+}
+
+
+int
+virDomainObjWait(virDomainObjPtr vm)
+{
+ if (virCondWait(&vm->cond, &vm->parent.lock) < 0) {
+ virReportSystemError(errno, "%s",
+ _("failed to wait for domain condition"));
+ return -1;
+ }
+ return 0;
+}
+
+
+int
+virDomainObjWaitUntil(virDomainObjPtr vm,
+ unsigned long long whenms)
+{
+ if (virCondWaitUntil(&vm->cond, &vm->parent.lock, whenms) < 0 &&
+ errno != ETIMEDOUT) {
+ virReportSystemError(errno, "%s",
+ _("failed to wait for domain condition"));
+ return -1;
+ }
+ return 0;
+}
+
+
/*
*
* If flags & VIR_DOMAIN_OBJ_LIST_ADD_CHECK_LIVE then
typedef virDomainObj *virDomainObjPtr;
struct _virDomainObj {
virObjectLockable parent;
+ virCond cond;
pid_t pid;
virDomainStateReason state;
bool virDomainObjTaint(virDomainObjPtr obj,
virDomainTaintFlags taint);
+void virDomainObjSignal(virDomainObjPtr vm);
+void virDomainObjBroadcast(virDomainObjPtr vm);
+int virDomainObjWait(virDomainObjPtr vm);
+int virDomainObjWaitUntil(virDomainObjPtr vm,
+ unsigned long long whenms);
int virDomainDefCheckUnsupportedMemoryHotplug(virDomainDefPtr def);
int virDomainDeviceDefCheckUnsupportedMemoryDevice(virDomainDeviceDefPtr dev);
virDomainNostateReasonTypeFromString;
virDomainNostateReasonTypeToString;
virDomainObjAssignDef;
+virDomainObjBroadcast;
virDomainObjCopyPersistentDef;
virDomainObjEndAPI;
virDomainObjFormat;
virDomainObjSetDefTransient;
virDomainObjSetMetadata;
virDomainObjSetState;
+virDomainObjSignal;
virDomainObjTaint;
virDomainObjUpdateModificationImpact;
+virDomainObjWait;
+virDomainObjWaitUntil;
virDomainOSTypeFromString;
virDomainOSTypeToString;
virDomainParseMemory;