[libvirt] [PATCH 2.5/7] maint: prefer newer API names internally

Daniel P. Berrange berrange at redhat.com
Wed May 18 16:14:55 UTC 2011


On Wed, May 18, 2011 at 09:51:44AM -0600, Eric Blake wrote:
> diff --git a/include/libvirt/libvirt.h.in b/include/libvirt/libvirt.h.in
> index 7cd6e13..2174cfd 100644
> --- a/include/libvirt/libvirt.h.in
> +++ b/include/libvirt/libvirt.h.in
> @@ -308,6 +308,10 @@ typedef enum {
>   * virTypedParameter:
>   *
>   * A named parameter, including a type and value.
> + *
> + * The types virSchedParameter, virBlkioParameter, and
> + * virMemoryParameter are aliases of this type, for use when
> + * targetting libvirt earlier than 0.9.2.
>   */
>  typedef struct _virTypedParameter virTypedParameter;
> 
> @@ -331,21 +335,8 @@ struct _virTypedParameter {
>   */
>  typedef virTypedParameter *virTypedParameterPtr;
> 
> -/* Management of scheduler parameters */
> 
> -/**
> - * virDomainSchedParameterType:
> - *
> - * A scheduler parameter field type
> - */
> -typedef enum {
> -    VIR_DOMAIN_SCHED_FIELD_INT     = VIR_TYPED_PARAM_INT,
> -    VIR_DOMAIN_SCHED_FIELD_UINT    = VIR_TYPED_PARAM_UINT,
> -    VIR_DOMAIN_SCHED_FIELD_LLONG   = VIR_TYPED_PARAM_LLONG,
> -    VIR_DOMAIN_SCHED_FIELD_ULLONG  = VIR_TYPED_PARAM_ULLONG,
> -    VIR_DOMAIN_SCHED_FIELD_DOUBLE  = VIR_TYPED_PARAM_DOUBLE,
> -    VIR_DOMAIN_SCHED_FIELD_BOOLEAN = VIR_TYPED_PARAM_BOOLEAN,
> -} virSchedParameterType;
> +/* Management of scheduler parameters */
> 
>  typedef enum {
>      VIR_DOMAIN_SCHEDPARAM_CURRENT = 0,        /* affect current domain state */
> @@ -353,49 +344,25 @@ typedef enum {
>      VIR_DOMAIN_SCHEDPARAM_CONFIG  = (1 << 1), /* Affect next boot */
>  } virDomainSchedParameterFlags;
> 
> -/**
> - * VIR_DOMAIN_SCHED_FIELD_LENGTH:
> - *
> - * Macro providing the field length of virSchedParameter
> - */
> -
> -#define VIR_DOMAIN_SCHED_FIELD_LENGTH VIR_TYPED_PARAM_FIELD_LENGTH
> -
> -/**
> - * virDomainSchedParameter:
> - *
> - * a virDomainSchedParameter is the set of scheduler parameters
> - */
> -
> -typedef struct _virTypedParameter virSchedParameter;
> -
> -/**
> - * virSchedParameterPtr:
> - *
> - * a virSchedParameterPtr is a pointer to a virSchedParameter structure.
> - */
> -
> -typedef virSchedParameter *virSchedParameterPtr;
> -
>  /*
>   * Fetch scheduler parameters, caller allocates 'params' field of size 'nparams'
>   */
>  int     virDomainGetSchedulerParameters (virDomainPtr domain,
> -                                         virSchedParameterPtr params,
> +                                         virTypedParameterPtr params,
>                                           int *nparams);
> 
>  /*
>   * Change scheduler parameters
>   */
>  int     virDomainSetSchedulerParameters (virDomainPtr domain,
> -                                         virSchedParameterPtr params,
> +                                         virTypedParameterPtr params,
>                                           int nparams);
> 
>  /*
>   * Change scheduler parameters
>   */
>  int     virDomainSetSchedulerParametersFlags (virDomainPtr domain,
> -                                              virSchedParameterPtr params,
> +                                              virTypedParameterPtr params,
>                                                int nparams,
>                                                unsigned int flags);
> 
> @@ -798,29 +765,8 @@ int                     virDomainGetState       (virDomainPtr domain,
>  char *                  virDomainGetSchedulerType(virDomainPtr domain,
>                                                   int *nparams);
> 
> -/* Manage blkio parameters.  */
> -
> -/**
> - * virDomainBlkioParameterType:
> - *
> - * A blkio parameter field type
> - */
> -typedef enum {
> -    VIR_DOMAIN_BLKIO_PARAM_INT     = VIR_TYPED_PARAM_INT,
> -    VIR_DOMAIN_BLKIO_PARAM_UINT    = VIR_TYPED_PARAM_UINT,
> -    VIR_DOMAIN_BLKIO_PARAM_LLONG   = VIR_TYPED_PARAM_LLONG,
> -    VIR_DOMAIN_BLKIO_PARAM_ULLONG  = VIR_TYPED_PARAM_ULLONG,
> -    VIR_DOMAIN_BLKIO_PARAM_DOUBLE  = VIR_TYPED_PARAM_DOUBLE,
> -    VIR_DOMAIN_BLKIO_PARAM_BOOLEAN = VIR_TYPED_PARAM_BOOLEAN,
> -} virBlkioParameterType;
> 
> -/**
> - * VIR_DOMAIN_BLKIO_FIELD_LENGTH:
> - *
> - * Macro providing the field length of virBlkioParameter
> - */
> -
> -#define VIR_DOMAIN_BLKIO_FIELD_LENGTH VIR_TYPED_PARAM_FIELD_LENGTH
> +/* Manage blkio parameters.  */
> 
>  /**
>   * VIR_DOMAIN_BLKIO_WEIGHT:
> @@ -831,55 +777,17 @@ typedef enum {
> 
>  #define VIR_DOMAIN_BLKIO_WEIGHT "weight"
> 
> -/**
> - * virDomainBlkioParameter:
> - *
> - * a virDomainBlkioParameter is the set of blkio parameters
> - */
> -
> -typedef struct _virTypedParameter virBlkioParameter;
> -
> -/**
> - * virBlkioParameterPtr:
> - *
> - * a virBlkioParameterPtr is a pointer to a virBlkioParameter structure.
> - */
> -
> -typedef virBlkioParameter *virBlkioParameterPtr;
> -
>  /* Set Blkio tunables for the domain*/
>  int     virDomainSetBlkioParameters(virDomainPtr domain,
> -                                     virBlkioParameterPtr params,
> +                                     virTypedParameterPtr params,
>                                       int nparams, unsigned int flags);
>  int     virDomainGetBlkioParameters(virDomainPtr domain,
> -                                     virBlkioParameterPtr params,
> +                                     virTypedParameterPtr params,
>                                       int *nparams, unsigned int flags);
> 
>  /* Manage memory parameters.  */
> 
>  /**
> - * virDomainMemoryParameterType:
> - *
> - * A memory parameter field type
> - */
> -typedef enum {
> -    VIR_DOMAIN_MEMORY_PARAM_INT     = VIR_TYPED_PARAM_INT,
> -    VIR_DOMAIN_MEMORY_PARAM_UINT    = VIR_TYPED_PARAM_UINT,
> -    VIR_DOMAIN_MEMORY_PARAM_LLONG   = VIR_TYPED_PARAM_LLONG,
> -    VIR_DOMAIN_MEMORY_PARAM_ULLONG  = VIR_TYPED_PARAM_ULLONG,
> -    VIR_DOMAIN_MEMORY_PARAM_DOUBLE  = VIR_TYPED_PARAM_DOUBLE,
> -    VIR_DOMAIN_MEMORY_PARAM_BOOLEAN = VIR_TYPED_PARAM_BOOLEAN,
> -} virMemoryParameterType;
> -
> -/**
> - * VIR_DOMAIN_MEMORY_FIELD_LENGTH:
> - *
> - * Macro providing the field length of virMemoryParameter
> - */
> -
> -#define VIR_DOMAIN_MEMORY_FIELD_LENGTH VIR_TYPED_PARAM_FIELD_LENGTH
> -
> -/**
>   * VIR_DOMAIN_MEMORY_PARAM_UNLIMITED:
>   *
>   * Macro providing the virMemoryParameter value that indicates "unlimited"
> @@ -924,28 +832,12 @@ typedef enum {
> 
>  #define VIR_DOMAIN_MEMORY_SWAP_HARD_LIMIT "swap_hard_limit"
> 
> -/**
> - * virDomainMemoryParameter:
> - *
> - * a virDomainMemoryParameter is the set of scheduler parameters
> - */
> -
> -typedef struct _virTypedParameter virMemoryParameter;
> -
> -/**
> - * virMemoryParameterPtr:
> - *
> - * a virMemoryParameterPtr is a pointer to a virMemoryParameter structure.
> - */
> -
> -typedef virMemoryParameter *virMemoryParameterPtr;
> -
>  /* Set memory tunables for the domain*/
>  int     virDomainSetMemoryParameters(virDomainPtr domain,
> -                                     virMemoryParameterPtr params,
> +                                     virTypedParameterPtr params,
>                                       int nparams, unsigned int flags);
>  int     virDomainGetMemoryParameters(virDomainPtr domain,
> -                                     virMemoryParameterPtr params,
> +                                     virTypedParameterPtr params,
>                                       int *nparams, unsigned int flags);
> 
>  /* Memory size modification flags. */
> @@ -2617,6 +2509,136 @@ int virDomainOpenConsole(virDomainPtr dom,
> 
>  int virDomainInjectNMI(virDomainPtr domain, unsigned int flags);
> 
> +
> +/**
> + * virDomainSchedParameterType:
> + *
> + * A scheduler parameter field type.  Provided for backwards
> + * compatibility; virTypedParameterType is the preferred enum since
> + * 0.9.2.
> + */
> +typedef enum {
> +    VIR_DOMAIN_SCHED_FIELD_INT     = VIR_TYPED_PARAM_INT,
> +    VIR_DOMAIN_SCHED_FIELD_UINT    = VIR_TYPED_PARAM_UINT,
> +    VIR_DOMAIN_SCHED_FIELD_LLONG   = VIR_TYPED_PARAM_LLONG,
> +    VIR_DOMAIN_SCHED_FIELD_ULLONG  = VIR_TYPED_PARAM_ULLONG,
> +    VIR_DOMAIN_SCHED_FIELD_DOUBLE  = VIR_TYPED_PARAM_DOUBLE,
> +    VIR_DOMAIN_SCHED_FIELD_BOOLEAN = VIR_TYPED_PARAM_BOOLEAN,
> +} virSchedParameterType;
> +
> +/**
> + * VIR_DOMAIN_SCHED_FIELD_LENGTH:
> + *
> + * Macro providing the field length of virSchedParameter.  Provided
> + * for backwards compatibility; VIR_TYPED_PARAM_FIELD_LENGTH is the
> + * preferred value since 0.9.2.
> + */
> +#define VIR_DOMAIN_SCHED_FIELD_LENGTH VIR_TYPED_PARAM_FIELD_LENGTH
> +
> +/**
> + * virDomainSchedParameter:
> + *
> + * a virDomainSchedParameter is the set of scheduler parameters.
> + * Provided for backwards compatibility; virTypedParameter is the
> + * preferred alias since 0.9.2.
> + */
> +typedef struct _virTypedParameter virSchedParameter;
> +
> +/**
> + * virSchedParameterPtr:
> + *
> + * a virSchedParameterPtr is a pointer to a virSchedParameter structure.
> + * Provided for backwards compatibility; virTypedParameterPtr is the
> + * preferred alias since 0.9.2.
> + */
> +typedef virSchedParameter *virSchedParameterPtr;
> +
> +/**
> + * virDomainBlkioParameterType:
> + *
> + * A blkio parameter field type.  Provided for backwards
> + * compatibility; virTypedParameterType is the preferred enum since
> + * 0.9.2.
> + */
> +typedef enum {
> +    VIR_DOMAIN_BLKIO_PARAM_INT     = VIR_TYPED_PARAM_INT,
> +    VIR_DOMAIN_BLKIO_PARAM_UINT    = VIR_TYPED_PARAM_UINT,
> +    VIR_DOMAIN_BLKIO_PARAM_LLONG   = VIR_TYPED_PARAM_LLONG,
> +    VIR_DOMAIN_BLKIO_PARAM_ULLONG  = VIR_TYPED_PARAM_ULLONG,
> +    VIR_DOMAIN_BLKIO_PARAM_DOUBLE  = VIR_TYPED_PARAM_DOUBLE,
> +    VIR_DOMAIN_BLKIO_PARAM_BOOLEAN = VIR_TYPED_PARAM_BOOLEAN,
> +} virBlkioParameterType;
> +
> +/**
> + * VIR_DOMAIN_BLKIO_FIELD_LENGTH:
> + *
> + * Macro providing the field length of virBlkioParameter.  Provided
> + * for backwards compatibility; VIR_TYPED_PARAM_FIELD_LENGTH is the
> + * preferred value since 0.9.2.
> + */
> +#define VIR_DOMAIN_BLKIO_FIELD_LENGTH VIR_TYPED_PARAM_FIELD_LENGTH
> +
> +/**
> + * virDomainBlkioParameter:
> + *
> + * a virDomainBlkioParameter is the set of blkio parameters.
> + * Provided for backwards compatibility; virTypedParameter is the
> + * preferred alias since 0.9.2.
> + */
> +typedef struct _virTypedParameter virBlkioParameter;
> +
> +/**
> + * virBlkioParameterPtr:
> + *
> + * a virBlkioParameterPtr is a pointer to a virBlkioParameter structure.
> + * Provided for backwards compatibility; virTypedParameterPtr is the
> + * preferred alias since 0.9.2.
> + */
> +typedef virBlkioParameter *virBlkioParameterPtr;
> +
> +/**
> + * virDomainMemoryParameterType:
> + *
> + * A memory parameter field type.  Provided for backwards
> + * compatibility; virTypedParameterType is the preferred enum since
> + * 0.9.2.
> + */
> +typedef enum {
> +    VIR_DOMAIN_MEMORY_PARAM_INT     = VIR_TYPED_PARAM_INT,
> +    VIR_DOMAIN_MEMORY_PARAM_UINT    = VIR_TYPED_PARAM_UINT,
> +    VIR_DOMAIN_MEMORY_PARAM_LLONG   = VIR_TYPED_PARAM_LLONG,
> +    VIR_DOMAIN_MEMORY_PARAM_ULLONG  = VIR_TYPED_PARAM_ULLONG,
> +    VIR_DOMAIN_MEMORY_PARAM_DOUBLE  = VIR_TYPED_PARAM_DOUBLE,
> +    VIR_DOMAIN_MEMORY_PARAM_BOOLEAN = VIR_TYPED_PARAM_BOOLEAN,
> +} virMemoryParameterType;
> +
> +/**
> + * VIR_DOMAIN_MEMORY_FIELD_LENGTH:
> + *
> + * Macro providing the field length of virMemoryParameter.  Provided
> + * for backwards compatibility; VIR_TYPED_PARAM_FIELD_LENGTH is the
> + * preferred value since 0.9.2.
> + */
> +#define VIR_DOMAIN_MEMORY_FIELD_LENGTH VIR_TYPED_PARAM_FIELD_LENGTH
> +
> +/**
> + * virDomainMemoryParameter:
> + *
> + * a virDomainMemoryParameter is the set of scheduler parameters.
> + * Provided for backwards compatibility; virTypedParameter is the
> + * preferred alias since 0.9.2.
> + */
> +typedef struct _virTypedParameter virMemoryParameter;
> +
> +/**
> + * virMemoryParameterPtr:
> + *
> + * a virMemoryParameterPtr is a pointer to a virMemoryParameter structure.
> + * Provided for backwards compatibility; virTypedParameterPtr is the
> + * preferred alias since 0.9.2.
> + */
> +typedef virMemoryParameter *virMemoryParameterPtr;
> +
>  #ifdef __cplusplus
>  }
>  #endif

While the structs are ABI compatible, this still constitutes a change
in API. ie apps doing this

  int np = 5;
  struct _virMemoryParameter p[np];

  virDomainGetSchedulerParameters(dom, p, &np);

will get a compile warning/error

  demo.c: In function ‘main’:
  demo.c:35:3: warning: passing argument 2 of ‘virDomainGetSchedulerParameters’ from incompatible pointer type
  demo.c:25:12: note: expected ‘virTypedParameterPtr’ but argument is of type ‘struct _virMemoryParameter *’

so NACK to this change.

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