| Index: arch/arm/mach-tegra/nv/include/nverror.h
|
| diff --git a/arch/arm/mach-tegra/nv/include/nverror.h b/arch/arm/mach-tegra/nv/include/nverror.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..8aa4ae9ce4523bf083092a86b73d4befbef2f0b1
|
| --- /dev/null
|
| +++ b/arch/arm/mach-tegra/nv/include/nverror.h
|
| @@ -0,0 +1,118 @@
|
| +/*
|
| + * Copyright (c) 2006-2009 NVIDIA Corporation.
|
| + * All rights reserved.
|
| + *
|
| + * Redistribution and use in source and binary forms, with or without
|
| + * modification, are permitted provided that the following conditions are met:
|
| + *
|
| + * Redistributions of source code must retain the above copyright notice,
|
| + * this list of conditions and the following disclaimer.
|
| + *
|
| + * Redistributions in binary form must reproduce the above copyright notice,
|
| + * this list of conditions and the following disclaimer in the documentation
|
| + * and/or other materials provided with the distribution.
|
| + *
|
| + * Neither the name of the NVIDIA Corporation nor the names of its contributors
|
| + * may be used to endorse or promote products derived from this software
|
| + * without specific prior written permission.
|
| + *
|
| + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
| + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
| + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
| + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
|
| + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
| + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
| + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
| + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
| + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
| + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
| + * POSSIBILITY OF SUCH DAMAGE.
|
| + *
|
| + */
|
| +
|
| +#ifndef INCLUDED_NVERROR_H
|
| +#define INCLUDED_NVERROR_H
|
| +
|
| +/**
|
| + * @defgroup nverror Error Handling
|
| + *
|
| + * nverror.h contains our error code enumeration and helper macros.
|
| + *
|
| + * @{
|
| + */
|
| +
|
| +/**
|
| + * The NvError enumeration contains ALL return / error codes. Error codes
|
| + * are specifically explicit to make it easy to identify where an error
|
| + * came from.
|
| + *
|
| + * All error codes are derived from the macros in nverrval.h.
|
| + * @ingroup nv_errors
|
| + */
|
| +typedef enum
|
| +{
|
| +#define NVERROR(_name_, _value_, _desc_) NvError_##_name_ = _value_,
|
| + /* header included for macro expansion of error codes */
|
| + #include "nverrval.h"
|
| +#undef NVERROR
|
| +
|
| + // An alias for success
|
| + NvSuccess = NvError_Success,
|
| +
|
| + NvError_Force32 = 0x7FFFFFFF
|
| +} NvError;
|
| +
|
| +/**
|
| + * A helper macro to check a function's error return code and propagate any
|
| + * errors upward. This assumes that no cleanup is necessary in the event of
|
| + * failure. This macro does not locally define its own NvError variable out of
|
| + * fear that this might burn too much stack space, particularly in debug builds
|
| + * or with mediocre optimizing compilers. The user of this macro is therefore
|
| + * expected to provide their own local variable "NvError e;".
|
| + */
|
| +#define NV_CHECK_ERROR(expr) \
|
| + do \
|
| + { \
|
| + e = (expr); \
|
| + if (e != NvSuccess) \
|
| + return e; \
|
| + } while (0)
|
| +
|
| +/**
|
| + * A helper macro to check a function's error return code and, if an error
|
| + * occurs, jump to a label where cleanup can take place. Like NV_CHECK_ERROR,
|
| + * this macro does not locally define its own NvError variable. (Even if we
|
| + * wanted it to, this one can't, because the code at the "fail" label probably
|
| + * needs to do a "return e;" to propagate the error upwards.)
|
| + */
|
| +#define NV_CHECK_ERROR_CLEANUP(expr) \
|
| + do \
|
| + { \
|
| + e = (expr); \
|
| + if (e != NvSuccess) \
|
| + goto fail; \
|
| + } while (0)
|
| +
|
| +
|
| +/**
|
| + * Prints err if it is an error (does nothing if err==NvSuccess).
|
| + * Always returns err unchanged
|
| + * never prints anything if err==NvSuccess)
|
| + *
|
| + * NOTE: Do not use this with errors that are expected to occur under normal
|
| + * situations.
|
| + *
|
| + * @param err - the error to return
|
| + * @returns err
|
| + */
|
| +#define NV_SHOW_ERRORS NV_DEBUG
|
| +#if NV_SHOW_ERRORS
|
| +#define NV_SHOW_ERROR(err) NvOsShowError(err,__FILE__,__LINE__)
|
| +#else
|
| +#define NV_SHOW_ERROR(err) (err)
|
| +#endif
|
| +
|
| +
|
| +/** @} */
|
| +
|
| +#endif // INCLUDED_NVERROR_H
|
|
|