diff options
Diffstat (limited to 'src/usr/errl/errludstring.C')
-rw-r--r-- | src/usr/errl/errludstring.C | 56 |
1 files changed, 55 insertions, 1 deletions
diff --git a/src/usr/errl/errludstring.C b/src/usr/errl/errludstring.C index 43943774d..888a303b6 100644 --- a/src/usr/errl/errludstring.C +++ b/src/usr/errl/errludstring.C @@ -5,7 +5,9 @@ /* */ /* OpenPOWER HostBoot Project */ /* */ -/* COPYRIGHT International Business Machines Corp. 2012,2014 */ +/* Contributors Listed Below - COPYRIGHT 2012,2017 */ +/* [+] International Business Machines Corp. */ +/* */ /* */ /* Licensed under the Apache License, Version 2.0 (the "License"); */ /* you may not use this file except in compliance with the License. */ @@ -54,5 +56,57 @@ ErrlUserDetailsString::~ErrlUserDetailsString() } +// ErrlUserDetailsStringSet implementation + +ErrlUserDetailsStringSet::ErrlUserDetailsStringSet() +{ + // Set up ErrlUserDetails instance variables + iv_CompId = ERRL_COMP_ID; + iv_Version = ERRL_UDT_STRING_SET_VER_1; + iv_SubSection = ERRL_UDT_STRING_SET; + + // override the default of false. + iv_merge = true; } +void ErrlUserDetailsStringSet::add( + const char* const i_pDescriptionString, + const char* const i_pString) +{ + // [Object Memory Layout] + // + // Offset Size Description + // ========================================================================= + // 0 X Existing object contents before this call, where X=0 if + // this is the first add call to the object + // X Y NULL terminated description string describing the string + // being logged, where Y=strlen(this string) + length (1) of + // NULL terminator. + // X+Y Z NULL terminated FFDC string, where Z=strlen(this string) + + // length (1) of NULL terminator. + + // Absorb API errors on error path and instead substitue error string for + // any input that is nullptr + const char* const pDescriptionString = (i_pDescriptionString == nullptr) ? + "BUG! Invalid description" : i_pDescriptionString; + const char* const pString = (i_pString == nullptr) ? "BUG! Invalid string" : + i_pString; + + const auto currentSize = static_cast<size_t>(getUsrBufSize()); + const auto descriptionSize = strlen(pDescriptionString)+1; + const auto stringSize = strlen(pString)+1; + const auto newSize = currentSize + descriptionSize + stringSize; + char* const pBuf = reinterpret_cast<char*>( + reallocUsrBuf(newSize)); + strcpy(pBuf+currentSize, pDescriptionString); + strcpy(pBuf+currentSize+descriptionSize,pString); +} + +ErrlUserDetailsStringSet::~ErrlUserDetailsStringSet() +{ + +} + +} // End of ERRORLOG namespace + + |