57df0dff1a
New option parameters unstable-input and unstable-output set policy for unstable interfaces just like deprecated-input and deprecated-output set policy for deprecated interfaces (see commit 6dd75472d5 "qemu-options: New -compat to set policy for deprecated interfaces"). This is intended for testing users of the management interfaces. It is experimental. For now, this covers only syntactic aspects of QMP, i.e. stuff tagged with feature 'unstable'. We may want to extend it to cover semantic aspects, or the command line. Note that there is no good way for management application to detect presence of these new option parameters: they are not visible output of query-qmp-schema or query-command-line-options. Tolerable, because it's meant for testing. If running with -compat fails, skip the test. Signed-off-by: Markus Armbruster <armbru@redhat.com> Acked-by: John Snow <jsnow@redhat.com> Message-Id: <20211028102520.747396-10-armbru@redhat.com> Reviewed-by: Eric Blake <eblake@redhat.com> [Doc comments fixed up]
60 lines
1.6 KiB
C
60 lines
1.6 KiB
C
/*
|
|
* QAPI util functions
|
|
*
|
|
* Copyright Fujitsu, Inc. 2014
|
|
*
|
|
* This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
|
|
* See the COPYING.LIB file in the top-level directory.
|
|
*
|
|
*/
|
|
|
|
#ifndef QAPI_UTIL_H
|
|
#define QAPI_UTIL_H
|
|
|
|
typedef enum {
|
|
QAPI_DEPRECATED,
|
|
QAPI_UNSTABLE,
|
|
} QapiSpecialFeature;
|
|
|
|
typedef struct QEnumLookup {
|
|
const char *const *array;
|
|
const unsigned char *const special_features;
|
|
const int size;
|
|
} QEnumLookup;
|
|
|
|
const char *qapi_enum_lookup(const QEnumLookup *lookup, int val);
|
|
int qapi_enum_parse(const QEnumLookup *lookup, const char *buf,
|
|
int def, Error **errp);
|
|
bool qapi_bool_parse(const char *name, const char *value, bool *obj,
|
|
Error **errp);
|
|
|
|
int parse_qapi_name(const char *name, bool complete);
|
|
|
|
/*
|
|
* For any GenericList @list, insert @element at the front.
|
|
*
|
|
* Note that this macro evaluates @element exactly once, so it is safe
|
|
* to have side-effects with that argument.
|
|
*/
|
|
#define QAPI_LIST_PREPEND(list, element) do { \
|
|
typeof(list) _tmp = g_malloc(sizeof(*(list))); \
|
|
_tmp->value = (element); \
|
|
_tmp->next = (list); \
|
|
(list) = _tmp; \
|
|
} while (0)
|
|
|
|
/*
|
|
* For any pointer to a GenericList @tail (usually the 'next' member of a
|
|
* list element), insert @element at the back and update the tail.
|
|
*
|
|
* Note that this macro evaluates @element exactly once, so it is safe
|
|
* to have side-effects with that argument.
|
|
*/
|
|
#define QAPI_LIST_APPEND(tail, element) do { \
|
|
*(tail) = g_malloc0(sizeof(**(tail))); \
|
|
(*(tail))->value = (element); \
|
|
(tail) = &(*(tail))->next; \
|
|
} while (0)
|
|
|
|
#endif
|