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

error-report.h (2695B)


      1/*
      2 * Error reporting
      3 *
      4 * Copyright (C) 2010 Red Hat Inc.
      5 *
      6 * Authors:
      7 *  Markus Armbruster <armbru@redhat.com>,
      8 *
      9 * This work is licensed under the terms of the GNU GPL, version 2 or later.
     10 * See the COPYING file in the top-level directory.
     11 */
     12
     13#ifndef QEMU_ERROR_REPORT_H
     14#define QEMU_ERROR_REPORT_H
     15
     16typedef struct Location {
     17    /* all members are private to qemu-error.c */
     18    enum { LOC_NONE, LOC_CMDLINE, LOC_FILE } kind;
     19    int num;
     20    const void *ptr;
     21    struct Location *prev;
     22} Location;
     23
     24Location *loc_push_restore(Location *loc);
     25Location *loc_push_none(Location *loc);
     26Location *loc_pop(Location *loc);
     27Location *loc_save(Location *loc);
     28void loc_restore(Location *loc);
     29void loc_set_none(void);
     30void loc_set_cmdline(char **argv, int idx, int cnt);
     31void loc_set_file(const char *fname, int lno);
     32
     33int error_vprintf(const char *fmt, va_list ap) GCC_FMT_ATTR(1, 0);
     34int error_printf(const char *fmt, ...) GCC_FMT_ATTR(1, 2);
     35int error_vprintf_unless_qmp(const char *fmt, va_list ap) GCC_FMT_ATTR(1, 0);
     36int error_printf_unless_qmp(const char *fmt, ...) GCC_FMT_ATTR(1, 2);
     37
     38void error_vreport(const char *fmt, va_list ap) GCC_FMT_ATTR(1, 0);
     39void warn_vreport(const char *fmt, va_list ap) GCC_FMT_ATTR(1, 0);
     40void info_vreport(const char *fmt, va_list ap) GCC_FMT_ATTR(1, 0);
     41
     42void error_report(const char *fmt, ...) GCC_FMT_ATTR(1, 2);
     43void warn_report(const char *fmt, ...) GCC_FMT_ATTR(1, 2);
     44void info_report(const char *fmt, ...) GCC_FMT_ATTR(1, 2);
     45
     46bool error_report_once_cond(bool *printed, const char *fmt, ...)
     47    GCC_FMT_ATTR(2, 3);
     48bool warn_report_once_cond(bool *printed, const char *fmt, ...)
     49    GCC_FMT_ATTR(2, 3);
     50
     51void error_init(const char *argv0);
     52
     53/*
     54 * Similar to error_report(), except it prints the message just once.
     55 * Return true when it prints, false otherwise.
     56 */
     57#define error_report_once(fmt, ...)                     \
     58    ({                                                  \
     59        static bool print_once_;                        \
     60        error_report_once_cond(&print_once_,            \
     61                               fmt, ##__VA_ARGS__);     \
     62    })
     63
     64/*
     65 * Similar to warn_report(), except it prints the message just once.
     66 * Return true when it prints, false otherwise.
     67 */
     68#define warn_report_once(fmt, ...)                      \
     69    ({                                                  \
     70        static bool print_once_;                        \
     71        warn_report_once_cond(&print_once_,             \
     72                              fmt, ##__VA_ARGS__);      \
     73    })
     74
     75const char *error_get_progname(void);
     76
     77extern bool message_with_timestamp;
     78extern bool error_with_guestname;
     79extern const char *error_guest_name;
     80
     81#endif