mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-01-20 19:45:22 +00:00
remote generator: Replace tabs with spaces and rename file
No functional change included, just a whitespace change.
This commit is contained in:
parent
0d9936f622
commit
999f5b3ea6
@ -23,7 +23,7 @@ AVAHI_SOURCES = \
|
|||||||
|
|
||||||
DISTCLEANFILES =
|
DISTCLEANFILES =
|
||||||
EXTRA_DIST = \
|
EXTRA_DIST = \
|
||||||
remote_generate_stubs.pl \
|
remote_generator.pl \
|
||||||
libvirtd.conf \
|
libvirtd.conf \
|
||||||
libvirtd.init.in \
|
libvirtd.init.in \
|
||||||
libvirtd.upstart \
|
libvirtd.upstart \
|
||||||
@ -216,29 +216,29 @@ remote.h: \
|
|||||||
REMOTE_PROTOCOL = $(top_srcdir)/src/remote/remote_protocol.x
|
REMOTE_PROTOCOL = $(top_srcdir)/src/remote/remote_protocol.x
|
||||||
QEMU_PROTOCOL = $(top_srcdir)/src/remote/qemu_protocol.x
|
QEMU_PROTOCOL = $(top_srcdir)/src/remote/qemu_protocol.x
|
||||||
|
|
||||||
remote_dispatch_prototypes.h: $(srcdir)/remote_generate_stubs.pl $(REMOTE_PROTOCOL)
|
remote_dispatch_prototypes.h: $(srcdir)/remote_generator.pl $(REMOTE_PROTOCOL)
|
||||||
$(AM_V_GEN)perl -w $(srcdir)/remote_generate_stubs.pl -c -p remote $(REMOTE_PROTOCOL) > $@
|
$(AM_V_GEN)perl -w $(srcdir)/remote_generator.pl -c -p remote $(REMOTE_PROTOCOL) > $@
|
||||||
|
|
||||||
remote_dispatch_table.h: $(srcdir)/remote_generate_stubs.pl $(REMOTE_PROTOCOL)
|
remote_dispatch_table.h: $(srcdir)/remote_generator.pl $(REMOTE_PROTOCOL)
|
||||||
$(AM_V_GEN)perl -w $(srcdir)/remote_generate_stubs.pl -c -t remote $(REMOTE_PROTOCOL) > $@
|
$(AM_V_GEN)perl -w $(srcdir)/remote_generator.pl -c -t remote $(REMOTE_PROTOCOL) > $@
|
||||||
|
|
||||||
remote_dispatch_args.h: $(srcdir)/remote_generate_stubs.pl $(REMOTE_PROTOCOL)
|
remote_dispatch_args.h: $(srcdir)/remote_generator.pl $(REMOTE_PROTOCOL)
|
||||||
$(AM_V_GEN)perl -w $(srcdir)/remote_generate_stubs.pl -c -a remote $(REMOTE_PROTOCOL) > $@
|
$(AM_V_GEN)perl -w $(srcdir)/remote_generator.pl -c -a remote $(REMOTE_PROTOCOL) > $@
|
||||||
|
|
||||||
remote_dispatch_ret.h: $(srcdir)/remote_generate_stubs.pl $(REMOTE_PROTOCOL)
|
remote_dispatch_ret.h: $(srcdir)/remote_generator.pl $(REMOTE_PROTOCOL)
|
||||||
$(AM_V_GEN)perl -w $(srcdir)/remote_generate_stubs.pl -c -r remote $(REMOTE_PROTOCOL) > $@
|
$(AM_V_GEN)perl -w $(srcdir)/remote_generator.pl -c -r remote $(REMOTE_PROTOCOL) > $@
|
||||||
|
|
||||||
qemu_dispatch_prototypes.h: $(srcdir)/remote_generate_stubs.pl $(QEMU_PROTOCOL)
|
qemu_dispatch_prototypes.h: $(srcdir)/remote_generator.pl $(QEMU_PROTOCOL)
|
||||||
$(AM_V_GEN)perl -w $(srcdir)/remote_generate_stubs.pl -p qemu $(QEMU_PROTOCOL) > $@
|
$(AM_V_GEN)perl -w $(srcdir)/remote_generator.pl -p qemu $(QEMU_PROTOCOL) > $@
|
||||||
|
|
||||||
qemu_dispatch_table.h: $(srcdir)/remote_generate_stubs.pl $(QEMU_PROTOCOL)
|
qemu_dispatch_table.h: $(srcdir)/remote_generator.pl $(QEMU_PROTOCOL)
|
||||||
$(AM_V_GEN)perl -w $(srcdir)/remote_generate_stubs.pl -t qemu $(QEMU_PROTOCOL) > $@
|
$(AM_V_GEN)perl -w $(srcdir)/remote_generator.pl -t qemu $(QEMU_PROTOCOL) > $@
|
||||||
|
|
||||||
qemu_dispatch_args.h: $(srcdir)/remote_generate_stubs.pl $(QEMU_PROTOCOL)
|
qemu_dispatch_args.h: $(srcdir)/remote_generator.pl $(QEMU_PROTOCOL)
|
||||||
$(AM_V_GEN)perl -w $(srcdir)/remote_generate_stubs.pl -a qemu $(QEMU_PROTOCOL) > $@
|
$(AM_V_GEN)perl -w $(srcdir)/remote_generator.pl -a qemu $(QEMU_PROTOCOL) > $@
|
||||||
|
|
||||||
qemu_dispatch_ret.h: $(srcdir)/remote_generate_stubs.pl $(QEMU_PROTOCOL)
|
qemu_dispatch_ret.h: $(srcdir)/remote_generator.pl $(QEMU_PROTOCOL)
|
||||||
$(AM_V_GEN)perl -w $(srcdir)/remote_generate_stubs.pl -r qemu $(QEMU_PROTOCOL) > $@
|
$(AM_V_GEN)perl -w $(srcdir)/remote_generator.pl -r qemu $(QEMU_PROTOCOL) > $@
|
||||||
|
|
||||||
LOGROTATE_CONFS = libvirtd.qemu.logrotate libvirtd.lxc.logrotate \
|
LOGROTATE_CONFS = libvirtd.qemu.logrotate libvirtd.lxc.logrotate \
|
||||||
libvirtd.uml.logrotate libvirtd.logrotate
|
libvirtd.uml.logrotate libvirtd.logrotate
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* Automatically generated by remote_generate_stubs.pl.
|
/* Automatically generated by remote_generator.pl.
|
||||||
* Do not edit this file. Any changes you make will be lost.
|
* Do not edit this file. Any changes you make will be lost.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* Automatically generated by remote_generate_stubs.pl.
|
/* Automatically generated by remote_generator.pl.
|
||||||
* Do not edit this file. Any changes you make will be lost.
|
* Do not edit this file. Any changes you make will be lost.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* Automatically generated by remote_generate_stubs.pl.
|
/* Automatically generated by remote_generator.pl.
|
||||||
* Do not edit this file. Any changes you make will be lost.
|
* Do not edit this file. Any changes you make will be lost.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* Automatically generated by remote_generate_stubs.pl.
|
/* Automatically generated by remote_generator.pl.
|
||||||
* Do not edit this file. Any changes you make will be lost.
|
* Do not edit this file. Any changes you make will be lost.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* Automatically generated by remote_generate_stubs.pl.
|
/* Automatically generated by remote_generator.pl.
|
||||||
* Do not edit this file. Any changes you make will be lost.
|
* Do not edit this file. Any changes you make will be lost.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* Automatically generated by remote_generate_stubs.pl.
|
/* Automatically generated by remote_generator.pl.
|
||||||
* Do not edit this file. Any changes you make will be lost.
|
* Do not edit this file. Any changes you make will be lost.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* Automatically generated by remote_generate_stubs.pl.
|
/* Automatically generated by remote_generator.pl.
|
||||||
* Do not edit this file. Any changes you make will be lost.
|
* Do not edit this file. Any changes you make will be lost.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* Automatically generated by remote_generate_stubs.pl.
|
/* Automatically generated by remote_generator.pl.
|
||||||
* Do not edit this file. Any changes you make will be lost.
|
* Do not edit this file. Any changes you make will be lost.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@ -1,195 +0,0 @@
|
|||||||
#!/usr/bin/perl -w
|
|
||||||
#
|
|
||||||
# This script parses remote_protocol.x or qemu_protocol.x and produces lots of
|
|
||||||
# boilerplate code for both ends of the remote connection.
|
|
||||||
#
|
|
||||||
# The first non-option argument specifies the prefix to be searched for, and
|
|
||||||
# output to, the boilerplate code. The second non-option argument is the
|
|
||||||
# file you want to operate on. For instance, to generate the dispatch table
|
|
||||||
# for both remote_protocol.x and qemu_protocol.x, you would run the
|
|
||||||
# following:
|
|
||||||
#
|
|
||||||
# remote_generate_stubs.pl -c -t remote ../src/remote/remote_protocol.x
|
|
||||||
# remote_generate_stubs.pl -t qemu ../src/remote/qemu_protocol.x
|
|
||||||
#
|
|
||||||
# By Richard Jones <rjones@redhat.com>
|
|
||||||
|
|
||||||
use strict;
|
|
||||||
|
|
||||||
use Getopt::Std;
|
|
||||||
|
|
||||||
# Command line options.
|
|
||||||
our ($opt_p, $opt_t, $opt_a, $opt_r, $opt_d, $opt_c);
|
|
||||||
getopts ('ptardc');
|
|
||||||
|
|
||||||
my $structprefix = $ARGV[0];
|
|
||||||
my $procprefix = uc $structprefix;
|
|
||||||
shift;
|
|
||||||
|
|
||||||
# Convert name_of_call to NameOfCall.
|
|
||||||
sub name_to_ProcName {
|
|
||||||
my $name = shift;
|
|
||||||
my @elems = split /_/, $name;
|
|
||||||
@elems = map ucfirst, @elems;
|
|
||||||
join "", @elems
|
|
||||||
}
|
|
||||||
|
|
||||||
# Read the input file (usually remote_protocol.x) and form an
|
|
||||||
# opinion about the name, args and return type of each RPC.
|
|
||||||
my ($name, $ProcName, $id, %calls, @calls);
|
|
||||||
|
|
||||||
# only generate a close method if -c was passed
|
|
||||||
if ($opt_c) {
|
|
||||||
# REMOTE_PROC_CLOSE has no args or ret.
|
|
||||||
$calls{close} = {
|
|
||||||
name => "close",
|
|
||||||
ProcName => "Close",
|
|
||||||
UC_NAME => "CLOSE",
|
|
||||||
args => "void",
|
|
||||||
ret => "void",
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
while (<>) {
|
|
||||||
if (/^struct ${structprefix}_(.*)_args/) {
|
|
||||||
$name = $1;
|
|
||||||
$ProcName = name_to_ProcName ($name);
|
|
||||||
|
|
||||||
die "duplicate definition of ${structprefix}_${name}_args"
|
|
||||||
if exists $calls{$name};
|
|
||||||
|
|
||||||
$calls{$name} = {
|
|
||||||
name => $name,
|
|
||||||
ProcName => $ProcName,
|
|
||||||
UC_NAME => uc $name,
|
|
||||||
args => "${structprefix}_${name}_args",
|
|
||||||
ret => "void",
|
|
||||||
};
|
|
||||||
|
|
||||||
} elsif (/^struct ${structprefix}_(.*)_ret/) {
|
|
||||||
$name = $1;
|
|
||||||
$ProcName = name_to_ProcName ($name);
|
|
||||||
|
|
||||||
if (exists $calls{$name}) {
|
|
||||||
$calls{$name}->{ret} = "${structprefix}_${name}_ret";
|
|
||||||
} else {
|
|
||||||
$calls{$name} = {
|
|
||||||
name => $name,
|
|
||||||
ProcName => $ProcName,
|
|
||||||
UC_NAME => uc $name,
|
|
||||||
args => "void",
|
|
||||||
ret => "${structprefix}_${name}_ret"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} elsif (/^struct ${structprefix}_(.*)_msg/) {
|
|
||||||
$name = $1;
|
|
||||||
$ProcName = name_to_ProcName ($name);
|
|
||||||
|
|
||||||
$calls{$name} = {
|
|
||||||
name => $name,
|
|
||||||
ProcName => $ProcName,
|
|
||||||
UC_NAME => uc $name,
|
|
||||||
msg => "${structprefix}_${name}_msg"
|
|
||||||
}
|
|
||||||
} elsif (/^\s*${procprefix}_PROC_(.*?)\s+=\s+(\d+),?$/) {
|
|
||||||
$name = lc $1;
|
|
||||||
$id = $2;
|
|
||||||
$ProcName = name_to_ProcName ($name);
|
|
||||||
|
|
||||||
$calls[$id] = $calls{$name};
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#----------------------------------------------------------------------
|
|
||||||
# Output
|
|
||||||
|
|
||||||
print <<__EOF__;
|
|
||||||
/* Automatically generated by remote_generate_stubs.pl.
|
|
||||||
* Do not edit this file. Any changes you make will be lost.
|
|
||||||
*/
|
|
||||||
|
|
||||||
__EOF__
|
|
||||||
|
|
||||||
# Debugging.
|
|
||||||
if ($opt_d) {
|
|
||||||
my @keys = sort (keys %calls);
|
|
||||||
foreach (@keys) {
|
|
||||||
print "$_:\n";
|
|
||||||
print " name $calls{$_}->{name} ($calls{$_}->{ProcName})\n";
|
|
||||||
print " $calls{$_}->{args} -> $calls{$_}->{ret}\n";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
# Prototypes for dispatch functions ("remote_dispatch_prototypes.h").
|
|
||||||
elsif ($opt_p) {
|
|
||||||
my @keys = sort (keys %calls);
|
|
||||||
foreach (@keys) {
|
|
||||||
# Skip things which are REMOTE_MESSAGE
|
|
||||||
next if $calls{$_}->{msg};
|
|
||||||
|
|
||||||
print "static int ${structprefix}Dispatch$calls{$_}->{ProcName}(\n";
|
|
||||||
print " struct qemud_server *server,\n";
|
|
||||||
print " struct qemud_client *client,\n";
|
|
||||||
print " virConnectPtr conn,\n";
|
|
||||||
print " remote_message_header *hdr,\n";
|
|
||||||
print " remote_error *rerr,\n";
|
|
||||||
print " $calls{$_}->{args} *args,\n";
|
|
||||||
print " $calls{$_}->{ret} *ret);\n";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
# Union of all arg types
|
|
||||||
# ("remote_dispatch_args.h").
|
|
||||||
elsif ($opt_a) {
|
|
||||||
for ($id = 0 ; $id <= $#calls ; $id++) {
|
|
||||||
if (defined $calls[$id] &&
|
|
||||||
!$calls[$id]->{msg} &&
|
|
||||||
$calls[$id]->{args} ne "void") {
|
|
||||||
print " $calls[$id]->{args} val_$calls[$id]->{args};\n";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
# Union of all arg types
|
|
||||||
# ("remote_dispatch_ret.h").
|
|
||||||
elsif ($opt_r) {
|
|
||||||
for ($id = 0 ; $id <= $#calls ; $id++) {
|
|
||||||
if (defined $calls[$id] &&
|
|
||||||
!$calls[$id]->{msg} &&
|
|
||||||
$calls[$id]->{ret} ne "void") {
|
|
||||||
print " $calls[$id]->{ret} val_$calls[$id]->{ret};\n";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
# Inside the switch statement, prepare the 'fn', 'args_filter', etc
|
|
||||||
# ("remote_dispatch_table.h").
|
|
||||||
elsif ($opt_t) {
|
|
||||||
for ($id = 0 ; $id <= $#calls ; $id++) {
|
|
||||||
if (defined $calls[$id] && !$calls[$id]->{msg}) {
|
|
||||||
print "{ /* $calls[$id]->{ProcName} => $id */\n";
|
|
||||||
print " .fn = (dispatch_fn) ${structprefix}Dispatch$calls[$id]->{ProcName},\n";
|
|
||||||
if ($calls[$id]->{args} ne "void") {
|
|
||||||
print " .args_filter = (xdrproc_t) xdr_$calls[$id]->{args},\n";
|
|
||||||
} else {
|
|
||||||
print " .args_filter = (xdrproc_t) xdr_void,\n";
|
|
||||||
}
|
|
||||||
if ($calls[$id]->{ret} ne "void") {
|
|
||||||
print " .ret_filter = (xdrproc_t) xdr_$calls[$id]->{ret},\n";
|
|
||||||
} else {
|
|
||||||
print " .ret_filter = (xdrproc_t) xdr_void,\n";
|
|
||||||
}
|
|
||||||
print "},\n";
|
|
||||||
} else {
|
|
||||||
if ($calls[$id]->{msg}) {
|
|
||||||
print "{ /* Async event $calls[$id]->{ProcName} => $id */\n";
|
|
||||||
} else {
|
|
||||||
print "{ /* (unused) => $id */\n";
|
|
||||||
}
|
|
||||||
print " .fn = NULL,\n";
|
|
||||||
print " .args_filter = (xdrproc_t) xdr_void,\n";
|
|
||||||
print " .ret_filter = (xdrproc_t) xdr_void,\n";
|
|
||||||
print "},\n";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
195
daemon/remote_generator.pl
Executable file
195
daemon/remote_generator.pl
Executable file
@ -0,0 +1,195 @@
|
|||||||
|
#!/usr/bin/perl -w
|
||||||
|
#
|
||||||
|
# This script parses remote_protocol.x or qemu_protocol.x and produces lots of
|
||||||
|
# boilerplate code for both ends of the remote connection.
|
||||||
|
#
|
||||||
|
# The first non-option argument specifies the prefix to be searched for, and
|
||||||
|
# output to, the boilerplate code. The second non-option argument is the
|
||||||
|
# file you want to operate on. For instance, to generate the dispatch table
|
||||||
|
# for both remote_protocol.x and qemu_protocol.x, you would run the
|
||||||
|
# following:
|
||||||
|
#
|
||||||
|
# remote_generator.pl -c -t remote ../src/remote/remote_protocol.x
|
||||||
|
# remote_generator.pl -t qemu ../src/remote/qemu_protocol.x
|
||||||
|
#
|
||||||
|
# By Richard Jones <rjones@redhat.com>
|
||||||
|
|
||||||
|
use strict;
|
||||||
|
|
||||||
|
use Getopt::Std;
|
||||||
|
|
||||||
|
# Command line options.
|
||||||
|
our ($opt_p, $opt_t, $opt_a, $opt_r, $opt_d, $opt_c);
|
||||||
|
getopts ('ptardc');
|
||||||
|
|
||||||
|
my $structprefix = $ARGV[0];
|
||||||
|
my $procprefix = uc $structprefix;
|
||||||
|
shift;
|
||||||
|
|
||||||
|
# Convert name_of_call to NameOfCall.
|
||||||
|
sub name_to_ProcName {
|
||||||
|
my $name = shift;
|
||||||
|
my @elems = split /_/, $name;
|
||||||
|
@elems = map ucfirst, @elems;
|
||||||
|
join "", @elems
|
||||||
|
}
|
||||||
|
|
||||||
|
# Read the input file (usually remote_protocol.x) and form an
|
||||||
|
# opinion about the name, args and return type of each RPC.
|
||||||
|
my ($name, $ProcName, $id, %calls, @calls);
|
||||||
|
|
||||||
|
# only generate a close method if -c was passed
|
||||||
|
if ($opt_c) {
|
||||||
|
# REMOTE_PROC_CLOSE has no args or ret.
|
||||||
|
$calls{close} = {
|
||||||
|
name => "close",
|
||||||
|
ProcName => "Close",
|
||||||
|
UC_NAME => "CLOSE",
|
||||||
|
args => "void",
|
||||||
|
ret => "void",
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
while (<>) {
|
||||||
|
if (/^struct ${structprefix}_(.*)_args/) {
|
||||||
|
$name = $1;
|
||||||
|
$ProcName = name_to_ProcName ($name);
|
||||||
|
|
||||||
|
die "duplicate definition of ${structprefix}_${name}_args"
|
||||||
|
if exists $calls{$name};
|
||||||
|
|
||||||
|
$calls{$name} = {
|
||||||
|
name => $name,
|
||||||
|
ProcName => $ProcName,
|
||||||
|
UC_NAME => uc $name,
|
||||||
|
args => "${structprefix}_${name}_args",
|
||||||
|
ret => "void",
|
||||||
|
};
|
||||||
|
|
||||||
|
} elsif (/^struct ${structprefix}_(.*)_ret/) {
|
||||||
|
$name = $1;
|
||||||
|
$ProcName = name_to_ProcName ($name);
|
||||||
|
|
||||||
|
if (exists $calls{$name}) {
|
||||||
|
$calls{$name}->{ret} = "${structprefix}_${name}_ret";
|
||||||
|
} else {
|
||||||
|
$calls{$name} = {
|
||||||
|
name => $name,
|
||||||
|
ProcName => $ProcName,
|
||||||
|
UC_NAME => uc $name,
|
||||||
|
args => "void",
|
||||||
|
ret => "${structprefix}_${name}_ret"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} elsif (/^struct ${structprefix}_(.*)_msg/) {
|
||||||
|
$name = $1;
|
||||||
|
$ProcName = name_to_ProcName ($name);
|
||||||
|
|
||||||
|
$calls{$name} = {
|
||||||
|
name => $name,
|
||||||
|
ProcName => $ProcName,
|
||||||
|
UC_NAME => uc $name,
|
||||||
|
msg => "${structprefix}_${name}_msg"
|
||||||
|
}
|
||||||
|
} elsif (/^\s*${procprefix}_PROC_(.*?)\s+=\s+(\d+),?$/) {
|
||||||
|
$name = lc $1;
|
||||||
|
$id = $2;
|
||||||
|
$ProcName = name_to_ProcName ($name);
|
||||||
|
|
||||||
|
$calls[$id] = $calls{$name};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------
|
||||||
|
# Output
|
||||||
|
|
||||||
|
print <<__EOF__;
|
||||||
|
/* Automatically generated by remote_generator.pl.
|
||||||
|
* Do not edit this file. Any changes you make will be lost.
|
||||||
|
*/
|
||||||
|
|
||||||
|
__EOF__
|
||||||
|
|
||||||
|
# Debugging.
|
||||||
|
if ($opt_d) {
|
||||||
|
my @keys = sort (keys %calls);
|
||||||
|
foreach (@keys) {
|
||||||
|
print "$_:\n";
|
||||||
|
print " name $calls{$_}->{name} ($calls{$_}->{ProcName})\n";
|
||||||
|
print " $calls{$_}->{args} -> $calls{$_}->{ret}\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# Prototypes for dispatch functions ("remote_dispatch_prototypes.h").
|
||||||
|
elsif ($opt_p) {
|
||||||
|
my @keys = sort (keys %calls);
|
||||||
|
foreach (@keys) {
|
||||||
|
# Skip things which are REMOTE_MESSAGE
|
||||||
|
next if $calls{$_}->{msg};
|
||||||
|
|
||||||
|
print "static int ${structprefix}Dispatch$calls{$_}->{ProcName}(\n";
|
||||||
|
print " struct qemud_server *server,\n";
|
||||||
|
print " struct qemud_client *client,\n";
|
||||||
|
print " virConnectPtr conn,\n";
|
||||||
|
print " remote_message_header *hdr,\n";
|
||||||
|
print " remote_error *rerr,\n";
|
||||||
|
print " $calls{$_}->{args} *args,\n";
|
||||||
|
print " $calls{$_}->{ret} *ret);\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# Union of all arg types
|
||||||
|
# ("remote_dispatch_args.h").
|
||||||
|
elsif ($opt_a) {
|
||||||
|
for ($id = 0 ; $id <= $#calls ; $id++) {
|
||||||
|
if (defined $calls[$id] &&
|
||||||
|
!$calls[$id]->{msg} &&
|
||||||
|
$calls[$id]->{args} ne "void") {
|
||||||
|
print " $calls[$id]->{args} val_$calls[$id]->{args};\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# Union of all arg types
|
||||||
|
# ("remote_dispatch_ret.h").
|
||||||
|
elsif ($opt_r) {
|
||||||
|
for ($id = 0 ; $id <= $#calls ; $id++) {
|
||||||
|
if (defined $calls[$id] &&
|
||||||
|
!$calls[$id]->{msg} &&
|
||||||
|
$calls[$id]->{ret} ne "void") {
|
||||||
|
print " $calls[$id]->{ret} val_$calls[$id]->{ret};\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# Inside the switch statement, prepare the 'fn', 'args_filter', etc
|
||||||
|
# ("remote_dispatch_table.h").
|
||||||
|
elsif ($opt_t) {
|
||||||
|
for ($id = 0 ; $id <= $#calls ; $id++) {
|
||||||
|
if (defined $calls[$id] && !$calls[$id]->{msg}) {
|
||||||
|
print "{ /* $calls[$id]->{ProcName} => $id */\n";
|
||||||
|
print " .fn = (dispatch_fn) ${structprefix}Dispatch$calls[$id]->{ProcName},\n";
|
||||||
|
if ($calls[$id]->{args} ne "void") {
|
||||||
|
print " .args_filter = (xdrproc_t) xdr_$calls[$id]->{args},\n";
|
||||||
|
} else {
|
||||||
|
print " .args_filter = (xdrproc_t) xdr_void,\n";
|
||||||
|
}
|
||||||
|
if ($calls[$id]->{ret} ne "void") {
|
||||||
|
print " .ret_filter = (xdrproc_t) xdr_$calls[$id]->{ret},\n";
|
||||||
|
} else {
|
||||||
|
print " .ret_filter = (xdrproc_t) xdr_void,\n";
|
||||||
|
}
|
||||||
|
print "},\n";
|
||||||
|
} else {
|
||||||
|
if ($calls[$id]->{msg}) {
|
||||||
|
print "{ /* Async event $calls[$id]->{ProcName} => $id */\n";
|
||||||
|
} else {
|
||||||
|
print "{ /* (unused) => $id */\n";
|
||||||
|
}
|
||||||
|
print " .fn = NULL,\n";
|
||||||
|
print " .args_filter = (xdrproc_t) xdr_void,\n";
|
||||||
|
print " .ret_filter = (xdrproc_t) xdr_void,\n";
|
||||||
|
print "},\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -367,7 +367,7 @@ struct remote_memory_param {
|
|||||||
* connection). Errors are returned implicitly in the RPC protocol.
|
* connection). Errors are returned implicitly in the RPC protocol.
|
||||||
*
|
*
|
||||||
* Please follow the naming convention carefully - this file is
|
* Please follow the naming convention carefully - this file is
|
||||||
* parsed by 'remote_generate_stubs.pl'.
|
* parsed by 'remote_generator.pl'.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
struct remote_open_args {
|
struct remote_open_args {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user