[Libvir] Re: [PATCH] Re: Proposal: Check availability of driver calls (repost)

Richard W.M. Jones rjones at redhat.com
Wed Aug 1 13:45:57 UTC 2007


Daniel Veillard wrote:
>> +typedef enum {
>> +    /* Driver supports V1-style virDomainMigrate, ie. domainMigratePrepare/
>> +     * domainMigratePerform/domainMigrateFinish.
>> +     */
>> +    VIR_DRV_FEATURE_MIGRATION_V1 = 1,
>> +
>> +    /* Driver is not local. */
>> +    VIR_DRV_FEATURE_REMOTE = 2,
>> +} virDrvFeature;
> 
>   Probably best done with defines than enums, as you want to be able to compose
> them the fact it comes from a type doesn't help, and I have learnt the hard way
> that enums sucks in C in general.

What in particular?  I'm not particularly concerned either way since 
enums are basically just as unsafe as #defines in C, but it is nice for 
the library user to be able to connect the argument prototype 
("virDrvFeature feature") to the list of permitted types.

>> +typedef int
>> +    (*virDrvSupportsFeature) (virConnectPtr conn, virDrvFeature feature);
> 
>  I would rather use , int features) where you OR the features, allows
> to know in one call if you get what you want or not.

In the case where you've got multiple different migration possibilities 
(VIR_DRV_FEATURE_MIGRATE_V1 & VIR_DRV_FEATURE_MIGRATE_V2) then this 
saves you one remote call in the legacy case (VIR_DRV_FEATURE_MIGRATE_V2 
not supported so we have to do a second remote call to check 
VIR_DRV_FEATURE_MIGRATE_V1).

On the other hand, it complicates the interface.  You need to return an 
array rather than a single int.  (OK, so you can return a bit array, but 
now the feature list had better always be <= 32 entries long).  And in 
the case where someone queries VIR_DRV_FEATURE_MIGRATE_V1 & 
VIR_DRV_FEATURE_REMOTE you need to have two different drivers answering 
a single request.

I think this complicates things unnecessarily ...

Rich.

-- 
Emerging Technologies, Red Hat - http://et.redhat.com/~rjones/
Registered Address: Red Hat UK Ltd, Amberley Place, 107-111 Peascod
Street, Windsor, Berkshire, SL4 1TE, United Kingdom.  Registered in
England and Wales under Company Registration No. 03798903
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/x-pkcs7-signature
Size: 3237 bytes
Desc: S/MIME Cryptographic Signature
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20070801/bd249a1e/attachment-0001.bin>


More information about the libvir-list mailing list