[libvirt] [PATCH 6/7] Re-write virsh console to use streams
Daniel P. Berrange
berrange at redhat.com
Fri Aug 20 09:10:47 UTC 2010
On Thu, Aug 19, 2010 at 03:09:45PM -0600, Eric Blake wrote:
> On 08/17/2010 11:02 AM, Daniel P. Berrange wrote:
> > This re-writes the 'virsh console' command so that it uses
> > the new streams API. This lets it run remotely and/or as a
> > non-root user. This requires that virsh be linked against
> > the simple event loop from libvirtd in daemon/event.c
> > As an added bonus, it can now connect to any console device,
> > not just the first one.
> >
> > * tools/Makefile.am: Link to event.c
> > * tools/console.c, tools/console.h: Rewrite to use the
> > virDomainOpenConsole() APIs with streams
> > * tools/virsh.c: Support choosing the console name
> > via --devname $NAME
> > +static void
> > +virConsoleEventOnStdout(int watch ATTRIBUTE_UNUSED,
> > + int fd,
> > + int events,
> > + void *opaque)
> > +{
> > + virConsolePtr con = opaque;
> > +
> > + if (events & VIR_EVENT_HANDLE_WRITABLE &&
> > + con->streamToTerminal.offset) {
> > + ssize_t done;
> > + size_t avail;
> > + done = write(fd,
> > + con->streamToTerminal.data,
> > + con->streamToTerminal.offset);
>
> Do we want to use safewrite here?
All I/O in this is now done non-blocking, so don't actually want to
block on writing the entire buffer. The code expect to see partial
writes & will handle those in a suitable manner, going back to sleep
in the event loop
Regards,
Daniel
--
|: Red Hat, Engineering, London -o- http://people.redhat.com/berrange/ :|
|: http://libvirt.org -o- http://virt-manager.org -o- http://deltacloud.org :|
|: http://autobuild.org -o- http://search.cpan.org/~danberr/ :|
|: GnuPG: 7D3B9505 -o- F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 :|
More information about the libvir-list
mailing list