[Libguestfs] [libnbd PATCH 1/3] generator: Introduce REnum/RFlags return types
Richard W.M. Jones
rjones at redhat.com
Mon Sep 7 14:52:39 UTC 2020
On Mon, Sep 07, 2020 at 09:38:15AM -0500, Eric Blake wrote:
> On 9/7/20 9:13 AM, Richard W.M. Jones wrote:
>
> >>+++ b/generator/C.ml
> >>@@ -66,15 +66,15 @@ let errcode_of_ret =
> >> function
> >> | RBool | RErr | RFd | RInt | RInt64 | RCookie -> Some "-1"
> >> | RStaticString | RString -> Some "NULL"
> >>- | RUInt -> None (* errors not possible *)
> >>+ | RUInt | REnum (_) | RFlags (_) -> None (* errors not possible *)
> >>
> >> let type_of_ret =
> >> function
> >>- | RBool | RErr | RFd | RInt -> "int"
> >>+ | RBool | RErr | RFd | RInt | REnum (_) -> "int"
> >
> >This is good because Enum is passed as int.
> >
> >>[...]
> >
> >You used unsigned for RFlags, but shouldn't it be this instead?
> >
> >+ | RFlags (_) -> "uint32_t"
>
> Hmm. For Flags as input, we take uint32_t, but for
> get_handshake_flags which used to return RUint, we returned
> unsigned; as written, my patch preserved generated code in its
> entirety. Changing it to return uint32_t makes sense, but is a
> minor API change.
Oh I see, good point.
I think although technically it might not be an ABI change,
best to leave it as you wrote it.
Rich.
> Fortunately, it would not be an ABI change on any
> of the platforms we compile on. So I can go ahead and return the
> smarter type unless we have a strong reason not to (the API change
> might affect anyone that was storing a function pointer to
> nbd_get_handshake_flags, and more so in C++ than C).
>
> >
> >The rest of the patch looks fine.
> >
> >Rich.
> >
>
> --
> Eric Blake, Principal Software Engineer
> Red Hat, Inc. +1-919-301-3226
> Virtualization: qemu.org | libvirt.org
--
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
Read my programming and virtualization blog: http://rwmj.wordpress.com
virt-df lists disk usage of guests without needing to install any
software inside the virtual machine. Supports Linux and Windows.
http://people.redhat.com/~rjones/virt-df/
More information about the Libguestfs
mailing list