export function for other use

This commit is contained in:
Duncan Laurie 2005-05-15 05:57:35 +00:00
parent 3af858eecf
commit b1cf8c6a2b
2 changed files with 31 additions and 29 deletions

View File

@ -39,6 +39,7 @@
#include <inttypes.h> #include <inttypes.h>
#include <ipmitool/ipmi.h> #include <ipmitool/ipmi.h>
#include <ipmitool/ipmi_sdr.h>
#define IPMI_CMD_GET_SEL_INFO 0x40 #define IPMI_CMD_GET_SEL_INFO 0x40
#define IPMI_CMD_GET_SEL_ALLOC_INFO 0x41 #define IPMI_CMD_GET_SEL_ALLOC_INFO 0x41
@ -75,8 +76,13 @@ struct sel_event_record {
uint8_t evm_rev; uint8_t evm_rev;
uint8_t sensor_type; uint8_t sensor_type;
uint8_t sensor_num; uint8_t sensor_num;
#if WORDS_BIGENDIAN
uint8_t event_dir : 1;
uint8_t event_type : 7;
#else
uint8_t event_type : 7; uint8_t event_type : 7;
uint8_t event_dir : 1; uint8_t event_dir : 1;
#endif
#define DATA_BYTE2_SPECIFIED_MASK 0xc0 /* event_data[0] bit mask */ #define DATA_BYTE2_SPECIFIED_MASK 0xc0 /* event_data[0] bit mask */
#define DATA_BYTE3_SPECIFIED_MASK 0x30 /* event_data[0] bit mask */ #define DATA_BYTE3_SPECIFIED_MASK 0x30 /* event_data[0] bit mask */
#define EVENT_OFFSET_MASK 0x0f /* event_data[0] bit mask */ #define EVENT_OFFSET_MASK 0x0f /* event_data[0] bit mask */
@ -446,6 +452,8 @@ static struct ipmi_event_sensor_types sensor_specific_types[] __attribute__((unu
int ipmi_sel_main(struct ipmi_intf *, int, char **); int ipmi_sel_main(struct ipmi_intf *, int, char **);
void ipmi_sel_print_std_entry(struct ipmi_intf * intf, struct sel_event_record * evt); void ipmi_sel_print_std_entry(struct ipmi_intf * intf, struct sel_event_record * evt);
void ipmi_sel_print_std_entry_verbose(struct ipmi_intf * intf, struct sel_event_record * evt); void ipmi_sel_print_std_entry_verbose(struct ipmi_intf * intf, struct sel_event_record * evt);
void ipmi_sel_print_extended_entry(struct ipmi_intf * intf, struct sel_event_record * evt);
void ipmi_sel_print_extended_entry_verbose(struct ipmi_intf * intf, struct sel_event_record * evt);
void ipmi_get_event_desc(struct sel_event_record * rec, char ** desc); void ipmi_get_event_desc(struct sel_event_record * rec, char ** desc);
const char * ipmi_sel_get_sensor_type(uint8_t code); const char * ipmi_sel_get_sensor_type(uint8_t code);
const char * ipmi_sel_get_sensor_type_offset(uint8_t code, uint8_t offset); const char * ipmi_sel_get_sensor_type_offset(uint8_t code, uint8_t offset);

View File

@ -333,6 +333,14 @@ ipmi_sel_print_event_file(struct ipmi_intf * intf, struct sel_event_record * evt
free(description); free(description);
} }
void
ipmi_sel_print_extended_entry(struct ipmi_intf * intf, struct sel_event_record * evt)
{
sel_extended++;
ipmi_sel_print_std_entry(intf, evt);
sel_extended--;
}
void void
ipmi_sel_print_std_entry(struct ipmi_intf * intf, struct sel_event_record * evt) ipmi_sel_print_std_entry(struct ipmi_intf * intf, struct sel_event_record * evt)
{ {
@ -525,12 +533,20 @@ ipmi_sel_print_std_entry_verbose(struct ipmi_intf * intf, struct sel_event_recor
printf("\n"); printf("\n");
} }
static void void
ipmi_sel_print_extended_entry_verbose(struct ipmi_intf * intf, struct sel_event_record * evt, struct sdr_record_list * sdr) ipmi_sel_print_extended_entry_verbose(struct ipmi_intf * intf, struct sel_event_record * evt)
{ {
char * description; struct sdr_record_list * sdr;
if (!evt || !sdr) char * description;
if (!evt)
return; return;
sdr = ipmi_sdr_find_sdr_bynumtype(intf, evt->sensor_num, evt->sensor_type);
if (sdr == NULL) {
ipmi_sel_print_std_entry_verbose(intf, evt);
return;
}
printf("SEL Record ID : %04x\n", evt->record_id); printf("SEL Record ID : %04x\n", evt->record_id);
@ -1070,39 +1086,17 @@ ipmi_sel_show_entry(struct ipmi_intf * intf, int argc, char ** argv)
} }
/* lookup SDR entry based on sensor number and type */ /* lookup SDR entry based on sensor number and type */
ipmi_sel_print_extended_entry_verbose(intf, &evt);
sdr = ipmi_sdr_find_sdr_bynumtype(intf, evt.sensor_num, evt.sensor_type); sdr = ipmi_sdr_find_sdr_bynumtype(intf, evt.sensor_num, evt.sensor_type);
if (sdr == NULL) { if (sdr == NULL) {
ipmi_sel_print_std_entry_verbose(intf, &evt);
continue; continue;
} }
else {
/* print SEL extended entry */
ipmi_sel_print_extended_entry_verbose(intf, &evt, sdr);
}
/* print SDR entry */ /* print SDR entry */
oldv = verbose; oldv = verbose;
verbose = verbose ? : 1; verbose = verbose ? : 1;
switch (sdr->type) { ipmi_sdr_print_listentry(intf, sdr);
case SDR_RECORD_TYPE_FULL_SENSOR:
ipmi_sensor_print_full(intf, sdr->record.full);
entity.id = sdr->record.full->entity.id;
entity.instance = sdr->record.full->entity.instance;
break;
case SDR_RECORD_TYPE_COMPACT_SENSOR:
ipmi_sensor_print_compact(intf, sdr->record.compact);
entity.id = sdr->record.compact->entity.id;
entity.instance = sdr->record.compact->entity.instance;
break;
case SDR_RECORD_TYPE_EVENTONLY_SENSOR:
ipmi_sdr_print_sensor_eventonly(intf, sdr->record.eventonly);
entity.id = sdr->record.eventonly->entity.id;
entity.instance = sdr->record.eventonly->entity.instance;
break;
default:
verbose = oldv;
continue;
}
verbose = oldv; verbose = oldv;
/* lookup SDR entry based on entity id */ /* lookup SDR entry based on entity id */