Statistics
| Branch: | Revision:

root / error.h @ dc1c13d9

History | View | Annotate | Download (1.7 kB)

1
/*
2
 * QEMU Error Objects
3
 *
4
 * Copyright IBM, Corp. 2011
5
 *
6
 * Authors:
7
 *  Anthony Liguori   <aliguori@us.ibm.com>
8
 *
9
 * This work is licensed under the terms of the GNU LGPL, version 2.  See
10
 * the COPYING.LIB file in the top-level directory.
11
 */
12
#ifndef ERROR_H
13
#define ERROR_H
14

    
15
#include "compiler.h"
16
#include "qapi-types.h"
17
#include <stdbool.h>
18

    
19
/**
20
 * A class representing internal errors within QEMU.  An error has a ErrorClass
21
 * code and a human message.
22
 */
23
typedef struct Error Error;
24

    
25
/**
26
 * Set an indirect pointer to an error given a ErrorClass value and a
27
 * printf-style human message.  This function is not meant to be used outside
28
 * of QEMU.
29
 */
30
void error_set(Error **err, ErrorClass err_class, const char *fmt, ...) GCC_FMT_ATTR(3, 4);
31

    
32
/**
33
 * Same as error_set(), but sets a generic error
34
 */
35
#define error_setg(err, fmt, ...) \
36
    error_set(err, ERROR_CLASS_GENERIC_ERROR, fmt, ## __VA_ARGS__)
37

    
38
/**
39
 * Returns true if an indirect pointer to an error is pointing to a valid
40
 * error object.
41
 */
42
bool error_is_set(Error **err);
43

    
44
/*
45
 * Get the error class of an error object.
46
 */
47
ErrorClass error_get_class(const Error *err);
48

    
49
/**
50
 * Returns an exact copy of the error passed as an argument.
51
 */
52
Error *error_copy(const Error *err);
53

    
54
/**
55
 * Get a human readable representation of an error object.
56
 */
57
const char *error_get_pretty(Error *err);
58

    
59
/**
60
 * Propagate an error to an indirect pointer to an error.  This function will
61
 * always transfer ownership of the error reference and handles the case where
62
 * dst_err is NULL correctly.  Errors after the first are discarded.
63
 */
64
void error_propagate(Error **dst_err, Error *local_err);
65

    
66
/**
67
 * Free an error object.
68
 */
69
void error_free(Error *err);
70

    
71
#endif