Ticket #540: pr540.diff

File pr540.diff, 4.0 KB (added by Joel Sherrill, on 12/03/06 at 13:31:13)

pr540.diff

  • cpuuse/cpuuse.c

    2003-12-11	Joel Sherrill <joel@OARcorp.com>
    
    	PR 540/rtems_misc
    	* cpuuse/cpuuse.c, rtmonuse/rtmonuse.c: Correct object name printing.
    
    RCS file: /usr1/CVS/rtems/cpukit/libmisc/cpuuse/cpuuse.c,v
    retrieving revision 1.10.2.2
    diff -u -r1.10.2.2 cpuuse.c
     
    4040  Thread_Control      *the_thread;
    4141  Objects_Information *information;
    4242  unsigned32           u32_name;
     43  char                *cname;
    4344  char                 name[5];
    4445  unsigned32           total_units = 0;
    4546
     
    7980        if ( !the_thread )
    8081          continue;
    8182
    82         if ( information->is_string )
    83           u32_name = *(unsigned32 *)the_thread->Object.name;
    84         else
     83        if ( information->is_string ) {
     84          cname = the_thread->Object.name;
     85          name[ 0 ] = cname[0];
     86          name[ 1 ] = cname[1];
     87          name[ 2 ] = cname[2];
     88          name[ 3 ] = cname[3];
     89          name[ 4 ] = '\0';
     90        } else {
    8591          u32_name = (unsigned32)the_thread->Object.name;
    86 
    87         name[ 0 ] = (u32_name >> 24) & 0xff;
    88         name[ 1 ] = (u32_name >> 16) & 0xff;
    89         name[ 2 ] = (u32_name >>  8) & 0xff;
    90         name[ 3 ] = (u32_name >>  0) & 0xff;
    91         name[ 4 ] = '\0';
     92          name[ 0 ] = (u32_name >> 24) & 0xff;
     93          name[ 1 ] = (u32_name >> 16) & 0xff;
     94          name[ 2 ] = (u32_name >>  8) & 0xff;
     95          name[ 3 ] = (u32_name >>  0) & 0xff;
     96          name[ 4 ] = '\0';
     97        }
    9298
    9399        if ( !isprint(name[0]) ) name[0] = '*';
    94100        if ( !isprint(name[1]) ) name[1] = '*';
  • rtmonuse/rtmonuse.c

    RCS file: /usr1/CVS/rtems/cpukit/libmisc/rtmonuse/rtmonuse.c,v
    retrieving revision 1.3.8.1
    diff -u -r1.3.8.1 rtmonuse.c
     
    1010#include <stdlib.h>
    1111#include <stdio.h>
    1212#include <assert.h>
     13#include <ctype.h>
    1314
    1415#include <rtems/rtmonuse.h>
    1516
     
    130131  Period_usage_t         *the_usage;
    131132  Rate_monotonic_Control *the_period;
    132133  unsigned32              u32_name;
     134  char                   *cname;
    133135  char                    name[5];
     136  unsigned32              api_index;
     137  Objects_Information    *information;
    134138 
    135139  if ( !Period_usage_Information ) {
    136140    printf( "Period statistics library is not initialized\n" );
     
    154158    the_period =
    155159      (Rate_monotonic_Control *)_Rate_monotonic_Information.local_table[ i ];
    156160
    157     if ( the_period->owner )
    158       u32_name = *(unsigned32 *)the_period->owner->Object.name;
    159     else
    160       u32_name = rtems_build_name(' ', ' ', ' ', ' ');
    161 
    162     name[ 0 ] = (u32_name >> 24) & 0xff;
    163     name[ 1 ] = (u32_name >> 16) & 0xff;
    164     name[ 2 ] = (u32_name >>  8) & 0xff;
    165     name[ 3 ] = (u32_name >>  0) & 0xff;
     161    name[ 0 ] = ' ';
     162    name[ 1 ] = ' ';
     163    name[ 2 ] = ' ';
     164    name[ 3 ] = ' ';
    166165    name[ 4 ] = '\0';
     166
     167    if ( the_period->owner ) {
     168      api_index = _Objects_Get_API(the_period->owner->Object.id);
     169      information = _Objects_Information_table[ api_index ][ 1 ];
     170
     171      if ( information->is_string ) {
     172        cname = the_period->owner->Object.name;
     173        name[ 0 ] = cname[0];
     174        name[ 1 ] = cname[1];
     175        name[ 2 ] = cname[2];
     176        name[ 3 ] = cname[3];
     177        name[ 4 ] = '\0';
     178      } else {
     179        u32_name = (unsigned32)the_period->owner->Object.name;
     180        name[ 0 ] = (u32_name >> 24) & 0xff;
     181        name[ 1 ] = (u32_name >> 16) & 0xff;
     182        name[ 2 ] = (u32_name >>  8) & 0xff;
     183        name[ 3 ] = (u32_name >>  0) & 0xff;
     184        name[ 4 ] = '\0';
     185      }
     186    }
     187
     188    if ( !isprint(name[0]) ) name[0] = '*';
     189    if ( !isprint(name[1]) ) name[1] = '*';
     190    if ( !isprint(name[2]) ) name[2] = '*';
     191    if ( !isprint(name[3]) ) name[3] = '*';
     192
    167193
    168194    printf(
    169195      "0x%08x  %4s   %6d   %3d       %d/%d/%5.2f    %d/%d/%3.2f\n",