[libvirt] [PATCH V2 1/5] Add public API virDomainSendSysrq
Daniel P. Berrange
berrange at redhat.com
Fri Dec 12 09:38:18 UTC 2014
On Fri, Dec 12, 2014 at 10:35:45AM +0100, Jiri Denemark wrote:
> On Fri, Dec 12, 2014 at 10:18:36 +0100, Peter Krempa wrote:
> > On 12/12/14 10:04, Chunyan Liu wrote:
> > > Add public API virDomainSendSysrq for sending SysRequest key.
> > >
> > > Signed-off-by: Chunyan Liu <cyliu at suse.com>
> > > ---
> > > include/libvirt/libvirt-domain.h | 3 +++
> > > src/driver-hypervisor.h | 4 ++++
> > > src/libvirt-domain.c | 38 ++++++++++++++++++++++++++++++++++++++
> > > src/libvirt_public.syms | 1 +
> > > 4 files changed, 46 insertions(+)
> > >
> >
> > [...]
> >
> > > diff --git a/src/libvirt-domain.c b/src/libvirt-domain.c
> > > index cb76d8c..4658fd7 100644
> > > --- a/src/libvirt-domain.c
> > > +++ b/src/libvirt-domain.c
> > > @@ -11192,3 +11192,41 @@ virDomainFSInfoFree(virDomainFSInfoPtr info)
> > > VIR_FREE(info->devAlias[i]);
> > > VIR_FREE(info->devAlias);
> > > }
> > > +
> > > +
> > > +/**
> > > + * virDomainSendSysrq:
> > > + * @domain: pointer to domain object, or NULL for Domain0
> > > + * @key: SysRq key, like h, c, ...
> > > + *
> > > + * Send SysRq key to the guest.
> > > + *
> > > + * Returns 0 in case of success, -1 in case of failure.
> > > + */
> > > +int
> > > +virDomainSendSysrq(virDomainPtr domain, const char *key)
> >
> > The new API should definitely have a 'flags' argument although it may be
> > unused for now.
>
> Moreover, passing a single character by reference sounds pretty strange,
> why not just "char key"? Moreover, wouldn't it be better to provide an
> enum of possible values with meaningful names (rather than keys), such
> as
>
> typedef enum {
> VIR_DOMAIN_SYSRQ_REBOOT,
> VIR_DOMAIN_SYSRQ_CRASH,
> VIR_DOMAIN_SYSRQ_OOM_KILL,
> VIR_DOMAIN_SYSRQ_SYNC,
> ...
> } virDomainSysrqCommand;
>
> This way, virDomainSendSysrq(dom, VIR_DOMAIN_SYSRQ_OOM_KILL, 0) would be
> pretty self-explaining. The prototype would have to change to
>
> int virDomainSendSysrq(virDomainPtr domain,
> int command, /* one of virDomainSysrqCommand */
> unsigned int flags);
That would open up greater possibilities for implementing it differently
for different guest OS, rather than assuming Linux characters.
Regards,
Daniel
--
|: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :|
|: http://libvirt.org -o- http://virt-manager.org :|
|: http://autobuild.org -o- http://search.cpan.org/~danberr/ :|
|: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :|
More information about the libvir-list
mailing list