2005-04-17 02:20:36 +04:00
/*
2005-11-02 06:58:39 +03:00
* Copyright ( c ) 2000 - 2005 Silicon Graphics , Inc .
* All Rights Reserved .
2005-04-17 02:20:36 +04:00
*
2005-11-02 06:58:39 +03:00
* This program is free software ; you can redistribute it and / or
* modify it under the terms of the GNU General Public License as
2005-04-17 02:20:36 +04:00
* published by the Free Software Foundation .
*
2005-11-02 06:58:39 +03:00
* This program is distributed in the hope that it would be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
* GNU General Public License for more details .
2005-04-17 02:20:36 +04:00
*
2005-11-02 06:58:39 +03:00
* You should have received a copy of the GNU General Public License
* along with this program ; if not , write the Free Software Foundation ,
* Inc . , 51 Franklin St , Fifth Floor , Boston , MA 02110 - 1301 USA
2005-04-17 02:20:36 +04:00
*/
# ifndef __XFS_SUPPORT_DEBUG_H__
# define __XFS_SUPPORT_DEBUG_H__
# include <stdarg.h>
# define CE_DEBUG 7 /* debug */
# define CE_CONT 6 /* continuation */
# define CE_NOTE 5 /* notice */
# define CE_WARN 4 /* warning */
# define CE_ALERT 1 /* alert */
# define CE_PANIC 0 /* panic */
2005-11-02 02:21:35 +03:00
extern void icmn_err ( int , char * , va_list )
__attribute__ ( ( format ( printf , 2 , 0 ) ) ) ;
extern void cmn_err ( int , char * , . . . )
__attribute__ ( ( format ( printf , 2 , 3 ) ) ) ;
2006-01-12 02:29:53 +03:00
extern void assfail ( char * expr , char * f , int l ) ;
2005-04-17 02:20:36 +04:00
2006-01-12 02:29:53 +03:00
# define ASSERT_ALWAYS(expr) \
2007-08-16 09:38:08 +04:00
( unlikely ( expr ) ? ( void ) 0 : assfail ( # expr , __FILE__ , __LINE__ ) )
2005-04-17 02:20:36 +04:00
2006-01-12 02:29:53 +03:00
# ifndef DEBUG
2007-08-16 09:38:08 +04:00
# define ASSERT(expr) ((void)0)
2007-02-10 10:34:56 +03:00
# ifndef STATIC
# define STATIC static noinline
# endif
# ifndef STATIC_INLINE
# define STATIC_INLINE static inline
# endif
# else /* DEBUG */
2007-08-16 09:38:08 +04:00
# define ASSERT(expr) \
( unlikely ( expr ) ? ( void ) 0 : assfail ( # expr , __FILE__ , __LINE__ ) )
2005-04-17 02:20:36 +04:00
2006-01-12 02:29:53 +03:00
# ifndef STATIC
2007-02-10 10:34:56 +03:00
# define STATIC noinline
2006-01-12 02:29:53 +03:00
# endif
2005-04-17 02:20:36 +04:00
2007-02-10 10:34:56 +03:00
/*
* We stop inlining of inline functions in debug mode .
* Unfortunately , this means static inline in header files
* get multiple definitions , so they need to remain static .
* This then gives tonnes of warnings about unused but defined
* functions , so we need to add the unused attribute to prevent
* these spurious warnings .
*/
# ifndef STATIC_INLINE
# define STATIC_INLINE static __attribute__ ((unused)) noinline
# endif
# endif /* DEBUG */
2005-04-17 02:20:36 +04:00
# endif /* __XFS_SUPPORT_DEBUG_H__ */