Statistics
| Branch: | Revision:

root / error.h @ df1e608a

History | View | Annotate | Download (1.5 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
 * Returns true if an indirect pointer to an error is pointing to a valid
34
 * error object.
35
 */
36
bool error_is_set(Error **err);
37

    
38
/*
39
 * Get the error class of an error object.
40
 */
41
ErrorClass error_get_class(const Error *err);
42

    
43
/**
44
 * Returns an exact copy of the error passed as an argument.
45
 */
46
Error *error_copy(const Error *err);
47

    
48
/**
49
 * Get a human readable representation of an error object.
50
 */
51
const char *error_get_pretty(Error *err);
52

    
53
/**
54
 * Propagate an error to an indirect pointer to an error.  This function will
55
 * always transfer ownership of the error reference and handles the case where
56
 * dst_err is NULL correctly.  Errors after the first are discarded.
57
 */
58
void error_propagate(Error **dst_err, Error *local_err);
59

    
60
/**
61
 * Free an error object.
62
 */
63
void error_free(Error *err);
64

    
65
#endif