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 |