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 "qapi/qmp/qstring.h" 16 #include "qemu/error-report.h" 17 #include "qapi/error.h" 18 #include "qapi-types.h" 19 #include <stdarg.h> 20 21 typedef struct QError { 22 QObject_HEAD; 23 Location loc; 24 char *err_msg; 25 ErrorClass err_class; 26 } QError; 27 28 QString *qerror_human(const QError *qerror); 29 void qerror_report(ErrorClass err_class, const char *fmt, ...) GCC_FMT_ATTR(2, 3); 30 void qerror_report_err(Error *err); 31 32 /* 33 * QError class list 34 * Please keep the definitions in alphabetical order. 35 * Use scripts/check-qerror.sh to check. 36 */ 37 #define QERR_BASE_NOT_FOUND \ 38 ERROR_CLASS_GENERIC_ERROR, "Base '%s' not found" 39 40 #define QERR_BLOCK_FORMAT_FEATURE_NOT_SUPPORTED \ 41 ERROR_CLASS_GENERIC_ERROR, "Block format '%s' used by device '%s' does not support feature '%s'" 42 43 #define QERR_BLOCK_JOB_NOT_READY \ 44 ERROR_CLASS_GENERIC_ERROR, "The active block job for device '%s' cannot be completed" 45 46 #define QERR_BUS_NO_HOTPLUG \ 47 ERROR_CLASS_GENERIC_ERROR, "Bus '%s' does not support hotplugging" 48 49 #define QERR_BUS_NOT_FOUND \ 50 ERROR_CLASS_GENERIC_ERROR, "Bus '%s' not found" 51 52 #define QERR_DEVICE_HAS_NO_MEDIUM \ 53 ERROR_CLASS_GENERIC_ERROR, "Device '%s' has no medium" 54 55 #define QERR_DEVICE_INIT_FAILED \ 56 ERROR_CLASS_GENERIC_ERROR, "Device '%s' could not be initialized" 57 58 #define QERR_DEVICE_IN_USE \ 59 ERROR_CLASS_GENERIC_ERROR, "Device '%s' is in use" 60 61 #define QERR_DEVICE_IS_READ_ONLY \ 62 ERROR_CLASS_GENERIC_ERROR, "Device '%s' is read only" 63 64 #define QERR_DEVICE_NO_HOTPLUG \ 65 ERROR_CLASS_GENERIC_ERROR, "Device '%s' does not support hotplugging" 66 67 #define QERR_DEVICE_NOT_FOUND \ 68 ERROR_CLASS_DEVICE_NOT_FOUND, "Device '%s' not found" 69 70 #define QERR_FD_NOT_FOUND \ 71 ERROR_CLASS_GENERIC_ERROR, "File descriptor named '%s' not found" 72 73 #define QERR_FD_NOT_SUPPLIED \ 74 ERROR_CLASS_GENERIC_ERROR, "No file descriptor supplied via SCM_RIGHTS" 75 76 #define QERR_FEATURE_DISABLED \ 77 ERROR_CLASS_GENERIC_ERROR, "The feature '%s' is not enabled" 78 79 #define QERR_INVALID_BLOCK_FORMAT \ 80 ERROR_CLASS_GENERIC_ERROR, "Invalid block format '%s'" 81 82 #define QERR_INVALID_PARAMETER \ 83 ERROR_CLASS_GENERIC_ERROR, "Invalid parameter '%s'" 84 85 #define QERR_INVALID_PARAMETER_TYPE \ 86 ERROR_CLASS_GENERIC_ERROR, "Invalid parameter type for '%s', expected: %s" 87 88 #define QERR_INVALID_PARAMETER_VALUE \ 89 ERROR_CLASS_GENERIC_ERROR, "Parameter '%s' expects %s" 90 91 #define QERR_INVALID_PASSWORD \ 92 ERROR_CLASS_GENERIC_ERROR, "Password incorrect" 93 94 #define QERR_IO_ERROR \ 95 ERROR_CLASS_GENERIC_ERROR, "An IO error has occurred" 96 97 #define QERR_JSON_PARSING \ 98 ERROR_CLASS_GENERIC_ERROR, "Invalid JSON syntax" 99 100 #define QERR_MIGRATION_ACTIVE \ 101 ERROR_CLASS_GENERIC_ERROR, "There's a migration process in progress" 102 103 #define QERR_MISSING_PARAMETER \ 104 ERROR_CLASS_GENERIC_ERROR, "Parameter '%s' is missing" 105 106 #define QERR_PERMISSION_DENIED \ 107 ERROR_CLASS_GENERIC_ERROR, "Insufficient permission to perform this operation" 108 109 #define QERR_PROPERTY_VALUE_BAD \ 110 ERROR_CLASS_GENERIC_ERROR, "Property '%s.%s' doesn't take value '%s'" 111 112 #define QERR_PROPERTY_VALUE_OUT_OF_RANGE \ 113 ERROR_CLASS_GENERIC_ERROR, "Property %s.%s doesn't take value %" PRId64 " (minimum: %" PRId64 ", maximum: %" PRId64 ")" 114 115 #define QERR_QGA_COMMAND_FAILED \ 116 ERROR_CLASS_GENERIC_ERROR, "Guest agent command failed, error was '%s'" 117 118 #define QERR_QMP_BAD_INPUT_OBJECT \ 119 ERROR_CLASS_GENERIC_ERROR, "Expected '%s' in QMP input" 120 121 #define QERR_QMP_BAD_INPUT_OBJECT_MEMBER \ 122 ERROR_CLASS_GENERIC_ERROR, "QMP input object member '%s' expects '%s'" 123 124 #define QERR_QMP_EXTRA_MEMBER \ 125 ERROR_CLASS_GENERIC_ERROR, "QMP input object member '%s' is unexpected" 126 127 #define QERR_SET_PASSWD_FAILED \ 128 ERROR_CLASS_GENERIC_ERROR, "Could not set password" 129 130 #define QERR_UNDEFINED_ERROR \ 131 ERROR_CLASS_GENERIC_ERROR, "An undefined error has occurred" 132 133 #define QERR_UNKNOWN_BLOCK_FORMAT_FEATURE \ 134 ERROR_CLASS_GENERIC_ERROR, "'%s' uses a %s feature which is not supported by this qemu version: %s" 135 136 #define QERR_UNSUPPORTED \ 137 ERROR_CLASS_GENERIC_ERROR, "this feature or command is not currently supported" 138 139 #endif /* QERROR_H */ 140