File:  [Qemu by Fabrice Bellard] / qemu / qerror.h
Revision 1.1.1.4 (vendor branch): download - view: text, annotated - select for diffs
Tue Apr 24 18:56:30 2018 UTC (3 years, 1 month ago) by root
Branches: qemu, MAIN
CVS tags: qemu1000, qemu0151, HEAD
qemu 0.15.1

    1: /*
    2:  * QError Module
    3:  *
    4:  * Copyright (C) 2009 Red Hat Inc.
    5:  *
    6:  * Authors:
    7:  *  Luiz Capitulino <lcapitulino@redhat.com>
    8:  *
    9:  * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
   10:  * See the COPYING.LIB file in the top-level directory.
   11:  */
   12: #ifndef QERROR_H
   13: #define QERROR_H
   14: 
   15: #include "qdict.h"
   16: #include "qstring.h"
   17: #include "qemu-error.h"
   18: #include <stdarg.h>
   19: 
   20: typedef struct QErrorStringTable {
   21:     const char *desc;
   22:     const char *error_fmt;
   23: } QErrorStringTable;
   24: 
   25: typedef struct QError {
   26:     QObject_HEAD;
   27:     QDict *error;
   28:     Location loc;
   29:     int linenr;
   30:     const char *file;
   31:     const char *func;
   32:     const QErrorStringTable *entry;
   33: } QError;
   34: 
   35: QError *qerror_new(void);
   36: QError *qerror_from_info(const char *file, int linenr, const char *func,
   37:                          const char *fmt, va_list *va) GCC_FMT_ATTR(4, 0);
   38: QString *qerror_human(const QError *qerror);
   39: void qerror_print(QError *qerror);
   40: void qerror_report_internal(const char *file, int linenr, const char *func,
   41:                             const char *fmt, ...) GCC_FMT_ATTR(4, 5);
   42: QString *qerror_format(const char *fmt, QDict *error);
   43: #define qerror_report(fmt, ...) \
   44:     qerror_report_internal(__FILE__, __LINE__, __func__, fmt, ## __VA_ARGS__)
   45: QError *qobject_to_qerror(const QObject *obj);
   46: 
   47: /*
   48:  * QError class list
   49:  * Please keep the definitions in alphabetical order.
   50:  * Use "grep '^#define QERR_' qerror.h | sort -c" to check.
   51:  */
   52: #define QERR_BAD_BUS_FOR_DEVICE \
   53:     "{ 'class': 'BadBusForDevice', 'data': { 'device': %s, 'bad_bus_type': %s } }"
   54: 
   55: #define QERR_BUS_NOT_FOUND \
   56:     "{ 'class': 'BusNotFound', 'data': { 'bus': %s } }"
   57: 
   58: #define QERR_BUS_NO_HOTPLUG \
   59:     "{ 'class': 'BusNoHotplug', 'data': { 'bus': %s } }"
   60: 
   61: #define QERR_COMMAND_NOT_FOUND \
   62:     "{ 'class': 'CommandNotFound', 'data': { 'name': %s } }"
   63: 
   64: #define QERR_DEVICE_ENCRYPTED \
   65:     "{ 'class': 'DeviceEncrypted', 'data': { 'device': %s } }"
   66: 
   67: #define QERR_DEVICE_INIT_FAILED \
   68:     "{ 'class': 'DeviceInitFailed', 'data': { 'device': %s } }"
   69: 
   70: #define QERR_DEVICE_IN_USE \
   71:     "{ 'class': 'DeviceInUse', 'data': { 'device': %s } }"
   72: 
   73: #define QERR_DEVICE_LOCKED \
   74:     "{ 'class': 'DeviceLocked', 'data': { 'device': %s } }"
   75: 
   76: #define QERR_DEVICE_MULTIPLE_BUSSES \
   77:     "{ 'class': 'DeviceMultipleBusses', 'data': { 'device': %s } }"
   78: 
   79: #define QERR_DEVICE_NOT_ACTIVE \
   80:     "{ 'class': 'DeviceNotActive', 'data': { 'device': %s } }"
   81: 
   82: #define QERR_DEVICE_NOT_ENCRYPTED \
   83:     "{ 'class': 'DeviceNotEncrypted', 'data': { 'device': %s } }"
   84: 
   85: #define QERR_DEVICE_NOT_FOUND \
   86:     "{ 'class': 'DeviceNotFound', 'data': { 'device': %s } }"
   87: 
   88: #define QERR_DEVICE_NOT_REMOVABLE \
   89:     "{ 'class': 'DeviceNotRemovable', 'data': { 'device': %s } }"
   90: 
   91: #define QERR_DEVICE_NO_BUS \
   92:     "{ 'class': 'DeviceNoBus', 'data': { 'device': %s } }"
   93: 
   94: #define QERR_DEVICE_NO_HOTPLUG \
   95:     "{ 'class': 'DeviceNoHotplug', 'data': { 'device': %s } }"
   96: 
   97: #define QERR_DUPLICATE_ID \
   98:     "{ 'class': 'DuplicateId', 'data': { 'id': %s, 'object': %s } }"
   99: 
  100: #define QERR_FD_NOT_FOUND \
  101:     "{ 'class': 'FdNotFound', 'data': { 'name': %s } }"
  102: 
  103: #define QERR_FD_NOT_SUPPLIED \
  104:     "{ 'class': 'FdNotSupplied', 'data': {} }"
  105: 
  106: #define QERR_INVALID_BLOCK_FORMAT \
  107:     "{ 'class': 'InvalidBlockFormat', 'data': { 'name': %s } }"
  108: 
  109: #define QERR_INVALID_PARAMETER \
  110:     "{ 'class': 'InvalidParameter', 'data': { 'name': %s } }"
  111: 
  112: #define QERR_INVALID_PARAMETER_TYPE \
  113:     "{ 'class': 'InvalidParameterType', 'data': { 'name': %s,'expected': %s } }"
  114: 
  115: #define QERR_INVALID_PARAMETER_VALUE \
  116:     "{ 'class': 'InvalidParameterValue', 'data': { 'name': %s, 'expected': %s } }"
  117: 
  118: #define QERR_INVALID_PASSWORD \
  119:     "{ 'class': 'InvalidPassword', 'data': {} }"
  120: 
  121: #define QERR_JSON_PARSING \
  122:     "{ 'class': 'JSONParsing', 'data': {} }"
  123: 
  124: #define QERR_JSON_PARSE_ERROR \
  125:     "{ 'class': 'JSONParseError', 'data': { 'message': %s } }"
  126: 
  127: #define QERR_BUFFER_OVERRUN \
  128:     "{ 'class': 'BufferOverrun', 'data': {} }"
  129: 
  130: #define QERR_KVM_MISSING_CAP \
  131:     "{ 'class': 'KVMMissingCap', 'data': { 'capability': %s, 'feature': %s } }"
  132: 
  133: #define QERR_MIGRATION_EXPECTED \
  134:     "{ 'class': 'MigrationExpected', 'data': {} }"
  135: 
  136: #define QERR_MISSING_PARAMETER \
  137:     "{ 'class': 'MissingParameter', 'data': { 'name': %s } }"
  138: 
  139: #define QERR_NO_BUS_FOR_DEVICE \
  140:     "{ 'class': 'NoBusForDevice', 'data': { 'device': %s, 'bus': %s } }"
  141: 
  142: #define QERR_OPEN_FILE_FAILED \
  143:     "{ 'class': 'OpenFileFailed', 'data': { 'filename': %s } }"
  144: 
  145: #define QERR_PROPERTY_NOT_FOUND \
  146:     "{ 'class': 'PropertyNotFound', 'data': { 'device': %s, 'property': %s } }"
  147: 
  148: #define QERR_PROPERTY_VALUE_BAD \
  149:     "{ 'class': 'PropertyValueBad', 'data': { 'device': %s, 'property': %s, 'value': %s } }"
  150: 
  151: #define QERR_PROPERTY_VALUE_IN_USE \
  152:     "{ 'class': 'PropertyValueInUse', 'data': { 'device': %s, 'property': %s, 'value': %s } }"
  153: 
  154: #define QERR_PROPERTY_VALUE_NOT_FOUND \
  155:     "{ 'class': 'PropertyValueNotFound', 'data': { 'device': %s, 'property': %s, 'value': %s } }"
  156: 
  157: #define QERR_QMP_BAD_INPUT_OBJECT \
  158:     "{ 'class': 'QMPBadInputObject', 'data': { 'expected': %s } }"
  159: 
  160: #define QERR_QMP_BAD_INPUT_OBJECT_MEMBER \
  161:     "{ 'class': 'QMPBadInputObjectMember', 'data': { 'member': %s, 'expected': %s } }"
  162: 
  163: #define QERR_QMP_EXTRA_MEMBER \
  164:     "{ 'class': 'QMPExtraInputObjectMember', 'data': { 'member': %s } }"
  165: 
  166: #define QERR_SET_PASSWD_FAILED \
  167:     "{ 'class': 'SetPasswdFailed', 'data': {} }"
  168: 
  169: #define QERR_ADD_CLIENT_FAILED \
  170:     "{ 'class': 'AddClientFailed', 'data': {} }"
  171: 
  172: #define QERR_TOO_MANY_FILES \
  173:     "{ 'class': 'TooManyFiles', 'data': {} }"
  174: 
  175: #define QERR_UNDEFINED_ERROR \
  176:     "{ 'class': 'UndefinedError', 'data': {} }"
  177: 
  178: #define QERR_UNSUPPORTED \
  179:     "{ 'class': 'Unsupported', 'data': {} }"
  180: 
  181: #define QERR_UNKNOWN_BLOCK_FORMAT_FEATURE \
  182:     "{ 'class': 'UnknownBlockFormatFeature', 'data': { 'device': %s, 'format': %s, 'feature': %s } }"
  183: 
  184: #define QERR_VNC_SERVER_FAILED \
  185:     "{ 'class': 'VNCServerFailed', 'data': { 'target': %s } }"
  186: 
  187: #define QERR_FEATURE_DISABLED \
  188:     "{ 'class': 'FeatureDisabled', 'data': { 'name': %s } }"
  189: 
  190: #define QERR_QGA_LOGGING_FAILED \
  191:     "{ 'class': 'QgaLoggingFailed', 'data': {} }"
  192: 
  193: #define QERR_QGA_COMMAND_FAILED \
  194:     "{ 'class': 'QgaCommandFailed', 'data': { 'message': %s } }"
  195: 
  196: #endif /* QERROR_H */

unix.superglobalmegacorp.com