diff packages/infra/current/src/null.cxx @ 0:3111d98ba7b3 ecos-v1_1-release

Initial commit of eCos version 1.1
author jlarmour
date Tue, 11 May 1999 11:16:07 +0000
parents
children 443894e2e912
line wrap: on
line diff
new file mode 100644
--- /dev/null
+++ b/packages/infra/current/src/null.cxx
@@ -0,0 +1,168 @@
+//==========================================================================
+//
+//	null.cxx
+//
+//	Null trace and assert functions
+//
+//==========================================================================
+//####COPYRIGHTBEGIN####
+//
+// -------------------------------------------
+// The contents of this file are subject to the Cygnus eCos Public License
+// Version 1.0 (the "License"); you may not use this file except in
+// compliance with the License.  You may obtain a copy of the License at
+// http://sourceware.cygnus.com/ecos
+// 
+// Software distributed under the License is distributed on an "AS IS"
+// basis, WITHOUT WARRANTY OF ANY KIND, either express or implied.  See the
+// License for the specific language governing rights and limitations under
+// the License.
+// 
+// The Original Code is eCos - Embedded Cygnus Operating System, released
+// September 30, 1998.
+// 
+// The Initial Developer of the Original Code is Cygnus.  Portions created
+// by Cygnus are Copyright (C) 1998 Cygnus Solutions.  All Rights Reserved.
+// -------------------------------------------
+//
+//####COPYRIGHTEND####
+//==========================================================================
+//#####DESCRIPTIONBEGIN####
+//
+// Author(s): 	nickg
+// Contributors:	nickg
+// Date:	1997-09-15
+// Purpose:	Trace and assert functions
+// Description:	The functions in this file are null implementations of the
+//              standard trace and assert functions. These can be used to
+//              eliminate all trace and assert messages without recompiling.
+//
+//####DESCRIPTIONEND####
+//
+//==========================================================================
+
+#include <pkgconf/infra.h>
+
+#ifndef CYGDBG_USE_ASSERTS
+// then you get an empty function regardless, so that other code can link:
+// (for example libc assert() calls this whether or not eCos code has
+//  asserts enabled - of course if it does, assert() maps to the chosen
+//  implementation; if not, it's the same inner function to breakpoint.)
+
+#include <cyg/infra/cyg_type.h>        // base types
+#include <cyg/infra/cyg_trac.h>        // tracing macros
+#include <cyg/infra/cyg_ass.h>         // assertion macros
+
+externC void
+cyg_assert_fail( char *psz_func, char *psz_file, cyg_uint32 linenum,
+                 char *psz_msg )
+{
+    for(;;);
+};
+#endif // not CYGDBG_USE_ASSERTS
+
+#ifdef CYGDBG_INFRA_DEBUG_TRACE_ASSERT_NULL
+
+#include <cyg/infra/cyg_type.h>        // base types
+#include <cyg/infra/cyg_trac.h>        // tracing macros
+#include <cyg/infra/cyg_ass.h>         // assertion macros
+
+// -------------------------------------------------------------------------
+// Trace functions:
+
+#ifdef CYGDBG_USE_TRACING
+
+externC void
+cyg_tracenomsg( char *psz_func, char *psz_file, cyg_uint32 linenum )
+{}
+
+// provide every other one of these as a space/caller bloat compromise.
+
+externC void
+cyg_tracemsg( cyg_uint32 what, 
+              char *psz_func, char *psz_file, cyg_uint32 linenum,
+              char *psz_msg )
+{}
+
+externC void
+cyg_tracemsg2( cyg_uint32 what, 
+               char *psz_func, char *psz_file, cyg_uint32 linenum,
+               char *psz_msg,
+               CYG_ADDRWORD arg0,  CYG_ADDRWORD arg1 )
+{}
+externC void
+cyg_tracemsg4( cyg_uint32 what, 
+               char *psz_func, char *psz_file, cyg_uint32 linenum,
+               char *psz_msg,
+               CYG_ADDRWORD arg0,  CYG_ADDRWORD arg1,
+               CYG_ADDRWORD arg2,  CYG_ADDRWORD arg3 )
+{}
+externC void
+cyg_tracemsg6( cyg_uint32 what, 
+               char *psz_func, char *psz_file, cyg_uint32 linenum,
+               char *psz_msg,
+               CYG_ADDRWORD arg0,  CYG_ADDRWORD arg1,
+               CYG_ADDRWORD arg2,  CYG_ADDRWORD arg3,
+               CYG_ADDRWORD arg4,  CYG_ADDRWORD arg5 )
+{}
+externC void
+cyg_tracemsg8( cyg_uint32 what, 
+               char *psz_func, char *psz_file, cyg_uint32 linenum,
+               char *psz_msg,
+               CYG_ADDRWORD arg0,  CYG_ADDRWORD arg1,
+               CYG_ADDRWORD arg2,  CYG_ADDRWORD arg3,
+               CYG_ADDRWORD arg4,  CYG_ADDRWORD arg5,
+               CYG_ADDRWORD arg6,  CYG_ADDRWORD arg7 )
+{}
+
+#endif // CYGDBG_USE_TRACING
+
+// -------------------------------------------------------------------------
+// Assert functions:
+
+#ifdef CYGDBG_USE_ASSERTS
+
+externC void
+cyg_assert_fail( char *psz_func, char *psz_file, cyg_uint32 linenum,
+                 char *psz_msg )
+{
+    for(;;);
+};
+
+extern "C"
+{
+extern unsigned long CYG_LABEL_NAME(stext);
+extern unsigned long CYG_LABEL_NAME(etext);
+
+unsigned long stext_addr = (unsigned long)&CYG_LABEL_NAME(stext);
+unsigned long etext_addr = (unsigned long)&CYG_LABEL_NAME(etext);
+};
+
+externC cyg_bool cyg_check_data_ptr(void *ptr)
+{
+    unsigned long p = (unsigned long)ptr;
+    
+    if( p == 0 ) return false;
+
+    if( p > stext_addr && p < etext_addr ) return false;
+
+    return true;
+}
+
+externC cyg_bool cyg_check_func_ptr(void (*ptr)(void))
+{
+    unsigned long p = (unsigned long)ptr;
+    
+    if( p == 0 ) return false;
+
+    if( p < stext_addr && p > etext_addr ) return false;
+
+    return true;
+}
+
+#endif // CYGDBG_USE_ASSERTS
+
+#endif // CYGDBG_INFRA_DEBUG_TRACE_ASSERT_NULL
+
+// -------------------------------------------------------------------------
+// EOF null.cxx