diff options
author | Van Lee <vanlee@us.ibm.com> | 2012-01-18 11:20:33 -0600 |
---|---|---|
committer | A. Patrick Williams III <iawillia@us.ibm.com> | 2012-02-01 17:12:09 -0600 |
commit | 06b768407e1d6e212aeed8be23f31dfb27f2a9cc (patch) | |
tree | 4cc7d0295a8efc225b243ea13983803bfda213f7 /src/usr/targeting/target.C | |
parent | 3537d669cce337e37790cf7be62a817cbc88c811 (diff) | |
download | talos-hostboot-06b768407e1d6e212aeed8be23f31dfb27f2a9cc.tar.gz talos-hostboot-06b768407e1d6e212aeed8be23f31dfb27f2a9cc.zip |
Common Errl FFDC Classes: DCUT - RTC4289
Change-Id: Ie0c7cc6422d30fe0b5449eb54aaa62ebb54774e7
Reviewed-on: http://gfw160.austin.ibm.com:8080/gerrit/618
Tested-by: Jenkins Server
Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
Diffstat (limited to 'src/usr/targeting/target.C')
-rw-r--r-- | src/usr/targeting/target.C | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/src/usr/targeting/target.C b/src/usr/targeting/target.C index 714e614bd..10fbab4b8 100644 --- a/src/usr/targeting/target.C +++ b/src/usr/targeting/target.C @@ -178,6 +178,59 @@ Target::Target() #undef TARG_FN } +//****************************************************************************** +// Target::targetFFDC() +//****************************************************************************** + +char * Target::targetFFDC( uint32_t & o_size ) const +{ + #define TARG_FN "targetFFDC(...)" + + char l_buff[128]; + char *l_pFFDC = NULL; + char *l_ptr = NULL; + void *l_ptr1 = NULL; + uint32_t l_len; + + o_size = sprintf( l_buff, "Class = 0x%X, Type = 0x%X, Model = 0x%X", + getAttr<ATTR_CLASS>(), + getAttr<ATTR_TYPE>(), + getAttr<ATTR_MODEL>() ); + + l_pFFDC = static_cast<char*>( malloc( ++o_size ) ); + memcpy( l_pFFDC, l_buff, o_size ); + + l_ptr = getAttr<ATTR_PHYS_PATH>().toString(); + if (l_ptr) + { + l_len = strlen( l_ptr ) + 1; + l_ptr1 = realloc( l_pFFDC, o_size + l_len ); + l_pFFDC = static_cast<char*>( l_ptr1 ); + memcpy( l_pFFDC + o_size, l_ptr, l_len ); + o_size += l_len; + free( l_ptr ); + } + + EntityPath l_entityPath; + if( tryGetAttr<ATTR_AFFINITY_PATH>(l_entityPath) ) + { + l_ptr = l_entityPath.toString(); + if (l_ptr) + { + l_len = strlen( l_ptr ) + 1; + l_ptr1 = realloc( l_pFFDC, o_size + l_len ); + l_pFFDC = static_cast<char*>( l_ptr1 ); + memcpy( l_pFFDC + o_size, l_ptr, l_len ); + o_size += l_len; + free( l_ptr ); + } + } + + return l_pFFDC; + + #undef TARG_FN +} + #undef TARG_CLASS #undef TARG_NAMESPACE |