提交 809ee6ba 编写于 作者: J Jiri Denemark

qemu: Avoid using global qemu_driver in event handlers

We will have to pass a mock-up of the driver when testing monitor
events.
上级 6ac7cc8e
...@@ -2354,7 +2354,8 @@ cleanup: ...@@ -2354,7 +2354,8 @@ cleanup:
static void virQEMUCapsMonitorNotify(qemuMonitorPtr mon ATTRIBUTE_UNUSED, static void virQEMUCapsMonitorNotify(qemuMonitorPtr mon ATTRIBUTE_UNUSED,
virDomainObjPtr vm ATTRIBUTE_UNUSED) virDomainObjPtr vm ATTRIBUTE_UNUSED,
void *opaque ATTRIBUTE_UNUSED)
{ {
} }
...@@ -2546,7 +2547,7 @@ virQEMUCapsInitQMP(virQEMUCapsPtr qemuCaps, ...@@ -2546,7 +2547,7 @@ virQEMUCapsInitQMP(virQEMUCapsPtr qemuCaps,
memset(&vm, 0, sizeof(vm)); memset(&vm, 0, sizeof(vm));
vm.pid = pid; vm.pid = pid;
if (!(mon = qemuMonitorOpen(&vm, &config, true, &callbacks))) { if (!(mon = qemuMonitorOpen(&vm, &config, true, &callbacks, NULL))) {
ret = 0; ret = 0;
goto cleanup; goto cleanup;
} }
......
...@@ -61,6 +61,7 @@ struct _qemuMonitor { ...@@ -61,6 +61,7 @@ struct _qemuMonitor {
virDomainObjPtr vm; virDomainObjPtr vm;
qemuMonitorCallbacksPtr cb; qemuMonitorCallbacksPtr cb;
void *callbackOpaque;
/* If there's a command being processed this will be /* If there's a command being processed this will be
* non-NULL */ * non-NULL */
...@@ -248,7 +249,7 @@ static void qemuMonitorDispose(void *obj) ...@@ -248,7 +249,7 @@ static void qemuMonitorDispose(void *obj)
VIR_DEBUG("mon=%p", mon); VIR_DEBUG("mon=%p", mon);
if (mon->cb && mon->cb->destroy) if (mon->cb && mon->cb->destroy)
(mon->cb->destroy)(mon, mon->vm); (mon->cb->destroy)(mon, mon->vm, mon->callbackOpaque);
virCondDestroy(&mon->notify); virCondDestroy(&mon->notify);
VIR_FREE(mon->buffer); VIR_FREE(mon->buffer);
virJSONValueFree(mon->options); virJSONValueFree(mon->options);
...@@ -668,7 +669,7 @@ qemuMonitorIO(int watch, int fd, int events, void *opaque) { ...@@ -668,7 +669,7 @@ qemuMonitorIO(int watch, int fd, int events, void *opaque) {
virObjectUnlock(mon); virObjectUnlock(mon);
virObjectUnref(mon); virObjectUnref(mon);
VIR_DEBUG("Triggering EOF callback"); VIR_DEBUG("Triggering EOF callback");
(eofNotify)(mon, vm); (eofNotify)(mon, vm, mon->callbackOpaque);
} else if (error) { } else if (error) {
qemuMonitorErrorNotifyCallback errorNotify = mon->cb->errorNotify; qemuMonitorErrorNotifyCallback errorNotify = mon->cb->errorNotify;
virDomainObjPtr vm = mon->vm; virDomainObjPtr vm = mon->vm;
...@@ -678,7 +679,7 @@ qemuMonitorIO(int watch, int fd, int events, void *opaque) { ...@@ -678,7 +679,7 @@ qemuMonitorIO(int watch, int fd, int events, void *opaque) {
virObjectUnlock(mon); virObjectUnlock(mon);
virObjectUnref(mon); virObjectUnref(mon);
VIR_DEBUG("Triggering error callback"); VIR_DEBUG("Triggering error callback");
(errorNotify)(mon, vm); (errorNotify)(mon, vm, mon->callbackOpaque);
} else { } else {
virObjectUnlock(mon); virObjectUnlock(mon);
virObjectUnref(mon); virObjectUnref(mon);
...@@ -691,7 +692,8 @@ qemuMonitorOpenInternal(virDomainObjPtr vm, ...@@ -691,7 +692,8 @@ qemuMonitorOpenInternal(virDomainObjPtr vm,
int fd, int fd,
bool hasSendFD, bool hasSendFD,
bool json, bool json,
qemuMonitorCallbacksPtr cb) qemuMonitorCallbacksPtr cb,
void *opaque)
{ {
qemuMonitorPtr mon; qemuMonitorPtr mon;
...@@ -725,6 +727,7 @@ qemuMonitorOpenInternal(virDomainObjPtr vm, ...@@ -725,6 +727,7 @@ qemuMonitorOpenInternal(virDomainObjPtr vm,
if (json) if (json)
mon->waitGreeting = true; mon->waitGreeting = true;
mon->cb = cb; mon->cb = cb;
mon->callbackOpaque = opaque;
if (virSetCloseExec(mon->fd) < 0) { if (virSetCloseExec(mon->fd) < 0) {
virReportError(VIR_ERR_INTERNAL_ERROR, virReportError(VIR_ERR_INTERNAL_ERROR,
...@@ -778,7 +781,8 @@ qemuMonitorPtr ...@@ -778,7 +781,8 @@ qemuMonitorPtr
qemuMonitorOpen(virDomainObjPtr vm, qemuMonitorOpen(virDomainObjPtr vm,
virDomainChrSourceDefPtr config, virDomainChrSourceDefPtr config,
bool json, bool json,
qemuMonitorCallbacksPtr cb) qemuMonitorCallbacksPtr cb,
void *opaque)
{ {
int fd; int fd;
bool hasSendFD = false; bool hasSendFD = false;
...@@ -803,7 +807,7 @@ qemuMonitorOpen(virDomainObjPtr vm, ...@@ -803,7 +807,7 @@ qemuMonitorOpen(virDomainObjPtr vm,
return NULL; return NULL;
} }
ret = qemuMonitorOpenInternal(vm, fd, hasSendFD, json, cb); ret = qemuMonitorOpenInternal(vm, fd, hasSendFD, json, cb, opaque);
if (!ret) if (!ret)
VIR_FORCE_CLOSE(fd); VIR_FORCE_CLOSE(fd);
return ret; return ret;
...@@ -813,9 +817,10 @@ qemuMonitorOpen(virDomainObjPtr vm, ...@@ -813,9 +817,10 @@ qemuMonitorOpen(virDomainObjPtr vm,
qemuMonitorPtr qemuMonitorOpenFD(virDomainObjPtr vm, qemuMonitorPtr qemuMonitorOpenFD(virDomainObjPtr vm,
int sockfd, int sockfd,
bool json, bool json,
qemuMonitorCallbacksPtr cb) qemuMonitorCallbacksPtr cb,
void *opaque)
{ {
return qemuMonitorOpenInternal(vm, sockfd, true, json, cb); return qemuMonitorOpenInternal(vm, sockfd, true, json, cb, opaque);
} }
...@@ -1068,7 +1073,8 @@ cleanup: ...@@ -1068,7 +1073,8 @@ cleanup:
virObjectRef(mon); \ virObjectRef(mon); \
virObjectUnlock(mon); \ virObjectUnlock(mon); \
if ((mon)->cb && (mon)->cb->callback) \ if ((mon)->cb && (mon)->cb->callback) \
(ret) = ((mon)->cb->callback)(mon, __VA_ARGS__); \ (ret) = (mon)->cb->callback(mon, __VA_ARGS__, \
(mon)->callbackOpaque); \
virObjectLock(mon); \ virObjectLock(mon); \
virObjectUnref(mon); \ virObjectUnref(mon); \
} while (0) } while (0)
......
...@@ -69,11 +69,14 @@ struct _qemuMonitorMessage { ...@@ -69,11 +69,14 @@ struct _qemuMonitorMessage {
typedef void (*qemuMonitorDestroyCallback)(qemuMonitorPtr mon, typedef void (*qemuMonitorDestroyCallback)(qemuMonitorPtr mon,
virDomainObjPtr vm); virDomainObjPtr vm,
void *opaque);
typedef void (*qemuMonitorEofNotifyCallback)(qemuMonitorPtr mon, typedef void (*qemuMonitorEofNotifyCallback)(qemuMonitorPtr mon,
virDomainObjPtr vm); virDomainObjPtr vm,
void *opaque);
typedef void (*qemuMonitorErrorNotifyCallback)(qemuMonitorPtr mon, typedef void (*qemuMonitorErrorNotifyCallback)(qemuMonitorPtr mon,
virDomainObjPtr vm); virDomainObjPtr vm,
void *opaque);
/* XXX we'd really like to avoid virConnectPtr here /* XXX we'd really like to avoid virConnectPtr here
* It is required so the callback can find the active * It is required so the callback can find the active
* secret driver. Need to change this to work like the * secret driver. Need to change this to work like the
...@@ -84,28 +87,37 @@ typedef int (*qemuMonitorDiskSecretLookupCallback)(qemuMonitorPtr mon, ...@@ -84,28 +87,37 @@ typedef int (*qemuMonitorDiskSecretLookupCallback)(qemuMonitorPtr mon,
virDomainObjPtr vm, virDomainObjPtr vm,
const char *path, const char *path,
char **secret, char **secret,
size_t *secretLen); size_t *secretLen,
void *opaque);
typedef int (*qemuMonitorDomainShutdownCallback)(qemuMonitorPtr mon, typedef int (*qemuMonitorDomainShutdownCallback)(qemuMonitorPtr mon,
virDomainObjPtr vm); virDomainObjPtr vm,
void *opaque);
typedef int (*qemuMonitorDomainResetCallback)(qemuMonitorPtr mon, typedef int (*qemuMonitorDomainResetCallback)(qemuMonitorPtr mon,
virDomainObjPtr vm); virDomainObjPtr vm,
void *opaque);
typedef int (*qemuMonitorDomainPowerdownCallback)(qemuMonitorPtr mon, typedef int (*qemuMonitorDomainPowerdownCallback)(qemuMonitorPtr mon,
virDomainObjPtr vm); virDomainObjPtr vm,
void *opaque);
typedef int (*qemuMonitorDomainStopCallback)(qemuMonitorPtr mon, typedef int (*qemuMonitorDomainStopCallback)(qemuMonitorPtr mon,
virDomainObjPtr vm); virDomainObjPtr vm,
void *opaque);
typedef int (*qemuMonitorDomainResumeCallback)(qemuMonitorPtr mon, typedef int (*qemuMonitorDomainResumeCallback)(qemuMonitorPtr mon,
virDomainObjPtr vm); virDomainObjPtr vm,
void *opaque);
typedef int (*qemuMonitorDomainRTCChangeCallback)(qemuMonitorPtr mon, typedef int (*qemuMonitorDomainRTCChangeCallback)(qemuMonitorPtr mon,
virDomainObjPtr vm, virDomainObjPtr vm,
long long offset); long long offset,
void *opaque);
typedef int (*qemuMonitorDomainWatchdogCallback)(qemuMonitorPtr mon, typedef int (*qemuMonitorDomainWatchdogCallback)(qemuMonitorPtr mon,
virDomainObjPtr vm, virDomainObjPtr vm,
int action); int action,
void *opaque);
typedef int (*qemuMonitorDomainIOErrorCallback)(qemuMonitorPtr mon, typedef int (*qemuMonitorDomainIOErrorCallback)(qemuMonitorPtr mon,
virDomainObjPtr vm, virDomainObjPtr vm,
const char *diskAlias, const char *diskAlias,
int action, int action,
const char *reason); const char *reason,
void *opaque);
typedef int (*qemuMonitorDomainGraphicsCallback)(qemuMonitorPtr mon, typedef int (*qemuMonitorDomainGraphicsCallback)(qemuMonitorPtr mon,
virDomainObjPtr vm, virDomainObjPtr vm,
int phase, int phase,
...@@ -117,30 +129,39 @@ typedef int (*qemuMonitorDomainGraphicsCallback)(qemuMonitorPtr mon, ...@@ -117,30 +129,39 @@ typedef int (*qemuMonitorDomainGraphicsCallback)(qemuMonitorPtr mon,
const char *remoteService, const char *remoteService,
const char *authScheme, const char *authScheme,
const char *x509dname, const char *x509dname,
const char *saslUsername); const char *saslUsername,
void *opaque);
typedef int (*qemuMonitorDomainBlockJobCallback)(qemuMonitorPtr mon, typedef int (*qemuMonitorDomainBlockJobCallback)(qemuMonitorPtr mon,
virDomainObjPtr vm, virDomainObjPtr vm,
const char *diskAlias, const char *diskAlias,
int type, int type,
int status); int status,
void *opaque);
typedef int (*qemuMonitorDomainTrayChangeCallback)(qemuMonitorPtr mon, typedef int (*qemuMonitorDomainTrayChangeCallback)(qemuMonitorPtr mon,
virDomainObjPtr vm, virDomainObjPtr vm,
const char *devAlias, const char *devAlias,
int reason); int reason,
void *opaque);
typedef int (*qemuMonitorDomainPMWakeupCallback)(qemuMonitorPtr mon, typedef int (*qemuMonitorDomainPMWakeupCallback)(qemuMonitorPtr mon,
virDomainObjPtr vm); virDomainObjPtr vm,
void *opaque);
typedef int (*qemuMonitorDomainPMSuspendCallback)(qemuMonitorPtr mon, typedef int (*qemuMonitorDomainPMSuspendCallback)(qemuMonitorPtr mon,
virDomainObjPtr vm); virDomainObjPtr vm,
void *opaque);
typedef int (*qemuMonitorDomainBalloonChangeCallback)(qemuMonitorPtr mon, typedef int (*qemuMonitorDomainBalloonChangeCallback)(qemuMonitorPtr mon,
virDomainObjPtr vm, virDomainObjPtr vm,
unsigned long long actual); unsigned long long actual,
void *opaque);
typedef int (*qemuMonitorDomainPMSuspendDiskCallback)(qemuMonitorPtr mon, typedef int (*qemuMonitorDomainPMSuspendDiskCallback)(qemuMonitorPtr mon,
virDomainObjPtr vm); virDomainObjPtr vm,
void *opaque);
typedef int (*qemuMonitorDomainGuestPanicCallback)(qemuMonitorPtr mon, typedef int (*qemuMonitorDomainGuestPanicCallback)(qemuMonitorPtr mon,
virDomainObjPtr vm); virDomainObjPtr vm,
void *opaque);
typedef int (*qemuMonitorDomainDeviceDeletedCallback)(qemuMonitorPtr mon, typedef int (*qemuMonitorDomainDeviceDeletedCallback)(qemuMonitorPtr mon,
virDomainObjPtr vm, virDomainObjPtr vm,
const char *devAlias); const char *devAlias,
void *opaque);
typedef struct _qemuMonitorCallbacks qemuMonitorCallbacks; typedef struct _qemuMonitorCallbacks qemuMonitorCallbacks;
typedef qemuMonitorCallbacks *qemuMonitorCallbacksPtr; typedef qemuMonitorCallbacks *qemuMonitorCallbacksPtr;
...@@ -174,12 +195,14 @@ char *qemuMonitorUnescapeArg(const char *in); ...@@ -174,12 +195,14 @@ char *qemuMonitorUnescapeArg(const char *in);
qemuMonitorPtr qemuMonitorOpen(virDomainObjPtr vm, qemuMonitorPtr qemuMonitorOpen(virDomainObjPtr vm,
virDomainChrSourceDefPtr config, virDomainChrSourceDefPtr config,
bool json, bool json,
qemuMonitorCallbacksPtr cb) qemuMonitorCallbacksPtr cb,
void *opaque)
ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_NONNULL(4); ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_NONNULL(4);
qemuMonitorPtr qemuMonitorOpenFD(virDomainObjPtr vm, qemuMonitorPtr qemuMonitorOpenFD(virDomainObjPtr vm,
int sockfd, int sockfd,
bool json, bool json,
qemuMonitorCallbacksPtr cb) qemuMonitorCallbacksPtr cb,
void *opaque)
ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(4); ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(4);
void qemuMonitorClose(qemuMonitorPtr mon); void qemuMonitorClose(qemuMonitorPtr mon);
......
...@@ -280,9 +280,10 @@ cleanup: ...@@ -280,9 +280,10 @@ cleanup:
*/ */
static void static void
qemuProcessHandleMonitorEOF(qemuMonitorPtr mon ATTRIBUTE_UNUSED, qemuProcessHandleMonitorEOF(qemuMonitorPtr mon ATTRIBUTE_UNUSED,
virDomainObjPtr vm) virDomainObjPtr vm,
void *opaque)
{ {
virQEMUDriverPtr driver = qemu_driver; virQEMUDriverPtr driver = opaque;
virDomainEventPtr event = NULL; virDomainEventPtr event = NULL;
qemuDomainObjPrivatePtr priv; qemuDomainObjPrivatePtr priv;
int eventReason = VIR_DOMAIN_EVENT_STOPPED_SHUTDOWN; int eventReason = VIR_DOMAIN_EVENT_STOPPED_SHUTDOWN;
...@@ -341,9 +342,10 @@ cleanup: ...@@ -341,9 +342,10 @@ cleanup:
*/ */
static void static void
qemuProcessHandleMonitorError(qemuMonitorPtr mon ATTRIBUTE_UNUSED, qemuProcessHandleMonitorError(qemuMonitorPtr mon ATTRIBUTE_UNUSED,
virDomainObjPtr vm) virDomainObjPtr vm,
void *opaque)
{ {
virQEMUDriverPtr driver = qemu_driver; virQEMUDriverPtr driver = opaque;
virDomainEventPtr event = NULL; virDomainEventPtr event = NULL;
VIR_DEBUG("Received error on %p '%s'", vm, vm->def->name); VIR_DEBUG("Received error on %p '%s'", vm, vm->def->name);
...@@ -486,7 +488,8 @@ qemuProcessFindVolumeQcowPassphrase(qemuMonitorPtr mon ATTRIBUTE_UNUSED, ...@@ -486,7 +488,8 @@ qemuProcessFindVolumeQcowPassphrase(qemuMonitorPtr mon ATTRIBUTE_UNUSED,
virDomainObjPtr vm, virDomainObjPtr vm,
const char *path, const char *path,
char **secretRet, char **secretRet,
size_t *secretLen) size_t *secretLen,
void *opaque ATTRIBUTE_UNUSED)
{ {
virDomainDiskDefPtr disk; virDomainDiskDefPtr disk;
int ret = -1; int ret = -1;
...@@ -507,9 +510,10 @@ cleanup: ...@@ -507,9 +510,10 @@ cleanup:
static int static int
qemuProcessHandleReset(qemuMonitorPtr mon ATTRIBUTE_UNUSED, qemuProcessHandleReset(qemuMonitorPtr mon ATTRIBUTE_UNUSED,
virDomainObjPtr vm) virDomainObjPtr vm,
void *opaque)
{ {
virQEMUDriverPtr driver = qemu_driver; virQEMUDriverPtr driver = opaque;
virDomainEventPtr event; virDomainEventPtr event;
qemuDomainObjPrivatePtr priv; qemuDomainObjPrivatePtr priv;
...@@ -637,9 +641,10 @@ qemuProcessShutdownOrReboot(virQEMUDriverPtr driver, ...@@ -637,9 +641,10 @@ qemuProcessShutdownOrReboot(virQEMUDriverPtr driver,
static int static int
qemuProcessHandleShutdown(qemuMonitorPtr mon ATTRIBUTE_UNUSED, qemuProcessHandleShutdown(qemuMonitorPtr mon ATTRIBUTE_UNUSED,
virDomainObjPtr vm) virDomainObjPtr vm,
void *opaque)
{ {
virQEMUDriverPtr driver = qemu_driver; virQEMUDriverPtr driver = opaque;
qemuDomainObjPrivatePtr priv; qemuDomainObjPrivatePtr priv;
virDomainEventPtr event = NULL; virDomainEventPtr event = NULL;
virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver); virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver);
...@@ -691,9 +696,10 @@ unlock: ...@@ -691,9 +696,10 @@ unlock:
static int static int
qemuProcessHandleStop(qemuMonitorPtr mon ATTRIBUTE_UNUSED, qemuProcessHandleStop(qemuMonitorPtr mon ATTRIBUTE_UNUSED,
virDomainObjPtr vm) virDomainObjPtr vm,
void *opaque)
{ {
virQEMUDriverPtr driver = qemu_driver; virQEMUDriverPtr driver = opaque;
virDomainEventPtr event = NULL; virDomainEventPtr event = NULL;
virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver); virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver);
...@@ -737,9 +743,10 @@ unlock: ...@@ -737,9 +743,10 @@ unlock:
static int static int
qemuProcessHandleResume(qemuMonitorPtr mon ATTRIBUTE_UNUSED, qemuProcessHandleResume(qemuMonitorPtr mon ATTRIBUTE_UNUSED,
virDomainObjPtr vm) virDomainObjPtr vm,
void *opaque)
{ {
virQEMUDriverPtr driver = qemu_driver; virQEMUDriverPtr driver = opaque;
virDomainEventPtr event = NULL; virDomainEventPtr event = NULL;
virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver); virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver);
...@@ -790,9 +797,10 @@ unlock: ...@@ -790,9 +797,10 @@ unlock:
static int static int
qemuProcessHandleRTCChange(qemuMonitorPtr mon ATTRIBUTE_UNUSED, qemuProcessHandleRTCChange(qemuMonitorPtr mon ATTRIBUTE_UNUSED,
virDomainObjPtr vm, virDomainObjPtr vm,
long long offset) long long offset,
void *opaque)
{ {
virQEMUDriverPtr driver = qemu_driver; virQEMUDriverPtr driver = opaque;
virDomainEventPtr event = NULL; virDomainEventPtr event = NULL;
virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver); virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver);
...@@ -830,9 +838,10 @@ qemuProcessHandleRTCChange(qemuMonitorPtr mon ATTRIBUTE_UNUSED, ...@@ -830,9 +838,10 @@ qemuProcessHandleRTCChange(qemuMonitorPtr mon ATTRIBUTE_UNUSED,
static int static int
qemuProcessHandleWatchdog(qemuMonitorPtr mon ATTRIBUTE_UNUSED, qemuProcessHandleWatchdog(qemuMonitorPtr mon ATTRIBUTE_UNUSED,
virDomainObjPtr vm, virDomainObjPtr vm,
int action) int action,
void *opaque)
{ {
virQEMUDriverPtr driver = qemu_driver; virQEMUDriverPtr driver = opaque;
virDomainEventPtr watchdogEvent = NULL; virDomainEventPtr watchdogEvent = NULL;
virDomainEventPtr lifecycleEvent = NULL; virDomainEventPtr lifecycleEvent = NULL;
virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver); virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver);
...@@ -896,9 +905,10 @@ qemuProcessHandleIOError(qemuMonitorPtr mon ATTRIBUTE_UNUSED, ...@@ -896,9 +905,10 @@ qemuProcessHandleIOError(qemuMonitorPtr mon ATTRIBUTE_UNUSED,
virDomainObjPtr vm, virDomainObjPtr vm,
const char *diskAlias, const char *diskAlias,
int action, int action,
const char *reason) const char *reason,
void *opaque)
{ {
virQEMUDriverPtr driver = qemu_driver; virQEMUDriverPtr driver = opaque;
virDomainEventPtr ioErrorEvent = NULL; virDomainEventPtr ioErrorEvent = NULL;
virDomainEventPtr ioErrorEvent2 = NULL; virDomainEventPtr ioErrorEvent2 = NULL;
virDomainEventPtr lifecycleEvent = NULL; virDomainEventPtr lifecycleEvent = NULL;
...@@ -956,9 +966,10 @@ qemuProcessHandleBlockJob(qemuMonitorPtr mon ATTRIBUTE_UNUSED, ...@@ -956,9 +966,10 @@ qemuProcessHandleBlockJob(qemuMonitorPtr mon ATTRIBUTE_UNUSED,
virDomainObjPtr vm, virDomainObjPtr vm,
const char *diskAlias, const char *diskAlias,
int type, int type,
int status) int status,
void *opaque)
{ {
virQEMUDriverPtr driver = qemu_driver; virQEMUDriverPtr driver = opaque;
virDomainEventPtr event = NULL; virDomainEventPtr event = NULL;
const char *path; const char *path;
virDomainDiskDefPtr disk; virDomainDiskDefPtr disk;
...@@ -1008,9 +1019,10 @@ qemuProcessHandleGraphics(qemuMonitorPtr mon ATTRIBUTE_UNUSED, ...@@ -1008,9 +1019,10 @@ qemuProcessHandleGraphics(qemuMonitorPtr mon ATTRIBUTE_UNUSED,
const char *remoteService, const char *remoteService,
const char *authScheme, const char *authScheme,
const char *x509dname, const char *x509dname,
const char *saslUsername) const char *saslUsername,
void *opaque)
{ {
virQEMUDriverPtr driver = qemu_driver; virQEMUDriverPtr driver = opaque;
virDomainEventPtr event; virDomainEventPtr event;
virDomainEventGraphicsAddressPtr localAddr = NULL; virDomainEventGraphicsAddressPtr localAddr = NULL;
virDomainEventGraphicsAddressPtr remoteAddr = NULL; virDomainEventGraphicsAddressPtr remoteAddr = NULL;
...@@ -1084,7 +1096,8 @@ error: ...@@ -1084,7 +1096,8 @@ error:
static void qemuProcessHandleMonitorDestroy(qemuMonitorPtr mon ATTRIBUTE_UNUSED, static void qemuProcessHandleMonitorDestroy(qemuMonitorPtr mon ATTRIBUTE_UNUSED,
virDomainObjPtr vm) virDomainObjPtr vm,
void *opaque ATTRIBUTE_UNUSED)
{ {
virObjectUnref(vm); virObjectUnref(vm);
} }
...@@ -1093,9 +1106,10 @@ static int ...@@ -1093,9 +1106,10 @@ static int
qemuProcessHandleTrayChange(qemuMonitorPtr mon ATTRIBUTE_UNUSED, qemuProcessHandleTrayChange(qemuMonitorPtr mon ATTRIBUTE_UNUSED,
virDomainObjPtr vm, virDomainObjPtr vm,
const char *devAlias, const char *devAlias,
int reason) int reason,
void *opaque)
{ {
virQEMUDriverPtr driver = qemu_driver; virQEMUDriverPtr driver = opaque;
virDomainEventPtr event = NULL; virDomainEventPtr event = NULL;
virDomainDiskDefPtr disk; virDomainDiskDefPtr disk;
virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver); virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver);
...@@ -1128,9 +1142,10 @@ qemuProcessHandleTrayChange(qemuMonitorPtr mon ATTRIBUTE_UNUSED, ...@@ -1128,9 +1142,10 @@ qemuProcessHandleTrayChange(qemuMonitorPtr mon ATTRIBUTE_UNUSED,
static int static int
qemuProcessHandlePMWakeup(qemuMonitorPtr mon ATTRIBUTE_UNUSED, qemuProcessHandlePMWakeup(qemuMonitorPtr mon ATTRIBUTE_UNUSED,
virDomainObjPtr vm) virDomainObjPtr vm,
void *opaque)
{ {
virQEMUDriverPtr driver = qemu_driver; virQEMUDriverPtr driver = opaque;
virDomainEventPtr event = NULL; virDomainEventPtr event = NULL;
virDomainEventPtr lifecycleEvent = NULL; virDomainEventPtr lifecycleEvent = NULL;
virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver); virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver);
...@@ -1168,9 +1183,10 @@ qemuProcessHandlePMWakeup(qemuMonitorPtr mon ATTRIBUTE_UNUSED, ...@@ -1168,9 +1183,10 @@ qemuProcessHandlePMWakeup(qemuMonitorPtr mon ATTRIBUTE_UNUSED,
static int static int
qemuProcessHandlePMSuspend(qemuMonitorPtr mon ATTRIBUTE_UNUSED, qemuProcessHandlePMSuspend(qemuMonitorPtr mon ATTRIBUTE_UNUSED,
virDomainObjPtr vm) virDomainObjPtr vm,
void *opaque)
{ {
virQEMUDriverPtr driver = qemu_driver; virQEMUDriverPtr driver = opaque;
virDomainEventPtr event = NULL; virDomainEventPtr event = NULL;
virDomainEventPtr lifecycleEvent = NULL; virDomainEventPtr lifecycleEvent = NULL;
virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver); virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver);
...@@ -1212,9 +1228,10 @@ qemuProcessHandlePMSuspend(qemuMonitorPtr mon ATTRIBUTE_UNUSED, ...@@ -1212,9 +1228,10 @@ qemuProcessHandlePMSuspend(qemuMonitorPtr mon ATTRIBUTE_UNUSED,
static int static int
qemuProcessHandleBalloonChange(qemuMonitorPtr mon ATTRIBUTE_UNUSED, qemuProcessHandleBalloonChange(qemuMonitorPtr mon ATTRIBUTE_UNUSED,
virDomainObjPtr vm, virDomainObjPtr vm,
unsigned long long actual) unsigned long long actual,
void *opaque)
{ {
virQEMUDriverPtr driver = qemu_driver; virQEMUDriverPtr driver = opaque;
virDomainEventPtr event = NULL; virDomainEventPtr event = NULL;
virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver); virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver);
...@@ -1238,9 +1255,10 @@ qemuProcessHandleBalloonChange(qemuMonitorPtr mon ATTRIBUTE_UNUSED, ...@@ -1238,9 +1255,10 @@ qemuProcessHandleBalloonChange(qemuMonitorPtr mon ATTRIBUTE_UNUSED,
static int static int
qemuProcessHandlePMSuspendDisk(qemuMonitorPtr mon ATTRIBUTE_UNUSED, qemuProcessHandlePMSuspendDisk(qemuMonitorPtr mon ATTRIBUTE_UNUSED,
virDomainObjPtr vm) virDomainObjPtr vm,
void *opaque)
{ {
virQEMUDriverPtr driver = qemu_driver; virQEMUDriverPtr driver = opaque;
virDomainEventPtr event = NULL; virDomainEventPtr event = NULL;
virDomainEventPtr lifecycleEvent = NULL; virDomainEventPtr lifecycleEvent = NULL;
virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver); virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver);
...@@ -1283,9 +1301,10 @@ qemuProcessHandlePMSuspendDisk(qemuMonitorPtr mon ATTRIBUTE_UNUSED, ...@@ -1283,9 +1301,10 @@ qemuProcessHandlePMSuspendDisk(qemuMonitorPtr mon ATTRIBUTE_UNUSED,
static int static int
qemuProcessHandleGuestPanic(qemuMonitorPtr mon ATTRIBUTE_UNUSED, qemuProcessHandleGuestPanic(qemuMonitorPtr mon ATTRIBUTE_UNUSED,
virDomainObjPtr vm) virDomainObjPtr vm,
void *opaque)
{ {
virQEMUDriverPtr driver = qemu_driver; virQEMUDriverPtr driver = opaque;
struct qemuProcessEvent *processEvent; struct qemuProcessEvent *processEvent;
virObjectLock(vm); virObjectLock(vm);
...@@ -1316,9 +1335,10 @@ cleanup: ...@@ -1316,9 +1335,10 @@ cleanup:
static int static int
qemuProcessHandleDeviceDeleted(qemuMonitorPtr mon ATTRIBUTE_UNUSED, qemuProcessHandleDeviceDeleted(qemuMonitorPtr mon ATTRIBUTE_UNUSED,
virDomainObjPtr vm, virDomainObjPtr vm,
const char *devAlias) const char *devAlias,
void *opaque)
{ {
virQEMUDriverPtr driver = qemu_driver; virQEMUDriverPtr driver = opaque;
virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver); virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver);
virDomainDeviceDef dev; virDomainDeviceDef dev;
...@@ -1391,7 +1411,8 @@ qemuConnectMonitor(virQEMUDriverPtr driver, virDomainObjPtr vm) ...@@ -1391,7 +1411,8 @@ qemuConnectMonitor(virQEMUDriverPtr driver, virDomainObjPtr vm)
mon = qemuMonitorOpen(vm, mon = qemuMonitorOpen(vm,
priv->monConfig, priv->monConfig,
priv->monJSON, priv->monJSON,
&monitorCallbacks); &monitorCallbacks,
driver);
virObjectLock(vm); virObjectLock(vm);
priv->monStart = 0; priv->monStart = 0;
......
...@@ -708,14 +708,16 @@ error: ...@@ -708,14 +708,16 @@ error:
static void static void
qemuMonitorTestEOFNotify(qemuMonitorPtr mon ATTRIBUTE_UNUSED, qemuMonitorTestEOFNotify(qemuMonitorPtr mon ATTRIBUTE_UNUSED,
virDomainObjPtr vm ATTRIBUTE_UNUSED) virDomainObjPtr vm ATTRIBUTE_UNUSED,
void *opaque ATTRIBUTE_UNUSED)
{ {
} }
static void static void
qemuMonitorTestErrorNotify(qemuMonitorPtr mon ATTRIBUTE_UNUSED, qemuMonitorTestErrorNotify(qemuMonitorPtr mon ATTRIBUTE_UNUSED,
virDomainObjPtr vm ATTRIBUTE_UNUSED) virDomainObjPtr vm ATTRIBUTE_UNUSED,
void *opaque ATTRIBUTE_UNUSED)
{ {
} }
...@@ -870,7 +872,8 @@ qemuMonitorTestNew(bool json, virDomainXMLOptionPtr xmlopt) ...@@ -870,7 +872,8 @@ qemuMonitorTestNew(bool json, virDomainXMLOptionPtr xmlopt)
if (!(test->mon = qemuMonitorOpen(test->vm, if (!(test->mon = qemuMonitorOpen(test->vm,
&src, &src,
json, json,
&qemuMonitorTestCallbacks))) &qemuMonitorTestCallbacks,
NULL)))
goto error; goto error;
virObjectLock(test->mon); virObjectLock(test->mon);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册