Mercurial > flash_v2
annotate packages/infra/current/src/simple.cxx @ 1777:c16341b1bac6 default tip
* Added execute permissions to files missed in conversion from CVS
| author | alexs |
|---|---|
| date | Mon, 12 Oct 2009 02:26:09 +0100 |
| parents | b43ec5f18a97 |
| children |
| rev | line source |
|---|---|
| 0 | 1 //========================================================================== |
| 2 // | |
| 2 | 3 // simple.cxx |
| 0 | 4 // |
| 5 // Simple, non formatting trace and assert functions | |
| 6 // | |
| 7 //========================================================================== | |
|
208
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
182
diff
changeset
|
8 //####ECOSGPLCOPYRIGHTBEGIN#### |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
182
diff
changeset
|
9 // ------------------------------------------- |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
182
diff
changeset
|
10 // This file is part of eCos, the Embedded Configurable Operating System. |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
182
diff
changeset
|
11 // Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc. |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
182
diff
changeset
|
12 // |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
182
diff
changeset
|
13 // eCos is free software; you can redistribute it and/or modify it under |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
182
diff
changeset
|
14 // the terms of the GNU General Public License as published by the Free |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
182
diff
changeset
|
15 // Software Foundation; either version 2 or (at your option) any later version. |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
182
diff
changeset
|
16 // |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
182
diff
changeset
|
17 // eCos is distributed in the hope that it will be useful, but WITHOUT ANY |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
182
diff
changeset
|
18 // WARRANTY; without even the implied warranty of MERCHANTABILITY or |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
182
diff
changeset
|
19 // FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
182
diff
changeset
|
20 // for more details. |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
182
diff
changeset
|
21 // |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
182
diff
changeset
|
22 // You should have received a copy of the GNU General Public License along |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
182
diff
changeset
|
23 // with eCos; if not, write to the Free Software Foundation, Inc., |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
182
diff
changeset
|
24 // 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
182
diff
changeset
|
25 // |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
182
diff
changeset
|
26 // As a special exception, if other files instantiate templates or use macros |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
182
diff
changeset
|
27 // or inline functions from this file, or you compile this file and link it |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
182
diff
changeset
|
28 // with other works to produce a work based on this file, this file does not |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
182
diff
changeset
|
29 // by itself cause the resulting work to be covered by the GNU General Public |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
182
diff
changeset
|
30 // License. However the source code for this file must still be made available |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
182
diff
changeset
|
31 // in accordance with section (3) of the GNU General Public License. |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
182
diff
changeset
|
32 // |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
182
diff
changeset
|
33 // This exception does not invalidate any other reasons why a work based on |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
182
diff
changeset
|
34 // this file might be covered by the GNU General Public License. |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
182
diff
changeset
|
35 // |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
182
diff
changeset
|
36 // Alternative licenses for eCos may be arranged by contacting Red Hat, Inc. |
|
210
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
208
diff
changeset
|
37 // at http://sources.redhat.com/ecos/ecos-license/ |
|
208
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
182
diff
changeset
|
38 // ------------------------------------------- |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
182
diff
changeset
|
39 //####ECOSGPLCOPYRIGHTEND#### |
| 0 | 40 //========================================================================== |
| 41 //#####DESCRIPTIONBEGIN#### | |
| 42 // | |
| 2 | 43 // Author(s): nickg |
| 44 // Contributors: nickg | |
| 45 // Date: 1997-12-04 | |
| 46 // Purpose: Simple Trace and assert functions | |
| 47 // Description: The functions in this file are simple implementations | |
| 0 | 48 // of the standard trace and assert functions. These do not |
| 49 // do any printf style formatting, simply printing the string | |
| 50 // and arguments directly. | |
| 51 // | |
| 52 //####DESCRIPTIONEND#### | |
| 53 // | |
| 54 //========================================================================== | |
| 55 | |
| 56 #include <pkgconf/system.h> | |
| 57 #include <pkgconf/infra.h> | |
| 58 | |
| 59 #ifdef CYGDBG_INFRA_DEBUG_TRACE_ASSERT_SIMPLE | |
| 60 | |
| 61 #include <cyg/infra/cyg_type.h> // base types | |
| 62 #include <cyg/infra/cyg_trac.h> // tracing macros | |
| 63 #include <cyg/infra/cyg_ass.h> // assertion macros | |
| 64 | |
| 65 #include <pkgconf/hal.h> // HAL configury | |
| 66 #include <cyg/infra/diag.h> // HAL polled output | |
| 67 #include <cyg/hal/hal_arch.h> // architectural stuff for... | |
| 68 #include <cyg/hal/hal_intr.h> // interrupt control | |
| 69 | |
| 70 #ifdef CYGPKG_KERNEL | |
| 71 #include <pkgconf/kernel.h> // kernel configury | |
| 72 #include <cyg/kernel/thread.hxx> // thread id to print | |
| 73 #include <cyg/kernel/sched.hxx> // ancillaries for above | |
| 74 #include <cyg/kernel/thread.inl> // ancillaries for above | |
| 75 #endif | |
| 76 | |
| 77 // ------------------------------------------------------------------------- | |
| 78 // Local Configuration: hack me! | |
| 79 | |
| 80 #define CYG_NO_FILENAME 1 | |
| 81 #define CYG_NO_THREADID 0 | |
| 82 #define CYG_NO_LINENUM 0 | |
| 83 #define CYG_NO_FUNCNAME 0 | |
| 84 #define CYG_DIAG_PRINTF 1 | |
| 85 | |
| 86 #ifndef CYGPKG_KERNEL | |
| 87 # undef CYG_NO_THREADID | |
| 88 # define CYG_NO_THREADID 1 | |
| 89 #endif | |
| 90 // ------------------------------------------------------------------------- | |
| 91 // Functions to trim file names and function names down to printable lengths | |
| 92 // (these are shared between trace and assert functions) | |
| 93 | |
| 2 | 94 static const char *trim_file(const char *file) |
| 0 | 95 { |
| 96 #if !CYG_NO_FILENAME | |
| 97 if ( NULL == file ) | |
| 98 file = "<nofile>"; | |
| 99 | |
| 2 | 100 const char *f = file; |
| 0 | 101 |
| 102 while( *f ) f++; | |
| 103 | |
| 104 while( *f != '/' && f != file ) f--; | |
| 105 | |
| 106 return f==file?f:(f+1); | |
| 107 #else | |
| 108 return ""; | |
| 109 #endif | |
| 110 } | |
| 111 | |
| 2 | 112 static const char *trim_func(const char *func) |
| 0 | 113 { |
| 114 #if !CYG_NO_FUNCNAME | |
| 115 | |
| 116 static char fbuf[100]; | |
| 117 int i; | |
| 118 | |
| 119 if ( NULL == func ) | |
| 120 func = "<nofunc>"; | |
| 121 | |
| 122 for( i = 0; func[i] && func[i] != '(' ; i++ ) | |
| 123 fbuf[i] = func[i]; | |
| 124 | |
| 125 fbuf[i++] = '('; | |
| 126 fbuf[i++] = ')'; | |
| 2 | 127 fbuf[i ] = 0; |
| 0 | 128 |
| 2 | 129 return &fbuf[0]; |
| 0 | 130 #else |
| 131 return ""; | |
| 132 #endif | |
| 133 } | |
| 134 | |
| 135 void write_lnum( cyg_uint32 lnum) | |
| 136 { | |
| 137 #if !CYG_NO_LINENUM | |
| 138 diag_write_char('['); | |
| 139 diag_write_dec(lnum); | |
| 140 diag_write_char(']'); | |
| 141 #endif | |
| 142 } | |
| 143 | |
| 144 void write_thread_id() | |
| 145 { | |
| 146 #if !CYG_NO_THREADID | |
| 147 Cyg_Thread *t = Cyg_Thread::self(); | |
| 148 cyg_uint16 tid = 0xFFFF; | |
| 149 | |
| 150 if( t != NULL ) tid = t->get_unique_id(); | |
| 151 | |
| 152 diag_write_char('<'); | |
| 153 diag_write_hex(tid); | |
| 154 diag_write_char('>'); | |
| 155 #endif | |
| 156 } | |
| 157 | |
| 158 | |
| 159 // ------------------------------------------------------------------------- | |
| 160 // Trace functions: | |
| 161 | |
| 162 #ifdef CYGDBG_USE_TRACING | |
| 163 | |
| 164 externC void | |
|
78
59d97b6ba612
Merge from eCos master repository on 2000-03-28-19:50:47-BST
jlarmour
parents:
74
diff
changeset
|
165 cyg_tracenomsg( const char *psz_func, const char *psz_file, cyg_uint32 linenum ) |
| 0 | 166 { |
| 167 cyg_uint32 old_ints; | |
| 168 | |
| 169 HAL_DISABLE_INTERRUPTS(old_ints); | |
| 170 DIAG_DEVICE_START_SYNC(); | |
| 171 | |
| 172 diag_write_string("TRACE: "); | |
| 173 write_thread_id(); | |
| 174 diag_write_string(trim_file(psz_file)); | |
| 175 write_lnum(linenum); | |
| 176 diag_write_string(trim_func(psz_func)); | |
| 177 diag_write_char('\n'); | |
| 178 | |
| 179 DIAG_DEVICE_END_SYNC(); | |
| 180 HAL_RESTORE_INTERRUPTS(old_ints); | |
| 181 | |
| 182 }; | |
| 183 | |
| 184 // provide every other one of these as a space/caller bloat compromise. | |
| 185 | |
| 186 externC void | |
| 187 cyg_tracemsg( cyg_uint32 what, | |
|
78
59d97b6ba612
Merge from eCos master repository on 2000-03-28-19:50:47-BST
jlarmour
parents:
74
diff
changeset
|
188 const char *psz_func, const char *psz_file, cyg_uint32 linenum, |
|
208
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
182
diff
changeset
|
189 const char *psz_msg ) |
| 0 | 190 { |
| 191 cyg_uint32 old_ints; | |
| 192 | |
| 193 HAL_DISABLE_INTERRUPTS(old_ints); | |
| 194 DIAG_DEVICE_START_SYNC(); | |
| 195 | |
| 196 if ( NULL == psz_msg ) | |
| 197 psz_msg = "<nomsg>"; | |
| 198 | |
| 199 diag_write_string("TRACE: "); | |
| 200 write_thread_id(); | |
| 201 diag_write_string(trim_file(psz_file)); | |
| 202 write_lnum(linenum); | |
| 203 diag_write_string(trim_func(psz_func)); | |
| 204 diag_write_char(' '); | |
| 205 diag_write_string(psz_msg); | |
| 206 diag_write_char('\n'); | |
| 207 | |
| 208 DIAG_DEVICE_END_SYNC(); | |
| 209 HAL_RESTORE_INTERRUPTS(old_ints); | |
| 210 | |
| 211 }; | |
| 212 | |
| 213 externC void | |
| 214 cyg_tracemsg2( cyg_uint32 what, | |
|
78
59d97b6ba612
Merge from eCos master repository on 2000-03-28-19:50:47-BST
jlarmour
parents:
74
diff
changeset
|
215 const char *psz_func, const char *psz_file, cyg_uint32 linenum, |
|
208
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
182
diff
changeset
|
216 const char *psz_msg, |
| 0 | 217 CYG_ADDRWORD arg0, CYG_ADDRWORD arg1 ) |
| 218 { | |
| 219 cyg_uint32 old_ints; | |
| 220 | |
| 221 HAL_DISABLE_INTERRUPTS(old_ints); | |
| 222 DIAG_DEVICE_START_SYNC(); | |
| 223 | |
| 224 if ( NULL == psz_msg ) | |
| 225 psz_msg = "<nomsg>"; | |
| 226 | |
| 227 diag_write_string("TRACE: "); | |
| 228 write_thread_id(); | |
| 229 diag_write_string(trim_file(psz_file)); | |
| 230 write_lnum(linenum); | |
| 231 diag_write_string(trim_func(psz_func)); | |
| 232 diag_write_char(' '); | |
| 233 #if CYG_DIAG_PRINTF | |
| 234 diag_printf( psz_msg, arg0, arg1 ); | |
| 235 #else | |
| 236 diag_write_string(psz_msg); | |
| 237 diag_write_char(' '); | |
| 238 diag_write_hex(arg0); | |
| 239 diag_write_char(' '); | |
| 240 diag_write_hex(arg1); | |
| 241 #endif | |
| 242 diag_write_char('\n'); | |
| 243 DIAG_DEVICE_END_SYNC(); | |
| 244 HAL_RESTORE_INTERRUPTS(old_ints); | |
| 245 }; | |
| 246 | |
| 247 externC void | |
| 248 cyg_tracemsg4( cyg_uint32 what, | |
|
78
59d97b6ba612
Merge from eCos master repository on 2000-03-28-19:50:47-BST
jlarmour
parents:
74
diff
changeset
|
249 const char *psz_func, const char *psz_file, cyg_uint32 linenum, |
|
208
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
182
diff
changeset
|
250 const char *psz_msg, |
| 0 | 251 CYG_ADDRWORD arg0, CYG_ADDRWORD arg1, |
| 252 CYG_ADDRWORD arg2, CYG_ADDRWORD arg3 ) | |
| 253 { | |
| 254 cyg_uint32 old_ints; | |
| 255 | |
| 256 HAL_DISABLE_INTERRUPTS(old_ints); | |
| 257 DIAG_DEVICE_START_SYNC(); | |
| 258 | |
| 259 if ( NULL == psz_msg ) | |
| 260 psz_msg = "<nomsg>"; | |
| 261 | |
| 262 diag_write_string("TRACE: "); | |
| 263 write_thread_id(); | |
| 264 diag_write_string(trim_file(psz_file)); | |
| 265 write_lnum(linenum); | |
| 266 diag_write_string(trim_func(psz_func)); | |
| 267 diag_write_char(' '); | |
| 268 #if CYG_DIAG_PRINTF | |
| 269 diag_printf( psz_msg, arg0, arg1, arg2, arg3 ); | |
| 270 #else | |
| 271 diag_write_string(psz_msg); | |
| 272 diag_write_char(' '); | |
| 273 diag_write_hex(arg0); | |
| 274 diag_write_char(' '); | |
| 275 diag_write_hex(arg1); | |
| 276 diag_write_char(' '); | |
| 277 diag_write_hex(arg2); | |
| 278 diag_write_char(' '); | |
| 279 diag_write_hex(arg3); | |
| 280 #endif | |
| 281 diag_write_char('\n'); | |
| 282 | |
| 283 DIAG_DEVICE_END_SYNC(); | |
| 284 HAL_RESTORE_INTERRUPTS(old_ints); | |
| 285 }; | |
| 286 | |
| 287 externC void | |
| 288 cyg_tracemsg6( cyg_uint32 what, | |
|
78
59d97b6ba612
Merge from eCos master repository on 2000-03-28-19:50:47-BST
jlarmour
parents:
74
diff
changeset
|
289 const char *psz_func, const char *psz_file, cyg_uint32 linenum, |
|
208
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
182
diff
changeset
|
290 const char *psz_msg, |
| 0 | 291 CYG_ADDRWORD arg0, CYG_ADDRWORD arg1, |
| 292 CYG_ADDRWORD arg2, CYG_ADDRWORD arg3, | |
| 293 CYG_ADDRWORD arg4, CYG_ADDRWORD arg5 ) | |
| 294 { | |
| 295 cyg_uint32 old_ints; | |
| 296 | |
| 297 HAL_DISABLE_INTERRUPTS(old_ints); | |
| 298 DIAG_DEVICE_START_SYNC(); | |
| 299 | |
| 300 if ( NULL == psz_msg ) | |
| 301 psz_msg = "<nomsg>"; | |
| 302 | |
| 303 diag_write_string("TRACE: "); | |
| 304 write_thread_id(); | |
| 305 diag_write_string(trim_file(psz_file)); | |
| 306 write_lnum(linenum); | |
| 307 diag_write_string(trim_func(psz_func)); | |
| 308 diag_write_char(' '); | |
| 309 #if CYG_DIAG_PRINTF | |
| 310 diag_printf( psz_msg, arg0, arg1, arg2, arg3, arg4, arg5 ); | |
| 311 #else | |
| 312 diag_write_string(psz_msg); | |
| 313 diag_write_char(' '); | |
| 314 diag_write_hex(arg0); | |
| 315 diag_write_char(' '); | |
| 316 diag_write_hex(arg1); | |
| 317 diag_write_char(' '); | |
| 318 diag_write_hex(arg2); | |
| 319 diag_write_char(' '); | |
| 320 diag_write_hex(arg3); | |
| 321 diag_write_char(' '); | |
| 322 diag_write_hex(arg4); | |
| 323 diag_write_char(' '); | |
| 324 diag_write_hex(arg5); | |
| 325 #endif | |
| 326 diag_write_char('\n'); | |
| 327 | |
| 328 DIAG_DEVICE_END_SYNC(); | |
| 329 HAL_RESTORE_INTERRUPTS(old_ints); | |
| 330 }; | |
| 331 | |
| 332 externC void | |
| 333 cyg_tracemsg8( cyg_uint32 what, | |
|
78
59d97b6ba612
Merge from eCos master repository on 2000-03-28-19:50:47-BST
jlarmour
parents:
74
diff
changeset
|
334 const char *psz_func, const char *psz_file, cyg_uint32 linenum, |
|
208
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
182
diff
changeset
|
335 const char *psz_msg, |
| 0 | 336 CYG_ADDRWORD arg0, CYG_ADDRWORD arg1, |
| 337 CYG_ADDRWORD arg2, CYG_ADDRWORD arg3, | |
| 338 CYG_ADDRWORD arg4, CYG_ADDRWORD arg5, | |
| 339 CYG_ADDRWORD arg6, CYG_ADDRWORD arg7 ) | |
| 340 { | |
| 341 cyg_uint32 old_ints; | |
| 342 | |
| 343 HAL_DISABLE_INTERRUPTS(old_ints); | |
| 344 DIAG_DEVICE_START_SYNC(); | |
| 345 | |
| 346 if ( NULL == psz_msg ) | |
| 347 psz_msg = "<nomsg>"; | |
| 348 | |
| 349 diag_write_string("TRACE: "); | |
| 350 write_thread_id(); | |
| 351 diag_write_string(trim_file(psz_file)); | |
| 352 write_lnum(linenum); | |
| 353 diag_write_string(trim_func(psz_func)); | |
| 354 diag_write_char(' '); | |
| 355 #if CYG_DIAG_PRINTF | |
| 356 diag_printf( psz_msg, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7 ); | |
| 357 #else | |
| 358 diag_write_string(psz_msg); | |
| 359 diag_write_char(' '); | |
| 360 diag_write_hex(arg0); | |
| 361 diag_write_char(' '); | |
| 362 diag_write_hex(arg1); | |
| 363 diag_write_char(' '); | |
| 364 diag_write_hex(arg2); | |
| 365 diag_write_char(' '); | |
| 366 diag_write_hex(arg3); | |
| 367 diag_write_char(' '); | |
| 368 diag_write_hex(arg4); | |
| 369 diag_write_char(' '); | |
| 370 diag_write_hex(arg5); | |
| 371 diag_write_char(' '); | |
| 372 diag_write_hex(arg6); | |
| 373 diag_write_char(' '); | |
| 374 diag_write_hex(arg7); | |
| 375 #endif | |
| 376 diag_write_char('\n'); | |
| 377 | |
| 378 DIAG_DEVICE_END_SYNC(); | |
| 379 HAL_RESTORE_INTERRUPTS(old_ints); | |
| 380 }; | |
| 381 | |
|
70
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
66
diff
changeset
|
382 // ------------------------------------------------------------------------- |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
66
diff
changeset
|
383 |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
66
diff
changeset
|
384 externC void |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
66
diff
changeset
|
385 cyg_trace_dump(void) |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
66
diff
changeset
|
386 { |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
66
diff
changeset
|
387 #if defined(CYGPKG_KERNEL) && defined(CYG_DIAG_PRINTF) |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
66
diff
changeset
|
388 |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
66
diff
changeset
|
389 { |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
66
diff
changeset
|
390 diag_printf("\nScheduler:\n\n"); |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
66
diff
changeset
|
391 |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
66
diff
changeset
|
392 Cyg_Scheduler *sched = &Cyg_Scheduler::scheduler; |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
66
diff
changeset
|
393 |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
66
diff
changeset
|
394 diag_printf("Lock: %d\n",sched->get_sched_lock() ); |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
66
diff
changeset
|
395 |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
66
diff
changeset
|
396 # ifdef CYGVAR_KERNEL_THREADS_NAME |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
66
diff
changeset
|
397 |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
66
diff
changeset
|
398 diag_printf("Current Thread: %s\n",sched->get_current_thread()->get_name()); |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
66
diff
changeset
|
399 |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
66
diff
changeset
|
400 # else |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
66
diff
changeset
|
401 |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
66
diff
changeset
|
402 diag_printf("Current Thread: %d\n",sched->get_current_thread()->get_unique_id()); |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
66
diff
changeset
|
403 |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
66
diff
changeset
|
404 # endif |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
66
diff
changeset
|
405 |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
66
diff
changeset
|
406 } |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
66
diff
changeset
|
407 |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
66
diff
changeset
|
408 # ifdef CYGVAR_KERNEL_THREADS_LIST |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
66
diff
changeset
|
409 |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
66
diff
changeset
|
410 { |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
66
diff
changeset
|
411 Cyg_Thread *t = Cyg_Thread::get_list_head(); |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
66
diff
changeset
|
412 |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
66
diff
changeset
|
413 diag_printf("\nThreads:\n\n"); |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
66
diff
changeset
|
414 |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
66
diff
changeset
|
415 while( NULL != t ) |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
66
diff
changeset
|
416 { |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
66
diff
changeset
|
417 cyg_uint32 state = t->get_state(); |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
66
diff
changeset
|
418 char tstate[7]; |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
66
diff
changeset
|
419 char *tstate1 = "SCUKX"; |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
66
diff
changeset
|
420 static char *(reasons[8]) = |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
66
diff
changeset
|
421 { |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
66
diff
changeset
|
422 "NONE", // No recorded reason |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
66
diff
changeset
|
423 "WAIT", // Wait with no timeout |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
66
diff
changeset
|
424 "DELAY", // Simple time delay |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
66
diff
changeset
|
425 "TIMEOUT", // Wait with timeout/timeout expired |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
66
diff
changeset
|
426 "BREAK", // forced break out of sleep |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
66
diff
changeset
|
427 "DESTRUCT", // wait object destroyed[note] |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
66
diff
changeset
|
428 "EXIT", // forced termination |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
66
diff
changeset
|
429 "DONE" // Wait/delay complete |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
66
diff
changeset
|
430 }; |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
66
diff
changeset
|
431 |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
66
diff
changeset
|
432 if( 0 != state ) |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
66
diff
changeset
|
433 { |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
66
diff
changeset
|
434 // Knock out chars that do not correspond to set bits. |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
66
diff
changeset
|
435 for( int i = 0; i < 6 ; i++ ) |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
66
diff
changeset
|
436 if( 0 == (state & (1<<i)) ) |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
66
diff
changeset
|
437 tstate[i] = ' '; |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
66
diff
changeset
|
438 else tstate[i] = tstate1[i]; |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
66
diff
changeset
|
439 tstate[6] = 0; |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
66
diff
changeset
|
440 } |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
66
diff
changeset
|
441 else tstate[0] = 'R', tstate[1] = 0; |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
66
diff
changeset
|
442 |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
66
diff
changeset
|
443 # ifdef CYGVAR_KERNEL_THREADS_NAME |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
66
diff
changeset
|
444 |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
66
diff
changeset
|
445 diag_printf( "%20s pri = %3d state = %6s id = %3d\n", |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
66
diff
changeset
|
446 t->get_name(), |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
66
diff
changeset
|
447 t->get_priority(), |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
66
diff
changeset
|
448 tstate, |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
66
diff
changeset
|
449 t->get_unique_id() |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
66
diff
changeset
|
450 ); |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
66
diff
changeset
|
451 # else |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
66
diff
changeset
|
452 |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
66
diff
changeset
|
453 diag_printf( "Thread %3d pri = %3d state = %6s\n", |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
66
diff
changeset
|
454 t->get_unique_id(), |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
66
diff
changeset
|
455 t->get_priority(), |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
66
diff
changeset
|
456 tstate |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
66
diff
changeset
|
457 ); |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
66
diff
changeset
|
458 |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
66
diff
changeset
|
459 # endif |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
66
diff
changeset
|
460 diag_printf( "%20s stack base = %08x ptr = %08x size = %08x\n", |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
66
diff
changeset
|
461 "", |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
66
diff
changeset
|
462 t->get_stack_base(), |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
66
diff
changeset
|
463 #ifdef CYGDBG_KERNEL_DEBUG_GDB_THREAD_SUPPORT |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
66
diff
changeset
|
464 t->get_saved_context(), |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
66
diff
changeset
|
465 #else |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
66
diff
changeset
|
466 0, |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
66
diff
changeset
|
467 #endif |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
66
diff
changeset
|
468 t->get_stack_size() |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
66
diff
changeset
|
469 ); |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
66
diff
changeset
|
470 |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
66
diff
changeset
|
471 diag_printf( "%20s sleep reason %8s wake reason %8s\n", |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
66
diff
changeset
|
472 "", |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
66
diff
changeset
|
473 reasons[t->get_sleep_reason()], |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
66
diff
changeset
|
474 reasons[t->get_wake_reason()] |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
66
diff
changeset
|
475 ); |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
66
diff
changeset
|
476 |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
66
diff
changeset
|
477 diag_printf( "%20s queue = %08x wait info = %08x\n", |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
66
diff
changeset
|
478 "", |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
66
diff
changeset
|
479 t->get_current_queue(), |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
66
diff
changeset
|
480 t->get_wait_info() |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
66
diff
changeset
|
481 ); |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
66
diff
changeset
|
482 |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
66
diff
changeset
|
483 diag_printf("\n"); |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
66
diff
changeset
|
484 t = t->get_list_next(); |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
66
diff
changeset
|
485 } |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
66
diff
changeset
|
486 |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
66
diff
changeset
|
487 } |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
66
diff
changeset
|
488 # endif // CYGVAR_KERNEL_THREADS_LIST |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
66
diff
changeset
|
489 |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
66
diff
changeset
|
490 #endif // CYG_DIAG_PRINTF |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
66
diff
changeset
|
491 } |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
66
diff
changeset
|
492 |
| 0 | 493 #endif // CYGDBG_USE_TRACING |
| 494 | |
| 495 // ------------------------------------------------------------------------- | |
| 496 // Assert functions: | |
| 497 | |
| 498 #ifdef CYGDBG_USE_ASSERTS | |
| 499 | |
| 500 externC void | |
| 2 | 501 cyg_assert_fail( const char *psz_func, const char *psz_file, |
|
182
f62680ef1804
Merge from eCos master repository on 2001-09-07-06:43:02-BST
jlarmour
parents:
115
diff
changeset
|
502 cyg_uint32 linenum, const char *psz_msg ) __THROW |
| 0 | 503 { |
| 504 cyg_uint32 old_ints; | |
| 505 | |
| 506 HAL_DISABLE_INTERRUPTS(old_ints); | |
| 507 DIAG_DEVICE_START_SYNC(); | |
| 508 | |
| 509 diag_write_string("ASSERT FAIL: "); | |
| 510 write_thread_id(); | |
| 511 diag_write_string(trim_file(psz_file)); | |
| 512 write_lnum(linenum); | |
| 513 diag_write_string(trim_func(psz_func)); | |
| 514 diag_write_char(' '); | |
| 515 diag_write_string(psz_msg); | |
| 516 diag_write_char('\n'); | |
| 517 | |
|
74
9c122302a886
Merge from eCos master repository on 2000-02-18-15:21:53-GMT
jlarmour
parents:
70
diff
changeset
|
518 #ifdef CYGHWR_TEST_PROGRAM_EXIT |
|
9c122302a886
Merge from eCos master repository on 2000-02-18-15:21:53-GMT
jlarmour
parents:
70
diff
changeset
|
519 CYGHWR_TEST_PROGRAM_EXIT(); |
|
9c122302a886
Merge from eCos master repository on 2000-02-18-15:21:53-GMT
jlarmour
parents:
70
diff
changeset
|
520 #endif |
| 0 | 521 for(;;); |
| 522 | |
| 523 // DIAG_DEVICE_END_SYNC(); | |
| 524 // HAL_RESTORE_INTERRUPTS(old_ints); | |
| 525 }; | |
| 526 | |
| 527 extern "C" | |
| 528 { | |
|
115
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
78
diff
changeset
|
529 extern unsigned long _stext; |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
78
diff
changeset
|
530 extern unsigned long _etext; |
| 0 | 531 |
|
115
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
78
diff
changeset
|
532 unsigned long stext_addr = (unsigned long)&_stext; |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
78
diff
changeset
|
533 unsigned long etext_addr = (unsigned long)&_etext; |
| 0 | 534 }; |
| 535 | |
|
502
b43ec5f18a97
* include/cyg_ass.h (CYG_CHECK_FUNC_PTRC): Define with const pointer
jlarmour
parents:
210
diff
changeset
|
536 externC cyg_bool cyg_check_data_ptr(const void *ptr) |
| 0 | 537 { |
| 538 unsigned long p = (unsigned long)ptr; | |
| 539 | |
| 540 if( p == 0 ) return false; | |
| 541 | |
| 542 if( p > stext_addr && p < etext_addr ) return false; | |
| 543 | |
| 544 return true; | |
| 545 } | |
| 546 | |
|
502
b43ec5f18a97
* include/cyg_ass.h (CYG_CHECK_FUNC_PTRC): Define with const pointer
jlarmour
parents:
210
diff
changeset
|
547 externC cyg_bool cyg_check_func_ptr(const void (*ptr)(void)) |
| 0 | 548 { |
| 549 unsigned long p = (unsigned long)ptr; | |
| 550 | |
| 551 if( p == 0 ) return false; | |
| 552 | |
| 553 if( p < stext_addr && p > etext_addr ) return false; | |
| 554 | |
| 555 return true; | |
| 556 } | |
| 557 | |
| 558 #endif // CYGDBG_USE_ASSERTS | |
| 559 | |
| 560 #endif // CYGDBG_INFRA_DEBUG_TRACE_ASSERT_SIMPLE | |
| 561 | |
| 562 // ------------------------------------------------------------------------- | |
| 563 // EOF simple.cxx |
