Statistics
| Branch: | Revision:

root / error.h @ d3608b7c

History | View | Annotate | Download (1.7 kB)

1 d5ec4f27 Luiz Capitulino
/*
2 d5ec4f27 Luiz Capitulino
 * QEMU Error Objects
3 d5ec4f27 Luiz Capitulino
 *
4 d5ec4f27 Luiz Capitulino
 * Copyright IBM, Corp. 2011
5 d5ec4f27 Luiz Capitulino
 *
6 d5ec4f27 Luiz Capitulino
 * Authors:
7 d5ec4f27 Luiz Capitulino
 *  Anthony Liguori   <aliguori@us.ibm.com>
8 d5ec4f27 Luiz Capitulino
 *
9 d5ec4f27 Luiz Capitulino
 * This work is licensed under the terms of the GNU LGPL, version 2.  See
10 d5ec4f27 Luiz Capitulino
 * the COPYING.LIB file in the top-level directory.
11 d5ec4f27 Luiz Capitulino
 */
12 d5ec4f27 Luiz Capitulino
#ifndef ERROR_H
13 d5ec4f27 Luiz Capitulino
#define ERROR_H
14 d5ec4f27 Luiz Capitulino
15 d3608b7c Luiz Capitulino
#include "compiler.h"
16 d5ec4f27 Luiz Capitulino
#include <stdbool.h>
17 d5ec4f27 Luiz Capitulino
18 d5ec4f27 Luiz Capitulino
/**
19 d5ec4f27 Luiz Capitulino
 * A class representing internal errors within QEMU.  An error has a string
20 d5ec4f27 Luiz Capitulino
 * typename and optionally a set of named string parameters.
21 d5ec4f27 Luiz Capitulino
 */
22 d5ec4f27 Luiz Capitulino
typedef struct Error Error;
23 d5ec4f27 Luiz Capitulino
24 d5ec4f27 Luiz Capitulino
/**
25 d5ec4f27 Luiz Capitulino
 * Set an indirect pointer to an error given a printf-style format parameter.
26 d5ec4f27 Luiz Capitulino
 * Currently, qerror.h defines these error formats.  This function is not
27 d5ec4f27 Luiz Capitulino
 * meant to be used outside of QEMU.
28 d5ec4f27 Luiz Capitulino
 */
29 e4ea5e2d Stefan Weil
void error_set(Error **err, const char *fmt, ...) GCC_FMT_ATTR(2, 3);
30 d5ec4f27 Luiz Capitulino
31 d5ec4f27 Luiz Capitulino
/**
32 d5ec4f27 Luiz Capitulino
 * Returns true if an indirect pointer to an error is pointing to a valid
33 d5ec4f27 Luiz Capitulino
 * error object.
34 d5ec4f27 Luiz Capitulino
 */
35 d5ec4f27 Luiz Capitulino
bool error_is_set(Error **err);
36 d5ec4f27 Luiz Capitulino
37 d5ec4f27 Luiz Capitulino
/**
38 d5ec4f27 Luiz Capitulino
 * Get a human readable representation of an error object.
39 d5ec4f27 Luiz Capitulino
 */
40 d5ec4f27 Luiz Capitulino
const char *error_get_pretty(Error *err);
41 d5ec4f27 Luiz Capitulino
42 d5ec4f27 Luiz Capitulino
/**
43 d5ec4f27 Luiz Capitulino
 * Get an individual named error field.
44 d5ec4f27 Luiz Capitulino
 */
45 d5ec4f27 Luiz Capitulino
const char *error_get_field(Error *err, const char *field);
46 d5ec4f27 Luiz Capitulino
47 d5ec4f27 Luiz Capitulino
/**
48 d5ec4f27 Luiz Capitulino
 * Get an individual named error field.
49 d5ec4f27 Luiz Capitulino
 */
50 d5ec4f27 Luiz Capitulino
void error_set_field(Error *err, const char *field, const char *value);
51 d5ec4f27 Luiz Capitulino
52 d5ec4f27 Luiz Capitulino
/**
53 d5ec4f27 Luiz Capitulino
 * Propagate an error to an indirect pointer to an error.  This function will
54 d5ec4f27 Luiz Capitulino
 * always transfer ownership of the error reference and handles the case where
55 d5ec4f27 Luiz Capitulino
 * dst_err is NULL correctly.
56 d5ec4f27 Luiz Capitulino
 */
57 d5ec4f27 Luiz Capitulino
void error_propagate(Error **dst_err, Error *local_err);
58 d5ec4f27 Luiz Capitulino
59 d5ec4f27 Luiz Capitulino
/**
60 d5ec4f27 Luiz Capitulino
 * Free an error object.
61 d5ec4f27 Luiz Capitulino
 */
62 d5ec4f27 Luiz Capitulino
void error_free(Error *err);
63 d5ec4f27 Luiz Capitulino
64 d5ec4f27 Luiz Capitulino
/**
65 d5ec4f27 Luiz Capitulino
 * Determine if an error is of a speific type (based on the qerror format).
66 d5ec4f27 Luiz Capitulino
 * Non-QEMU users should get the `class' field to identify the error type.
67 d5ec4f27 Luiz Capitulino
 */
68 d5ec4f27 Luiz Capitulino
bool error_is_type(Error *err, const char *fmt);
69 d5ec4f27 Luiz Capitulino
70 d5ec4f27 Luiz Capitulino
#endif