summaryrefslogtreecommitdiffstats
path: root/src/include/usr/errl/errlsctn.H
blob: bb532e6b849d1f0df7c4b9e035c4cc34493ce7f0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
/* IBM_PROLOG_BEGIN_TAG                                                   */
/* This is an automatically generated prolog.                             */
/*                                                                        */
/* $Source: src/include/usr/errl/errlsctn.H $                             */
/*                                                                        */
/* OpenPOWER HostBoot Project                                             */
/*                                                                        */
/* Contributors Listed Below - COPYRIGHT 2011,2016                        */
/* [+] Google Inc.                                                        */
/* [+] 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.       */
/* You may obtain a copy of the License at                                */
/*                                                                        */
/*     http://www.apache.org/licenses/LICENSE-2.0                         */
/*                                                                        */
/* Unless required by applicable law or agreed to in writing, software    */
/* distributed under the License is distributed on an "AS IS" BASIS,      */
/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or        */
/* implied. See the License for the specific language governing           */
/* permissions and limitations under the License.                         */
/*                                                                        */
/* IBM_PROLOG_END_TAG                                                     */
#ifndef ERRLSCTN_H
#define ERRLSCTN_H
/**
 *  @file errlsctn.H
 *
 *  @brief  Base class for adding sections of data to an error log.
 *          A section may be used to store unique data for the
 *          error such as SRC or user-defined data or
 *          component traces, etc.
 */

/*****************************************************************************/
// I n c l u d e s
/*****************************************************************************/
#include <stdint.h>
#include <stdlib.h>
#include <errl/hberrltypes.H>
#include <hbotcompid.H>
#include <errl/errlsctnhdr.H>

namespace ERRORLOGDISPLAY
{
class ErrLogDisplay;
}


namespace ERRORLOG
{

/**
 *  @brief Base class of a section in an error log object. Derivations
 *  may include ErrlCallHome, ErrlExtUH, ErrlSrc, ErrlUD, etc.
 */
class ErrlSctn
{
    friend class ErrlManager;
    friend class ERRORLOGDISPLAY::ErrLogDisplay;
    friend class ErrlTest;

public:
    /**
    *  @brief Get section's version
    *
    *  @return Section version (uint8_t)
    *
    */
    uint8_t sctnVer() const;

    /**
    *  @brief Get section's subsection type
    *
    *  @return Subsection type (uint8_t)
    *
    */
    uint8_t subSect() const;

    /**
    *  @brief Get section's component Id
    *
    *  @return Component Id of the section creator
    *
    */
    compId_t compId() const;

protected:

    /**
     * @brief   Constructor
     *          Initializes the base object with section information
     *
     * @param[in]   i_sid        Section id
     * @param[in]   i_slen       Section length
     * @param[in]   i_ver        Section version
     * @param[in]   i_sst        Subsection type
     * @param[in]   i_compId     Component id
     *
     * @return void
     */
    ErrlSctn(  const uint16_t    i_sid,
               const uint16_t    i_slen,
               const uint8_t     i_ver,
               const uint8_t     i_sst,
               const compId_t    i_compId );


    /**
     * @brief   Default destructor
     *
     * @return void
     */
    virtual ~ErrlSctn();



    /**
      * @brief   Disabled copy constructor and assignment operator
      */
    ErrlSctn(const ErrlSctn& i_right);
    ErrlSctn& operator=(const ErrlSctn& i_right);



    // PEL section header for flattening.
    ErrlSctnHdr   iv_header;

};

//-----------------------------------------------------------------------
// In-line functions
//-----------------------------------------------------------------------

////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
inline uint8_t ErrlSctn::sctnVer() const
{
    return iv_header.iv_ver;
}

////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
inline uint8_t ErrlSctn::subSect() const
{
    return iv_header.iv_sst;
}

////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
inline compId_t ErrlSctn::compId() const
{
    return iv_header.iv_compId;
}



} // End namespace


#endif //ERRLSCTN_H

OpenPOWER on IntegriCloud