1/*
2 * Copyright (C) 2017 Oracle Corporation
3 *
4 * Permission is hereby granted, free of charge, to any person obtaining a
5 * copy of this software and associated documentation files (the "Software"),
6 * to deal in the Software without restriction, including without limitation
7 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
8 * and/or sell copies of the Software, and to permit persons to whom the
9 * Software is furnished to do so, subject to the following conditions:
10 *
11 * The above copyright notice and this permission notice shall be included in
12 * all copies or substantial portions of the Software.
13 *
14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
17 * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
18 * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
19 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
20 * OTHER DEALINGS IN THE SOFTWARE.
21 *
22 * Authors: Michael Thayer <michael.thayer@oracle.com>
23 */
24
25#ifndef __VBOX_ERR_H__
26#define __VBOX_ERR_H__
27
28/** @name VirtualBox error macros
29 * @{ */
30
31#define VINF_SUCCESS                        0
32#define VERR_INVALID_PARAMETER              (-2)
33#define VERR_INVALID_POINTER                (-6)
34#define VERR_NO_MEMORY                      (-8)
35#define VERR_NOT_IMPLEMENTED                (-12)
36#define VERR_INVALID_FUNCTION               (-36)
37#define VERR_NOT_SUPPORTED                  (-37)
38#define VERR_TOO_MUCH_DATA                  (-42)
39#define VERR_NOT_FOUND                      (-78)
40#define VERR_INVALID_STATE                  (-79)
41#define VERR_OUT_OF_RESOURCES               (-80)
42#define VERR_ALREADY_EXISTS                 (-105)
43#define VERR_INTERNAL_ERROR                 (-225)
44
45#define RT_SUCCESS_NP(rc)   ( (int)(rc) >= VINF_SUCCESS )
46#define RT_SUCCESS(rc)      ( likely(RT_SUCCESS_NP(rc)) )
47#define RT_FAILURE(rc)      ( unlikely(!RT_SUCCESS_NP(rc)) )
48
49/** @}  */
50
51/** @name VirtualBox assertions
52 * @{ */
53
54/* Unlike BUILD_BUG_ON(), these can be used outside of functions. */
55extern int vbox_assert_var[1];
56#define assert_compile(expr) \
57    extern int vbox_assert_var[1] __attribute__((__unused__)), \
58    vbox_assert_var[(expr) ? 1 : 0] __attribute__((__unused__))
59#define assert_compile_size(type, size) \
60    assert_compile(sizeof(type) == (size))
61
62/** @}  */
63
64#endif
65