OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [rtos/] [freertos-6.1.1/] [Demo/] [CORTEX_AT91SAM3U256_IAR/] [AT91Lib/] [utility/] [assert.h] - Blame information for rev 580

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 580 jeremybenn
/* ----------------------------------------------------------------------------
2
 *         ATMEL Microcontroller Software Support
3
 * ----------------------------------------------------------------------------
4
 * Copyright (c) 2008, Atmel Corporation
5
 *
6
 * All rights reserved.
7
 *
8
 * Redistribution and use in source and binary forms, with or without
9
 * modification, are permitted provided that the following conditions are met:
10
 *
11
 * - Redistributions of source code must retain the above copyright notice,
12
 * this list of conditions and the disclaimer below.
13
 *
14
 * Atmel's name may not be used to endorse or promote products derived from
15
 * this software without specific prior written permission.
16
 *
17
 * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR
18
 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
19
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
20
 * DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, INDIRECT,
21
 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22
 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
23
 * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
24
 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
25
 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
26
 * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27
 * ----------------------------------------------------------------------------
28
 */
29
 
30
//------------------------------------------------------------------------------
31
/// \unit
32
///
33
/// !Purpose
34
///
35
/// Definition of the ASSERT() and SANITY_CHECK() macros, which are used for
36
/// runtime condition & parameter verifying.
37
///
38
/// !Usage
39
///
40
/// -# Use ASSERT() in your code to check the value of function parameters,
41
///    return values, etc. *Warning:* the ASSERT() condition must not have
42
///    any side-effect; otherwise, the program may not work properly
43
///    anymore when assertions are disabled.
44
/// -# Use SANITY_CHECK() to perform checks with a default error message
45
///    (outputs the file and line number where the error occured). This 
46
///    reduces memory overhead caused by assertion error strings.
47
/// -# Initialize the dbgu to see failed assertions at run-time.
48
/// -# Assertions can be entirely disabled by defining the NOASSERT symbol
49
///    at compilation time.
50
//------------------------------------------------------------------------------
51
 
52
#ifndef ASSERT_H
53
#define ASSERT_H
54
 
55
//------------------------------------------------------------------------------
56
//         Headers
57
//------------------------------------------------------------------------------
58
 
59
#include <stdio.h>
60
#include "trace.h"
61
 
62
//------------------------------------------------------------------------------
63
//         Definitions
64
//------------------------------------------------------------------------------
65
#if defined(NOASSERT)
66
    #define ASSERT(...)
67
    #define SANITY_CHECK(...)
68
#else
69
 
70
    #if (TRACE_LEVEL == 0)
71
        /// Checks that the given condition is true, 
72
        /// otherwise stops the program execution.
73
        /// \param condition  Condition to verify.
74
        #define ASSERT(condition, ...)  { \
75
            if (!(condition)) { \
76
                while (1); \
77
            } \
78
        }
79
 
80
        /// Performs the same duty as the ASSERT() macro
81
        /// \param condition  Condition to verify.
82
        #define SANITY_CHECK(condition) ASSERT(condition, ...)
83
 
84
    #else
85
        /// Checks that the given condition is true, otherwise displays an error
86
        /// message and stops the program execution.
87
        /// \param condition  Condition to verify.
88
        #define ASSERT(condition, ...)  { \
89
            if (!(condition)) { \
90
                printf("-F- ASSERT: "); \
91
                printf(__VA_ARGS__); \
92
                while (1); \
93
            } \
94
        }
95
        #define SANITY_ERROR            "Sanity check failed at %s:%d\n\r"
96
 
97
        /// Performs the same duty as the ASSERT() macro, except a default error
98
        /// message is output if the condition is false.
99
        /// \param condition  Condition to verify.
100
        #define SANITY_CHECK(condition) ASSERT(condition, SANITY_ERROR, __FILE__, __LINE__)
101
    #endif
102
#endif
103
 
104
 
105
 
106
 
107
 
108
 
109
 
110
 
111
 
112
 
113
#endif //#ifndef ASSERT_H
114
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.