On 01/09/13 19:12, Eric Blake wrote: > On 01/07/2013 06:55 AM, Gerd Hoffmann wrote: >> Add support for file chardevs. Output file is mandatory, input >> file is optional. Both file names and file descriptor passing is >> supported. >> >> Signed-off-by: Gerd Hoffmann <kra...@redhat.com> --- >> qapi-schema.json | 9 +++++- qemu-char.c | 77 >> +++++++++++++++++++++++++++++++++++++++++++++++++++++- 2 files >> changed, 84 insertions(+), 2 deletions(-) >> >> diff --git a/qapi-schema.json b/qapi-schema.json index >> e3f0d44..8904d36 100644 --- a/qapi-schema.json +++ >> b/qapi-schema.json @@ -3030,9 +3030,16 @@ # # Since: 1.4 ## +{ >> 'union': 'ChardevFileSource', 'data': { 'path' : 'str', + >> 'fd' : 'str' } } + +{ 'type': 'ChardevFile', 'data': { '*in' : >> 'ChardevFileSource', + 'out' : >> 'ChardevFileSource' } } + { 'type': 'ChardevDummy', 'data': { } >> } >> >> -{ 'union': 'ChardevBackend', 'data': { 'null' : 'ChardevDummy' } >> } +{ 'union': 'ChardevBackend', 'data': { 'file' : >> 'ChardevFile', + 'null' : >> 'ChardevDummy' } } >> >> { 'command': 'chardev-add', 'data': {'id' : 'str', 'backend' >> : 'ChardevBackend' } } > > An example in qmp-commands.hx would be helpful; am I correct that > an example would be: > > -> { "execute" : "chardev-add", "arguments" : { "id" : "foo", > "backend" : { "type" : "file", "data" : { "in" : { "type" : "fd", > "data" : "namedfd" }, "out" : { "type" : "path", "data" : > "/path/to/file" } } } } } <- { "return": {} } > > where namedfd was previously given via 'getfd'?
Yes. > Do we need the complexity of supporting fd passing explicitly? > 'getfd' is less than ideal compared to 'add-fd', and for 'add-fd', > we would pass via "path":"/dev/fdset/nnn". That is, why do we need > to bend over backwards to support an alternate syntax for fd > passing in a new command, when we can already use existing commands > to get fd passing for free? Oh, didn't know that. Was just following what SocketAddress does and what Paolo suggested. It isn't needed indeed. cheers, Gerd