mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-23 06:05:27 +00:00
Define remote wire protocol & impls for virDomainQemuAttach
This tweaks the RPC generator to cope with some naming conventions used for the QEMU specific APIs * daemon/remote.c: Server side dispatcher * src/remote/remote_driver.c: Client side dispatcher * src/remote/qemu_protocol.x: Wire protocol definition * src/rpc/gendispatch.pl: Use '$structprefix' in method names, fix QEMU flags and fix dispatcher method names
This commit is contained in:
parent
639f841346
commit
4403646001
@ -1,4 +1,5 @@
|
|||||||
daemon/libvirtd.c
|
daemon/libvirtd.c
|
||||||
|
daemon/qemu_dispatch.h
|
||||||
daemon/remote.c
|
daemon/remote.c
|
||||||
daemon/remote_dispatch.h
|
daemon/remote_dispatch.h
|
||||||
daemon/stream.c
|
daemon/stream.c
|
||||||
|
@ -12,3 +12,10 @@ struct qemu_monitor_command_args {
|
|||||||
struct qemu_monitor_command_ret {
|
struct qemu_monitor_command_ret {
|
||||||
remote_nonnull_string result;
|
remote_nonnull_string result;
|
||||||
};
|
};
|
||||||
|
struct qemu_domain_attach_args {
|
||||||
|
u_int pid;
|
||||||
|
u_int flags;
|
||||||
|
};
|
||||||
|
struct qemu_domain_attach_ret {
|
||||||
|
remote_nonnull_domain dom;
|
||||||
|
};
|
||||||
|
@ -37,6 +37,16 @@ struct qemu_monitor_command_ret {
|
|||||||
remote_nonnull_string result;
|
remote_nonnull_string result;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
struct qemu_domain_attach_args {
|
||||||
|
unsigned int pid;
|
||||||
|
unsigned int flags;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct qemu_domain_attach_ret {
|
||||||
|
remote_nonnull_domain dom;
|
||||||
|
};
|
||||||
|
|
||||||
/* Define the program number, protocol version and procedure numbers here. */
|
/* Define the program number, protocol version and procedure numbers here. */
|
||||||
const QEMU_PROGRAM = 0x20008087;
|
const QEMU_PROGRAM = 0x20008087;
|
||||||
const QEMU_PROTOCOL_VERSION = 1;
|
const QEMU_PROTOCOL_VERSION = 1;
|
||||||
@ -45,5 +55,6 @@ enum qemu_procedure {
|
|||||||
/* Each function must have a two-word comment. The first word is
|
/* Each function must have a two-word comment. The first word is
|
||||||
* whether remote_generator.pl handles daemon, the second whether
|
* whether remote_generator.pl handles daemon, the second whether
|
||||||
* it handles src/remote. */
|
* it handles src/remote. */
|
||||||
QEMU_PROC_MONITOR_COMMAND = 1 /* skipgen skipgen */
|
QEMU_PROC_MONITOR_COMMAND = 1, /* skipgen skipgen */
|
||||||
|
QEMU_PROC_DOMAIN_ATTACH = 2 /* autogen autogen */
|
||||||
};
|
};
|
||||||
|
@ -4237,6 +4237,7 @@ static virDriver remote_driver = {
|
|||||||
.domainRevertToSnapshot = remoteDomainRevertToSnapshot, /* 0.8.0 */
|
.domainRevertToSnapshot = remoteDomainRevertToSnapshot, /* 0.8.0 */
|
||||||
.domainSnapshotDelete = remoteDomainSnapshotDelete, /* 0.8.0 */
|
.domainSnapshotDelete = remoteDomainSnapshotDelete, /* 0.8.0 */
|
||||||
.qemuDomainMonitorCommand = remoteQemuDomainMonitorCommand, /* 0.8.3 */
|
.qemuDomainMonitorCommand = remoteQemuDomainMonitorCommand, /* 0.8.3 */
|
||||||
|
.qemuDomainAttach = qemuDomainAttach, /* 0.9.4 */
|
||||||
.domainOpenConsole = remoteDomainOpenConsole, /* 0.8.6 */
|
.domainOpenConsole = remoteDomainOpenConsole, /* 0.8.6 */
|
||||||
.domainInjectNMI = remoteDomainInjectNMI, /* 0.9.2 */
|
.domainInjectNMI = remoteDomainInjectNMI, /* 0.9.2 */
|
||||||
.domainMigrateBegin3 = remoteDomainMigrateBegin3, /* 0.9.2 */
|
.domainMigrateBegin3 = remoteDomainMigrateBegin3, /* 0.9.2 */
|
||||||
|
@ -821,6 +821,8 @@ elsif ($opt_b) {
|
|||||||
$proc_name = "ConnectBaselineCPU"
|
$proc_name = "ConnectBaselineCPU"
|
||||||
} elsif ($call->{ProcName} eq "CPUCompare") {
|
} elsif ($call->{ProcName} eq "CPUCompare") {
|
||||||
$proc_name = "ConnectCompareCPU"
|
$proc_name = "ConnectCompareCPU"
|
||||||
|
} elsif ($structprefix eq "qemu" && $call->{ProcName} =~ /^Domain/) {
|
||||||
|
$proc_name =~ s/^(Domain)/${1}Qemu/;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($single_ret_as_list) {
|
if ($single_ret_as_list) {
|
||||||
@ -1323,7 +1325,7 @@ elsif ($opt_k) {
|
|||||||
# print function
|
# print function
|
||||||
print "\n";
|
print "\n";
|
||||||
print "static $single_ret_type\n";
|
print "static $single_ret_type\n";
|
||||||
print "remote$call->{ProcName}(";
|
print "$structprefix$call->{ProcName}(";
|
||||||
|
|
||||||
print join(", ", @args_list);
|
print join(", ", @args_list);
|
||||||
|
|
||||||
@ -1417,8 +1419,13 @@ elsif ($opt_k) {
|
|||||||
print " memset(&ret, 0, sizeof ret);\n";
|
print " memset(&ret, 0, sizeof ret);\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
my $callflags = "0";
|
||||||
|
if ($structprefix eq "qemu") {
|
||||||
|
$callflags = "REMOTE_CALL_QEMU";
|
||||||
|
}
|
||||||
|
|
||||||
print "\n";
|
print "\n";
|
||||||
print " if (call($priv_src, priv, 0, ${procprefix}_PROC_$call->{UC_NAME},\n";
|
print " if (call($priv_src, priv, $callflags, ${procprefix}_PROC_$call->{UC_NAME},\n";
|
||||||
print " (xdrproc_t)xdr_$argtype, (char *)$call_args,\n";
|
print " (xdrproc_t)xdr_$argtype, (char *)$call_args,\n";
|
||||||
print " (xdrproc_t)xdr_$rettype, (char *)$call_ret) == -1) {\n";
|
print " (xdrproc_t)xdr_$rettype, (char *)$call_ret) == -1) {\n";
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user