librtasevent_src/librtasevent.h

Go to the documentation of this file.
00001 
00034 #ifndef _H_RTAS_EVENTS
00035 #define _H_RTAS_EVENTS
00036 
00037 #include <stdio.h>
00038 #include <inttypes.h>
00039 
00040 struct rtas_event;
00041 
00046 struct rtas_event_scn {
00047     struct rtas_event_scn   *next;
00048     char                    *data;
00049     int                     scn_id;
00050     struct rtas_event       *re;
00051     struct rtas_event_scn   *subscn;
00052     struct rtas_event_scn   *other_scns;
00053 };
00054 
00055 /* definitions for struct rtas_event_scn scn_id */
00056 #define RTAS_EVENT_HDR          1
00057 #define RTAS_EVENT_EXT_HDR      2
00058 
00059 #define RTAS_EPOW_SCN           3
00060 #define RTAS_IO_SCN             4
00061 
00062 #define RTAS_CPU_SCN            5
00063 #define RTAS_IBM_DIAG_SCN       6       
00064 #define RTAS_MEM_SCN            7
00065 #define RTAS_POST_SCN           8
00066 #define RTAS_IBM_SP_SCN         9
00067 #define RTAS_VEND_SPECIFIC_SCN  10
00068 
00069 #define RTAS_MAIN_A_SCN         11
00070 #define RTAS_MAIN_B_SCN         12
00071 #define RTAS_DUMP_SCN           13      
00072 #define RTAS_LRI_SCN            14
00073 #define RTAS_MTMS_SCN           15
00074 #define RTAS_PSRC_SCN           16
00075 #define RTAS_SSRC_SCN           17
00076 #define RTAS_SRC_SUBSCN         18
00077 #define RTAS_FRU_SCN            19
00078 #define RTAS_FRU_SUBSCN         20
00079 
00080 #define RTAS_MAX_SCN_ID         20 
00081 
00086 struct rtas_event {
00087     char    *buffer;
00088     int     length;
00089     int     version;
00090     int     event_no;
00091     struct rtas_event_scn *event_scns;
00092 };
00093 
00098 struct rtas_date {
00099     uint32_t    year:16;
00100     uint32_t    month:8;
00101     uint32_t    day:8;
00102 };
00103 
00108 struct rtas_time {
00109     uint32_t    hour:8;
00110     uint32_t    minutes:8;
00111     uint32_t    seconds:8;
00112     uint32_t    hundredths:8;
00113 };
00114 
00119 struct rtas_event_hdr {
00120     uint32_t version:8;           
00121     uint32_t severity:3;          
00122 #define RTAS_HDR_SEV_NO_ERROR           0
00123 #define RTAS_HDR_SEV_EVENT              1
00124 #define RTAS_HDR_SEV_WARNING            2
00125 #define RTAS_HDR_SEV_ERROR_SYNC         3
00126 #define RTAS_HDR_SEV_ERROR              4
00127 #define RTAS_HDR_SEV_FATAL              5
00128 #define RTAS_HDR_SEV_ALREADY_REPORTED   6
00129 
00130     uint32_t disposition:2;       
00131 #define RTAS_HDR_DISP_FULLY_RECOVERED   0
00132 #define RTAS_HDR_DISP_LIMITED_RECOVERY  1
00133 #define RTAS_HDR_DISP_NOT_RECOVERED     2
00134     
00135     uint32_t extended:1;          
00136     uint32_t /* reserved */ :2;
00137     uint32_t initiator:4;         
00138 #define RTAS_HDR_INIT_UNKNOWN           0
00139 #define RTAS_HDR_INIT_CPU               1
00140 #define RTAS_HDR_INIT_PCI               2
00141 #define RTAS_HDR_INIT_ISA               3
00142 #define RTAS_HDR_INIT_MEMORY            4
00143 #define RTAS_HDR_INIT_HOT_PLUG          5
00144 
00145     uint32_t target:4;            
00146 #define RTAS_HDR_TARGET_UNKNOWN         0
00147 #define RTAS_HDR_TARGET_CPU             1
00148 #define RTAS_HDR_TARGET_PCI             2
00149 #define RTAS_HDR_TARGET_ISA             3
00150 #define RTAS_HDR_TARGET_MEMORY          4
00151 #define RTAS_HDR_TARGET_HOT_PLUG        5
00152 
00153     uint32_t type:8;              
00154 #define RTAS_HDR_TYPE_RETRY             1
00155 #define RTAS_HDR_TYPE_TCE_ERR           2
00156 #define RTAS_HDR_TYPE_INTERN_DEV_FAIL   3
00157 #define RTAS_HDR_TYPE_TIMEOUT           4
00158 #define RTAS_HDR_TYPE_DATA_PARITY       5
00159 #define RTAS_HDR_TYPE_ADDR_PARITY       6
00160 #define RTAS_HDR_TYPE_CACHE_PARITY      7
00161 #define RTAS_HDR_TYPE_ADDR_INVALID      8
00162 #define RTAS_HDR_TYPE_ECC_UNCORRECTED   9
00163 #define RTAS_HDR_TYPE_ECC_CORRECTED     10 
00164 #define RTAS_HDR_TYPE_EPOW              64 
00165 #define RTAS_HDR_TYPE_PLATFORM_ERROR    224
00166 #define RTAS_HDR_TYPE_IBM_IO_EVENT      225
00167 #define RTAS_HDR_TYPE_PLATFORM_INFO     226
00168 #define RTAS_HDR_TYPE_RESOURCE_DEALLOC  227
00169 #define RTAS_HDR_TYPE_DUMP_NOTIFICATION 228
00170 
00171     uint32_t ext_log_length:32;   
00172 };
00173 
00178 struct rtas_event_exthdr {
00179     uint32_t valid:1;
00180     uint32_t unrecoverable:1;
00181     uint32_t recoverable:1;
00182     uint32_t unrecoverable_bypassed:1;  
00183     uint32_t predictive:1;
00184     uint32_t newlog:1;
00185     uint32_t bigendian:1; 
00186     uint32_t /* reserved */:1;
00187 
00188     uint32_t platform_specific:1;       
00189     uint32_t /* reserved */:3;
00190     uint32_t platform_value:4;          
00192     uint32_t power_pc:1;               
00193     uint32_t /* reserved */:2;
00194     uint32_t addr_invalid:1;     
00195     uint32_t format_type:4;
00196 #define RTAS_EXTHDR_FMT_CPU             1
00197 #define RTAS_EXTHDR_FMT_MEMORY          2
00198 #define RTAS_EXTHDR_FMT_IO              3
00199 #define RTAS_EXTHDR_FMT_POST            4
00200 #define RTAS_EXTHDR_FMT_EPOW            5
00201 #define RTAS_EXTHDR_FMT_IBM_DIAG        12
00202 #define RTAS_EXTHDR_FMT_IBM_SP          13
00203 #define RTAS_EXTHDR_FMT_VEND_SPECIFIC_1 14
00204 #define RTAS_EXTHDR_FMT_VEND_SPECIFIC_2 15
00205 
00206     /* This group is in version 3+ only */
00207     uint32_t non_hardware:1;     
00208     uint32_t hot_plug:1;         
00209     uint32_t group_failure:1;    
00210     uint32_t /* reserved */:1;
00211 
00212     uint32_t residual:1;         
00213     uint32_t boot:1;             
00214     uint32_t config_change:1;    
00215     uint32_t post:1;
00216 
00217     struct rtas_time time;       
00218     struct rtas_date date;       
00219 };
00220 
00221 /* Retrieving and free'ing parsed RTAS events */ 
00222 struct rtas_event * parse_rtas_event(char *, int);
00223 int cleanup_rtas_event(struct rtas_event *);
00224 
00225 /* Retrieving a particular section from a parsed RTAS event */
00226 struct rtas_event_scn * rtas_get_event_hdr_scn(struct rtas_event *);
00227 struct rtas_event_scn * rtas_get_event_exthdr_scn(struct rtas_event *);
00228 
00229 struct rtas_event_scn * rtas_get_epow_scn(struct rtas_event *);
00230 struct rtas_event_scn * rtas_get_io_scn(struct rtas_event *);
00231 
00232 struct rtas_event_scn * rtas_get_cpu_scn(struct rtas_event *);
00233 struct rtas_event_scn * rtas_get_ibmdiag_scn(struct rtas_event *);
00234 struct rtas_event_scn * rtas_get_mem_scn(struct rtas_event *);
00235 struct rtas_event_scn * rtas_get_post_scn(struct rtas_event *);
00236 struct rtas_event_scn * rtas_get_ibm_sp_scn(struct rtas_event *);
00237 struct rtas_event_scn * rtas_get_vend_specific_scn(struct rtas_event *);
00238 
00239 struct rtas_event_scn * rtas_get_main_a_scn(struct rtas_event *);
00240 struct rtas_event_scn * rtas_get_main_b_scn(struct rtas_event *);
00241 struct rtas_event_scn * rtas_get_dump_scn(struct rtas_event *);
00242 struct rtas_event_scn * rtas_get_lri_scn(struct rtas_event *);
00243 struct rtas_event_scn * rtas_get_mtms_scn(struct rtas_event *);
00244 struct rtas_event_scn * rtas_get_src_scn(struct rtas_event *);
00245 
00246 /* Printing RTAS event data */
00247 int rtas_print_scn(FILE *, struct rtas_event_scn *, int);
00248 int rtas_print_event(FILE *, struct rtas_event *, int); 
00249 int rtas_print_raw_event(FILE *, struct rtas_event *);
00250 int rtas_set_print_width(int);
00251 
00252 /* include version specific data */
00253 #include "librtasevent_v4.h"
00254 #include "librtasevent_v6.h"
00255 
00256 #endif

Generated on Sat Sep 22 08:52:51 2007 for librtasevent by  doxygen 1.5.3