Signed-off-by: Chunyan Liu <cyliu(a)suse.com>
---
Changes:
* change args 'key' from 'remote_nonnull_string' to 'char'
* add code to gendispatch.pl to handle 'char|unsigned char' type
* update remote_protocol-strcuts
src/remote/remote_driver.c | 1 +
src/remote/remote_protocol.x | 14 +++++++++++++-
src/remote_protocol-structs | 6 ++++++
src/rpc/gendispatch.pl | 12 ++++++++++++
4 files changed, 32 insertions(+), 1 deletion(-)
diff --git a/src/remote/remote_driver.c b/src/remote/remote_driver.c
index 999f16d..b24de5c 100644
--- a/src/remote/remote_driver.c
+++ b/src/remote/remote_driver.c
@@ -8285,6 +8285,7 @@ static virHypervisorDriver hypervisor_driver = {
.connectGetAllDomainStats = remoteConnectGetAllDomainStats, /* 1.2.8 */
.nodeAllocPages = remoteNodeAllocPages, /* 1.2.9 */
.domainGetFSInfo = remoteDomainGetFSInfo, /* 1.2.11 */
+ .domainSendSysrq = remoteDomainSendSysrq, /* 1.2.12 */
};
static virNetworkDriver network_driver = {
diff --git a/src/remote/remote_protocol.x b/src/remote/remote_protocol.x
index cbd3ec7..708983c 100644
--- a/src/remote/remote_protocol.x
+++ b/src/remote/remote_protocol.x
@@ -1084,6 +1084,12 @@ struct remote_domain_send_key_args {
unsigned int flags;
};
+struct remote_domain_send_sysrq_args {
+ remote_nonnull_domain dom;
+ char key;
+ unsigned int flags;
+};
+
struct remote_domain_send_process_signal_args {
remote_nonnull_domain dom;
hyper pid_value;
@@ -5550,5 +5556,11 @@ enum remote_procedure {
* @generate: none
* @acl: domain:fs_freeze
*/
- REMOTE_PROC_DOMAIN_GET_FSINFO = 349
+ REMOTE_PROC_DOMAIN_GET_FSINFO = 349,
+
+ /**
+ * @generate: both
+ * @acl: domain:send_input
+ */
+ REMOTE_PROC_DOMAIN_SEND_SYSRQ = 350
};
diff --git a/src/remote_protocol-structs b/src/remote_protocol-structs
index 2907fd5..afd9a8d 100644
--- a/src/remote_protocol-structs
+++ b/src/remote_protocol-structs
@@ -2605,6 +2605,11 @@ struct remote_domain_get_fsinfo_ret {
} info;
u_int ret;
};
+struct remote_domain_send_sysrq_args {
+ remote_nonnull_domain dom;
+ char key;
+ unsigned int flags;
+};
enum remote_procedure {
REMOTE_PROC_CONNECT_OPEN = 1,
REMOTE_PROC_CONNECT_CLOSE = 2,
@@ -2955,4 +2960,5 @@ enum remote_procedure {
REMOTE_PROC_NODE_ALLOC_PAGES = 347,
REMOTE_PROC_DOMAIN_EVENT_CALLBACK_AGENT_LIFECYCLE = 348,
REMOTE_PROC_DOMAIN_GET_FSINFO = 349,
+ REMOTE_PROC_DOMAIN_SEND_SYSRQ = 350,
};
diff --git a/src/rpc/gendispatch.pl b/src/rpc/gendispatch.pl
index 0dc167a..cafe5ab 100755
--- a/src/rpc/gendispatch.pl
+++ b/src/rpc/gendispatch.pl
@@ -592,6 +592,12 @@ elsif ($mode eq "server") {
} else {
push(@args_list, "args->$arg_name");
}
+ } elsif ($args_member =~ m/^(unsigned )?char (\S+);/) {
+ if (! @args_list) {
+ push(@args_list, "priv->conn");
+ }
+
+ push(@args_list, "args->$2");
} elsif ($args_member =~ m/^(\/)?\*/) {
# ignore comments
} else {
@@ -1228,6 +1234,12 @@ elsif ($mode eq "client") {
push(@args_list, "$type_name $arg_name");
push(@setters_list, "args.$arg_name = $arg_name;");
+ } elsif ($args_member =~ m/^((?:unsigned )?char) (\S+);/) {
+ my $type_name = $1;
+ my $arg_name = $2;
+
+ push(@args_list, "$type_name $arg_name");
+ push(@setters_list, "args.$arg_name = $arg_name;");
} elsif ($args_member =~ m/^(\/)?\*/) {
# ignore comments
} else {
--
1.8.4.5