Here is the patch for hpievents and hpi_cmd as suggested by Renier
=================================Cut Here============================
diff -Naur openhpi-2.10.1/clients/hpievents.c
openhpi-2.10.1/clients/hpievents.c
--- openhpi-2.10.1/clients/hpievents.c
+++ openhpi-2.10.1/clients/hpievents.c
@@ -171,6 +171,7 @@
printf( "Go and get the event\n");
while (1) {
rdr.RdrType = SAHPI_NO_RECORD;
+ rptentry.ResourceId = 0;
rv = saHpiEventGet( sessionid, timeout, &event, &rdr, &rptentry,
NULL);
if (rv != SA_OK) {
@@ -189,10 +190,20 @@
}
break;
} else {
- if (rdr.RdrType == SAHPI_NO_RECORD)
- oh_print_event(&event, NULL, 4);
- else
+ if (rdr.RdrType != SAHPI_NO_RECORD)
oh_print_event(&event, &rdr.Entity, 4);
+ else if (rptentry.ResourceId != 0)
+ oh_print_event(&event,
&rptentry.ResourceEntity, 4);
+ else {
+ rptentryid = event.Source;
+ rv = saHpiRptEntryGet(sessionid,
rptentryid, &nextrptentryid, &rptentry);
+ if(rv == SA_OK)
+ oh_print_event(&event,
&rptentry.ResourceEntity, 4);
+ else {
+ printf("Wrong resource Id <%d>
detected", event.Source);
+ oh_print_event(&event, NULL, 4);
+ }
+ }
}
}
diff -Naur openhpi-2.10.1/hpi_shell/session.c
openhpi-2.10.1/hpi_shell/session.c
--- openhpi-2.10.1/hpi_shell/session.c
+++ openhpi-2.10.1/hpi_shell/session.c
@@ -95,6 +95,10 @@
{
SaHpiEventT event;
SaErrorT rv;
+ SaHpiRptEntryT rptentry;
+ SaHpiRdrT rdr;
+ SaHpiEntryIdT rptentryid;
+ SaHpiEntryIdT nextrptentryid;
rv = saHpiSubscribe(Domain->sessionId);
if (rv != SA_OK) {
@@ -104,6 +108,8 @@
while(1) {
for(;;) {
+ rdr.RdrType = SAHPI_NO_RECORD;
+ rptentry.ResourceId = 0;
memset(&event, 0xF, sizeof(event));
rv = saHpiEventGet(Domain->sessionId,
SAHPI_TIMEOUT_IMMEDIATE, &event,
@@ -114,8 +120,24 @@
if (prt_flag == 1) {
if (show_event_short)
show_short_event(&event, ui_print);
- else
- oh_print_event(&event, NULL, 1);
+ else if (rdr.RdrType != SAHPI_NO_RECORD)
+ oh_print_event(&event,
&rdr.Entity, 4);
+ else if (rptentry.ResourceId != 0)
+ oh_print_event(&event,
&rptentry.ResourceEntity, 4);
+ else {
+ rptentryid = event.Source;
+ rv =
saHpiRptEntryGet(Domain->sessionId,
+
rptentryid,
+
&nextrptentryid, &rptentry);
+ if(rv == SA_OK)
+ oh_print_event(&event,
&rptentry.ResourceEntity, 4);
+ else {
+
printf("saHpiRptEntryGet failed for resource Id <%d> with error <%d>",
+ event.Source,
rv);
+ printf("Wrong resource
Id <%d> detected", event.Source);
+ oh_print_event(&event,
NULL, 4);
+ }
+ }
}
}/*the loop for retrieving event*/
sleep(1);
=================================Cut Here============================
Regards,
Raghavendra
________________________________
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of Renier
Morales
Sent: Monday, November 19, 2007 9:41 PM
To: [email protected]
Subject: Re: [Openhpi-devel] hpievents and hpi_shell does not prints
theentity path
[EMAIL PROTECTED] wrote on 11/07/2007 12:21:26
AM:
> hpievents client program does not prints the entity path for the
events
> which does not have the RDRs. The hpievents reads the entity path from
> the RDR structure.
> For example: For hot swap events, RDRs are NOT pushed as part of the
> events.
> Since all the events will push the rptentry, the entity path can be
> obtained from the rptentry instead of rdr.
Events will not always come with an rptentry. The fix should really
first check the RDR's entity path, since it can be different from the
rptentry. If there is not RDR, then use the RPTEntry's entity path. If
there is no RPTEntry, then try to lookup using SaHpiEventT.Source.
--Renier
>
> Also, the hpi_cmd (hpi_shell) does not prints the entity path for the
> events (when event is enabled).
>
> Entity path will help the user/tester to easily determine the
resources
> on which the event got generated.
>
> The fix for these problems is given as patch for openhpi-2.10.0 below:
>
> =================================Cut Here============================
> --- openhpi-2.10.0/clients/hpievents.c
> +++ openhpi-2.10.0/clients/hpievents.c
> @@ -170,7 +170,6 @@
>
> printf( "Go and get the event\n");
> while (1) {
> - rdr.RdrType = SAHPI_NO_RECORD;
>
> rv = saHpiEventGet( sessionid, timeout, &event, &rdr,
> &rptentry, NULL);
> if (rv != SA_OK) {
> @@ -189,10 +188,7 @@
> }
> break;
> } else {
> - if (rdr.RdrType == SAHPI_NO_RECORD)
> - oh_print_event(&event, NULL, 4);
> - else
> - oh_print_event(&event, &rdr.Entity,
4);
> + oh_print_event(&event,
> &rptentry.ResourceEntity, 6);
> }
> }
>
> --- openhpi-2.10.0/hpi_shell/session.c
> +++ openhpi-2.10.0/hpi_shell/session.c
> @@ -93,6 +93,7 @@
>
> static void* get_event(void *unused)
> {
> + SaHpiRptEntryT rptentry;
> SaHpiEventT event;
> SaErrorT rv;
>
> @@ -107,7 +108,7 @@
> memset(&event, 0xF, sizeof(event));
> rv = saHpiEventGet(Domain->sessionId,
> SAHPI_TIMEOUT_IMMEDIATE, &event,
> - NULL, NULL, NULL);
> + NULL, &rptentry, NULL);
> if (rv != SA_OK ) {
> break;
> }
> @@ -115,7 +116,7 @@
> if (show_event_short)
> show_short_event(&event,
> ui_print);
> else
> - oh_print_event(&event, NULL,
1);
> + oh_print_event(&event,
> &rptentry.ResourceEntity, 1);
> }
> }/*the loop for retrieving event*/
> sleep(1);
> =================================Cut Here============================
>
> Regards,
> Raghavendra.
>
>
------------------------------------------------------------------------
-
> This SF.net email is sponsored by: Splunk Inc.
> Still grepping through log files to find problems? Stop.
> Now Search log events and configuration files using AJAX and a
browser.
> Download your FREE copy of Splunk now >> http://get.splunk.com/
> _______________________________________________
> Openhpi-devel mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/openhpi-devel
-------------------------------------------------------------------------
SF.Net email is sponsored by: The Future of Linux Business White Paper
from Novell. From the desktop to the data center, Linux is going
mainstream. Let it simplify your IT future.
http://altfarm.mediaplex.com/ad/ck/8857-50307-18918-4
_______________________________________________
Openhpi-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openhpi-devel