RTEMS 6.1-rc2
Loading...
Searching...
No Matches
assert.h
Go to the documentation of this file.
1/* SPDX-License-Identifier: BSD-2-Clause */
2
12/*
13 * Copyright (C) 2013, 2014 embedded brains GmbH & Co. KG
14 *
15 * Redistribution and use in source and binary forms, with or without
16 * modification, are permitted provided that the following conditions
17 * are met:
18 * 1. Redistributions of source code must retain the above copyright
19 * notice, this list of conditions and the following disclaimer.
20 * 2. Redistributions in binary form must reproduce the above copyright
21 * notice, this list of conditions and the following disclaimer in the
22 * documentation and/or other materials provided with the distribution.
23 *
24 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
25 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
26 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
27 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
28 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
29 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
30 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
31 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
32 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
33 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
34 * POSSIBILITY OF SUCH DAMAGE.
35 */
36
37#ifndef _RTEMS_SCORE_ASSERT_H
38#define _RTEMS_SCORE_ASSERT_H
39
41
52#if defined( RTEMS_DEBUG )
53 #include <assert.h>
54#endif
55
56#ifdef __cplusplus
57extern "C" {
58#endif /* __cplusplus */
59
64#if defined( RTEMS_DEBUG ) || defined( RTEMS_STATIC_ANALYSIS )
65
73 #ifndef __RTEMS_ASSERT_FUNCTION
74 #define __RTEMS_ASSERT_FUNCTION RTEMS_FUNCTION_NAME
75 #endif /* !__RTEMS_ASSERT_FUNCTION */
76
77 #if !defined( RTEMS_SCHEDSIM )
78 /* normal build is newlib. */
79
80 #define _Assert( _e ) \
81 ( ( _e ) ? \
82 ( void ) 0 : \
83 __assert_func( __FILE__, __LINE__, __RTEMS_ASSERT_FUNCTION, #_e ) )
84
85 #elif defined(__linux__)
86 /* Scheduler simulator has only beed tested on glibc. */
87 #define _Assert( _e ) \
88 ( ( _e ) ? \
89 ( void ) 0 : \
90 __assert_fail( #_e, __FILE__, __LINE__, __RTEMS_ASSERT_FUNCTION ) )
91 #else
92 #error "Implement RTEMS assert support for this C Library"
93 #endif
94
95#else
96 #define _Assert( _e ) ( ( void ) 0 )
97#endif
98
108#define _Assert_Unused_variable_equals(_var,_val) \
109 do { \
110 _Assert((_var) == (_val)); \
111 (void) (_var); \
112 } while (0)
113
123#define _Assert_Unused_variable_unequal(_var,_val) \
124 do { \
125 _Assert((_var) != (_val)); \
126 (void) (_var); \
127 } while (0)
128
135#if defined( RTEMS_DEBUG )
136 bool _Debug_Is_thread_dispatching_allowed( void );
137#endif
138
139#ifdef __cplusplus
140}
141#endif /* __cplusplus */
142
145#endif /* _RTEMS_SCORE_ASSERT_H */
This header file provides the interfaces of the Assert Handler.
This header file provides basic definitions used by the API and the implementation.