diff options
author | Joel Sherrill <joel.sherrill@OARcorp.com> | 2007-05-17 22:46:45 +0000 |
---|---|---|
committer | Joel Sherrill <joel.sherrill@OARcorp.com> | 2007-05-17 22:46:45 +0000 |
commit | c3330a88ee5d674b09dded32ef1ccba26a9c3034 (patch) | |
tree | f7f247449fc18bc299ef695c3503f9b7790db97a /cpukit/libmisc/stackchk/check.c | |
parent | Add .rh clause to extra_arg. (diff) | |
download | rtems-c3330a88ee5d674b09dded32ef1ccba26a9c3034.tar.bz2 |
2007-05-17 Joel Sherrill <joel.sherrill@oarcorp.com>
* ChangeLog, configure.ac, libcsupport/src/__times.c,
libmisc/cpuuse/cpuuse.c, libmisc/stackchk/check.c,
rtems/include/rtems/rtems/ratemon.h, rtems/src/ratemongetstatus.c,
rtems/src/ratemonperiod.c, rtems/src/ratemonreportstatistics.c,
rtems/src/ratemonresetall.c, rtems/src/ratemontimeout.c,
score/Makefile.am, score/include/rtems/score/thread.h,
score/include/rtems/score/timespec.h, score/src/threaddispatch.c,
score/src/threadinitialize.c, score/src/threadtickletimeslice.c,
score/src/timespecdivide.c: Add nanoseconds granularity to the rate
monotonic period statistics and CPU usage statistics. This capability
is enabled by default although may be conditionally disabled by the
user. It could be too much overhead on small targets but it does not
appear to be bad in early testing. Its impact on code size has not
been evaluated either. It is possible that both forms of statistics
gathering could be disabled with further tweaking of the conditional
compilation.
* score/src/timespecdividebyinteger.c: New file.
Diffstat (limited to '')
-rw-r--r-- | cpukit/libmisc/stackchk/check.c | 56 |
1 files changed, 14 insertions, 42 deletions
diff --git a/cpukit/libmisc/stackchk/check.c b/cpukit/libmisc/stackchk/check.c index 37b91dab21..bc9dc66481 100644 --- a/cpukit/libmisc/stackchk/check.c +++ b/cpukit/libmisc/stackchk/check.c @@ -215,7 +215,8 @@ void Stack_check_report_blown_task( Stack_Control *stack = &running->Start.Initial_stack; printk( - "BLOWN STACK!!! Offending task(%p): id=0x%08" PRIx32 "; name=0x%08" PRIx32, + "BLOWN STACK!!! Offending task(0x%p): " + "id=0x%08" PRIx32 "; name=0x%08" PRIx32, running, running->Object.id, (uint32_t) running->Object.name @@ -233,7 +234,7 @@ void Stack_check_report_blown_task( #endif printk( - " stack covers range %p - %p (%d bytes)\n", + " stack covers range 0x%p - 0x%p (%d bytes)\n", stack->area, stack->area + stack->size - 1, stack->size @@ -325,8 +326,8 @@ void *Stack_check_find_high_water_mark( base += length - 1; for (ebase = s; base > ebase; base--) - if (*base != U32_PATTERN) - return (void *) base; + if (*base != U32_PATTERN) + return (void *) base; #else /* * start at lower memory and find first word that does not @@ -335,39 +336,14 @@ void *Stack_check_find_high_water_mark( base += PATTERN_SIZE_WORDS; for (ebase = base + length; base < ebase; base++) - if (*base != U32_PATTERN) - return (void *) base; + if (*base != U32_PATTERN) + return (void *) base; #endif return (void *)0; } /* - * Report Name - */ - -char *Stack_check_Get_object_name( - Objects_Control *the_object, - char **name -) -{ - Objects_Information *info; - - info = _Objects_Get_information(the_object->id); - if ( info->is_string ) { - *name = (char *) the_object->name; - } else { - uint32_t u32_name = (uint32_t) the_object->name; - (*name)[ 0 ] = (u32_name >> 24) & 0xff; - (*name)[ 1 ] = (u32_name >> 16) & 0xff; - (*name)[ 2 ] = (u32_name >> 8) & 0xff; - (*name)[ 3 ] = (u32_name >> 0) & 0xff; - (*name)[ 4 ] = '\0'; - } - return *name; -} - -/* * Stack_check_Dump_threads_usage( * * Try to print out how much stack was actually used by the task. @@ -380,9 +356,7 @@ void Stack_check_Dump_threads_usage( void *low; void *high_water_mark; Stack_Control *stack; - uint32_t u32_name; - char name_str[5]; - char *name; + char name[5]; if ( !the_thread ) return; @@ -411,19 +385,17 @@ void Stack_check_Dump_threads_usage( else used = 0; - name = name_str; if ( the_thread ) { - name = Stack_check_Get_object_name( &the_thread->Object, &name ); + rtems_object_get_name( the_thread->Object.id, sizeof(name), name ); } else { - u32_name = rtems_build_name('I', 'N', 'T', 'R'); - name[ 0 ] = (u32_name >> 24) & 0xff; - name[ 1 ] = (u32_name >> 16) & 0xff; - name[ 2 ] = (u32_name >> 8) & 0xff; - name[ 3 ] = (u32_name >> 0) & 0xff; + name[ 0 ] = 'I'; + name[ 1 ] = 'N'; + name[ 2 ] = 'T'; + name[ 3 ] = 'R'; name[ 4 ] = '\0'; } - printk("0x%08" PRIx32 " %4s %p - %p %8" PRId32 " %8" PRId32 "\n", + printk("0x%08" PRIx32 " %4s 0x%p - 0x%p %8" PRId32 " %8" PRId32 "\n", the_thread ? the_thread->Object.id : ~0, name, stack->area, |