Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(6)

Unified Diff: arch/arm/mach-tegra/nv/include/nverror.h

Issue 3256004: [ARM] tegra: add nvos/nvrm/nvmap drivers (Closed) Base URL: ssh://git@gitrw.chromium.org/kernel.git
Patch Set: remove ap15 headers Created 10 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « arch/arm/mach-tegra/nv/include/nvec_device.h ('k') | arch/arm/mach-tegra/nv/include/nverrval.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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
« no previous file with comments | « arch/arm/mach-tegra/nv/include/nvec_device.h ('k') | arch/arm/mach-tegra/nv/include/nverrval.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698