[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH v3 2/7] libxl: Add to libxl__domain_type a new return value (LIBXL_DOMAIN_TYPE_NOTFOUND)



On Mon, 2015-03-23 at 14:20 -0400, Konrad Rzeszutek Wilk wrote:
> So that the callers can distinguish between an error and
> an domain not found. The exposed API calls that are effected
> by this are: libxl_domain_[remus_start,suspend,unpause,cdrom_insert,
> set_vcpuonline]
> 
> We add an helper function to deal with the two types of errors:
> libxl_domain_type2err. However for libxl_[pci,dom].c we just add
> the extra check for LIBXL_DOMAIN_TYPE_NOTFOUND for simplicity
> reasons.
> 
> Suggested-by: Ian Campbell <ian.campbell@xxxxxxxxxx>

Did I?

Anyway, I'm not terribly keen on the approach taken here, sorry, in
particular extending libxl_domain_type with a subset of the libxl_error
codes and the shenanigans which are needed to convert between them.

Off hand I can think of 3 possible alternative solutions:

Arrange that the -ve error values in libxl_domain_type directly
correspond to an appropriate libxl_error code, allowing code to do
    if (type < 0) return type;
    if (type < 0) { rc = type ; goto out }
type stuff.

Change the prototype of libxl__domain_type to always return a libxl rc
and on success return the type via a pointer argument.

Change the return type of libxl_domain_type to an int and return either
a LIBXL_DOMAIN_TYPE_FOO or an ERROR_*.

They all have downsides (I don't much like the implicit cast between
domain type and error code, changing the prototype will probably be
disruptive, changing the return type means gcc can't catch missing
switch statements for us).

Perhaps you or my fellow maintainers have a better idea or a preference
for one of the above?

Ian.


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.