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