cachepc-qemu

Fork of AMDESE/qemu with changes for cachepc side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-qemu
Log | Files | Refs | Submodules | LICENSE | sfeed.txt

util.h (1498B)


      1/*
      2 * QAPI util functions
      3 *
      4 * Copyright Fujitsu, Inc. 2014
      5 *
      6 * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
      7 * See the COPYING.LIB file in the top-level directory.
      8 *
      9 */
     10
     11#ifndef QAPI_UTIL_H
     12#define QAPI_UTIL_H
     13
     14typedef struct QEnumLookup {
     15    const char *const *array;
     16    int size;
     17} QEnumLookup;
     18
     19const char *qapi_enum_lookup(const QEnumLookup *lookup, int val);
     20int qapi_enum_parse(const QEnumLookup *lookup, const char *buf,
     21                    int def, Error **errp);
     22bool qapi_bool_parse(const char *name, const char *value, bool *obj,
     23                     Error **errp);
     24
     25int parse_qapi_name(const char *name, bool complete);
     26
     27/*
     28 * For any GenericList @list, insert @element at the front.
     29 *
     30 * Note that this macro evaluates @element exactly once, so it is safe
     31 * to have side-effects with that argument.
     32 */
     33#define QAPI_LIST_PREPEND(list, element) do { \
     34    typeof(list) _tmp = g_malloc(sizeof(*(list))); \
     35    _tmp->value = (element); \
     36    _tmp->next = (list); \
     37    (list) = _tmp; \
     38} while (0)
     39
     40/*
     41 * For any pointer to a GenericList @tail (usually the 'next' member of a
     42 * list element), insert @element at the back and update the tail.
     43 *
     44 * Note that this macro evaluates @element exactly once, so it is safe
     45 * to have side-effects with that argument.
     46 */
     47#define QAPI_LIST_APPEND(tail, element) do { \
     48    *(tail) = g_malloc0(sizeof(**(tail))); \
     49    (*(tail))->value = (element); \
     50    (tail) = &(*(tail))->next; \
     51} while (0)
     52
     53#endif