From: <uli...@us...> - 2010-10-12 13:38:14
|
Revision: 7149 http://openhpi.svn.sourceforge.net/openhpi/?rev=7149&view=rev Author: ulikleber Date: 2010-10-12 13:38:06 +0000 (Tue, 12 Oct 2010) Log Message: ----------- Implements Feature Request 3085861: Provide Clients using oHpi functions Modified Paths: -------------- openhpi/trunk/clients/Makefile.am openhpi/trunk/docs/man/Makefile.am openhpi/trunk/docs/man/hpi_shell.pod.1 openhpi/trunk/docs/man/hpialarms.pod.1 openhpi/trunk/docs/man/hpidomain.pod.1 openhpi/trunk/docs/man/hpiel.pod.1 openhpi/trunk/docs/man/hpievents.pod.1 openhpi/trunk/docs/man/hpifan.pod.1 openhpi/trunk/docs/man/hpigensimdata.pod.1 openhpi/trunk/docs/man/hpiinv.pod.1 openhpi/trunk/docs/man/hpionIBMblade.pod.1 openhpi/trunk/docs/man/hpipower.pod.1 openhpi/trunk/docs/man/hpireset.pod.1 openhpi/trunk/docs/man/hpisensor.pod.1 openhpi/trunk/docs/man/hpisettime.pod.1 openhpi/trunk/docs/man/hpithres.pod.1 openhpi/trunk/docs/man/hpitop.pod.1 openhpi/trunk/docs/man/hpitree.pod.1 openhpi/trunk/docs/man/hpiwdt.pod.1 Added Paths: ----------- openhpi/trunk/clients/ohhandler.c openhpi/trunk/clients/ohparam.c openhpi/trunk/docs/man/ohhandler.pod.1 openhpi/trunk/docs/man/ohparam.pod.1 Modified: openhpi/trunk/clients/Makefile.am =================================================================== --- openhpi/trunk/clients/Makefile.am 2010-10-12 11:00:45 UTC (rev 7148) +++ openhpi/trunk/clients/Makefile.am 2010-10-12 13:38:06 UTC (rev 7149) @@ -27,7 +27,9 @@ hpithres \ hpitop \ hpisettime \ - hpionIBMblade + hpionIBMblade \ + ohhandler \ + ohparam include_HEADERS = @@ -79,6 +81,12 @@ hpionIBMblade_SOURCES = hpionIBMblade.c $(CLIENTS_SRC) hpionIBMblade_LDADD = $(COMMONLIBS) +ohhandler_SOURCES = ohhandler.c $(CLIENTS_SRC) +ohhandler_LDADD = $(COMMONLIBS) + +ohparam_SOURCES = ohparam.c $(CLIENTS_SRC) +ohparam_LDADD = $(COMMONLIBS) + clean-local: rm -f *~ *.o Added: openhpi/trunk/clients/ohhandler.c =================================================================== --- openhpi/trunk/clients/ohhandler.c (rev 0) +++ openhpi/trunk/clients/ohhandler.c 2010-10-12 13:38:06 UTC (rev 7149) @@ -0,0 +1,515 @@ +/* -*- linux-c -*- + * + * Copyright (C) Copyright Nokia Siemens Networks 2010 + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. This + * file and program are licensed under a BSD style license. See + * the Copying file included with the OpenHPI distribution for + * full licensing terms. + * + * Authors: + * Ulrich Kleber <uli...@us...> + * + * Log: + * Start from hpidomain.c + * This routine controls the handlers loaded by OpenHPI daemons + * using the OpenHPI extensions as described in ohpi.c + * + * Changes: + * + */ + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <unistd.h> +#include <getopt.h> +#include <uuid/uuid.h> +#include <SaHpi.h> +#include <oh_utils.h> +#include <oh_clients.h> +#include <oHpi.h> + +#define OH_SVN_REV "$Revision: 7133 $" + +/********************************************/ +/* Function prototypes */ +/********************************************/ +static SaErrorT exechandlercreate(int, char **, int); +static SaErrorT exechandlerdestroy(oHpiHandlerIdT); +static SaErrorT exechandlerinfo(oHpiHandlerIdT); +static SaErrorT exechandlergetnext(oHpiHandlerIdT); +static SaErrorT exechandlerfind(SaHpiResourceIdT); +static SaErrorT exechandlerretry(oHpiHandlerIdT); +static SaErrorT exechandlerlist(void); + + +/********************************************/ +/* Globals */ +/********************************************/ +int fdebug = 0; +SaHpiDomainIdT domainid = SAHPI_UNSPECIFIED_DOMAIN_ID; +SaHpiSessionIdT sessionid; + + +/********************************************/ +/* Main */ +/********************************************/ +int +main(int argc, char **argv) +{ + SaErrorT rv = SA_OK; + + oHpiHandlerIdT handlerid = 0; + SaHpiResourceIdT resid = 0; + SaHpiBoolT printusage = FALSE; + int i=1; + + enum cmdT {eUndefined, + eHandlerCreate, + eHandlerDestroy, + eHandlerInfo, + eHandlerGetNext, + eHandlerFind, + eHandlerRetry, + eHandlerList} cmd=eUndefined; + + oh_prog_version(argv[0], OH_SVN_REV); + + while (i<argc && !printusage && cmd!=eHandlerCreate) { + if (strcmp(argv[i],"-D")==0) { + if (++i<argc) domainid = atoi(argv[i]); + else printusage = TRUE; + } + else if (strcmp(argv[i],"-x")==0) fdebug=1; + + else if (strcmp(argv[i],"create")==0) { + cmd=eHandlerCreate; + // exechandlercreate will do the remaining reading of + // parameters itself + rv = exechandlercreate (argc, argv, ++i); + if (rv == SA_OK) exit (0); + if (rv != SA_ERR_HPI_INVALID_PARAMS) exit (1); + printusage = TRUE; + } + + else if (strcmp(argv[i],"destroy")==0) { + cmd=eHandlerDestroy; + if (++i<argc) handlerid = atoi(argv[i]); + else printusage = TRUE; + } + + else if (strcmp(argv[i],"info")==0) { + cmd=eHandlerInfo; + if (++i<argc) handlerid = atoi(argv[i]); + else printusage = TRUE; + } + + else if (strcmp(argv[i],"getnext")==0) { + cmd=eHandlerGetNext; + if (++i<argc) handlerid = atoi(argv[i]); + else printusage = TRUE; + } + + else if (strcmp(argv[i],"find")==0) { + cmd=eHandlerFind; + if (++i<argc) resid = atoi(argv[i]); + else printusage = TRUE; + } + + else if (strcmp(argv[i],"retry")==0) { + cmd=eHandlerRetry; + if (++i<argc) handlerid = atoi(argv[i]); + else printusage = TRUE; + } + + else if (strcmp(argv[i],"list")==0) { + cmd=eHandlerList; + if (++i<argc) printusage = TRUE; + } + + else printusage = TRUE; + + i++; + } + + if (cmd == eHandlerCreate) { + rv = exechandlercreate (argc, argv, i); + if (rv == SA_OK) exit (0); + if (rv == SA_ERR_HPI_INVALID_PARAMS) + printusage = TRUE; + else exit (1); + } + + if (printusage == TRUE || cmd == eUndefined) + { + printf("\n"); + printf("Usage: %s [-D domain] [-x] command [specific arguments]\n\n", + argv[0]); + printf(" -D nn Select domain id nn (not supported yet by oh-functions)\n"); + printf(" -x Display debug messages\n"); + printf("\n"); + printf(" ohhander [-D domain] [-x] list\n"); + printf(" List the handlers loaded in specified domain\n\n"); + printf(" ohhander [-D domain] [-x] info <handler-id>\n"); + printf(" Display info about handler <handler-id> \n\n"); + printf(" ohhander [-D domain] [-x] destroy <handler-id>\n"); + printf(" Unload handler <handler-id> and delete its config \n\n"); + printf(" ohhander [-D domain] [-x] getnext <handler-id>\n"); + printf(" Find next valid handler id from <handler-id> \n\n"); + printf(" ohhander [-D domain] [-x] find <resource-id>\n"); + printf(" Find the right handler for a resource id \n\n"); + printf(" ohhander [-D domain] [-x] retry <handler-id>\n"); + printf(" Retry loading of handler <handler-id> \n\n"); + printf(" ohhander [-D domain] [-x] create plugin <name> <params>\n"); + printf(" Create handler with the specified parameters.\n"); + printf(" Pairs of strings in commandline like in openhpi.conf.\n"); + printf(" Keyword plugin to select type of handler.\n"); + printf(" Entity root and other complex strings must be \n"); + printf(" enclosed in \".\n"); + printf(" example:\n"); + printf(" ohhandler create plugin libsimulator " + "entity_root \"{SYSTEM_CHASSIS,1}\" name sim\n"); + + printf("\n\n"); + exit(1); + } + + if (fdebug) { + if (domainid==SAHPI_UNSPECIFIED_DOMAIN_ID) + printf("saHpiSessionOpen\n"); + else printf("saHpiSessionOpen to domain %d\n",domainid); + } + rv = saHpiSessionOpen(domainid,&sessionid,NULL); + if (rv != SA_OK) { + printf("saHpiSessionOpen returns %d (%s)\n", + rv, oh_lookup_error(rv)); + exit(-1); + } + if (fdebug) + printf("saHpiSessionOpen returns with SessionId %d\n", + sessionid); + + switch (cmd){ + case eHandlerCreate: break; //already done + case eHandlerDestroy: + exechandlerdestroy ( handlerid ); + break; + case eHandlerInfo: + exechandlerinfo ( handlerid ); + break; + case eHandlerGetNext: + exechandlergetnext ( handlerid ); + break; + case eHandlerFind: + exechandlerfind ( resid ); + break; + case eHandlerRetry: + exechandlerretry ( handlerid ); + break; + case eHandlerList: + exechandlerlist ( ); + break; + case eUndefined: break; //already done + } + + rv = saHpiSessionClose(sessionid); + + exit(0); +} + +/********************************************/ +/* exechandlercreate */ +/********************************************/ +static SaErrorT exechandlercreate (int argc, char **argv, int i) +{ + SaErrorT rv = SA_OK; + oHpiHandlerIdT handlerid = 0; + GHashTable * createparams = g_hash_table_new_full ( + g_str_hash, g_str_equal, g_free, g_free); + SaHpiBoolT pluginnamegiven = SAHPI_FALSE; + + if (fdebug) printf ("createhandler started\n"); + + while (i<argc){ + if (strcmp(argv[i],"-f")==0) { + printf("input from file not implemented yet\n"); + return (SA_OK); + } + else if (++i<argc) { + if (strcmp(argv[i-1],"plugin")==0) pluginnamegiven = SAHPI_TRUE; + g_hash_table_insert( createparams, + g_strdup( argv[i-1] ), + g_strdup( argv[i] )); + if (fdebug) printf ("Pair of arguments: %s - %s\n", + g_strdup( argv[i-1] ), + g_strdup( argv[i] )); + } + else // parameters not in pairs + return (SA_ERR_HPI_INVALID_PARAMS); + i++; + } + + if (!pluginnamegiven) { + printf("You must enter a valid plugin name\n"); + return (SA_ERR_HPI_INVALID_PARAMS); + } + + if (fdebug) { + if (domainid==SAHPI_UNSPECIFIED_DOMAIN_ID) + printf("saHpiSessionOpen\n"); + else printf("saHpiSessionOpen to domain %d\n",domainid); + } + rv = saHpiSessionOpen(domainid,&sessionid,NULL); + if (rv != SA_OK) { + printf("saHpiSessionOpen returns %d (%s)\n", + rv, oh_lookup_error(rv)); + return (SA_ERR_HPI_INVALID_PARAMS); + } + if (fdebug) + printf("saHpiSessionOpen returns with SessionId %d\n", + sessionid); + + if (fdebug) printf ("Calling oHpiHandlerCreate!\n"); + rv = oHpiHandlerCreate(createparams, &handlerid ); + + if ( rv != SA_OK ) { + printf("oHpiHandlerCreate returned %d (%s)\n", + rv, oh_lookup_error(rv)); + return(rv); + } + + printf("Handler %d successfully created!\n", handlerid); + + rv = saHpiSessionClose(sessionid); + + return(SA_OK); + +} + +/********************************************/ +/* exechandlerdestroy */ +/********************************************/ +static SaErrorT exechandlerdestroy(oHpiHandlerIdT handlerid) +{ + SaErrorT rv = SA_OK; + if (fdebug) printf("Go and unload handler %d in domain %d\n", + handlerid, domainid); + + rv = oHpiHandlerDestroy ( handlerid ); + + if (fdebug) printf("oHpiHandlerDestroy returned %d (%s)\n", + rv, oh_lookup_error(rv)); + + if (rv==SA_OK) { + printf("Handler %d successfully unloaded.\n\n", handlerid); + return rv; + } + else if (rv==SA_ERR_HPI_NOT_PRESENT) { + if (domainid==SAHPI_UNSPECIFIED_DOMAIN_ID) + printf("Handler %d is not existing in default domain.\n", + handlerid); + else printf("Handler %d is not existing in domain %d.\n", + handlerid, domainid); + return rv; + } + else printf("\nHandler %d couldn't be unloaded, Returncode %d (%s)\n", + handlerid, rv, oh_lookup_error(rv)); + return rv; +} + +/********************************************/ +/* exechandlerinfo */ +/********************************************/ +// function to print from hash table +static void print_pair (gpointer key, gpointer value, gpointer user_data) +{ + printf (" %s %s\n ", (gchar *)key, (gchar *)value); +} + +static +SaErrorT exechandlerinfo(oHpiHandlerIdT handlerid) +{ + oHpiHandlerInfoT handlerinfo; + SaErrorT rv = SA_OK; + GHashTable *handlerconfig = g_hash_table_new_full( + g_str_hash, g_str_equal, + g_free, g_free ); + + + if (fdebug) printf("Go and display handler info for %d\n", handlerid); + + rv = oHpiHandlerInfo ( /* sessionid,*/ handlerid, &handlerinfo, &handlerconfig ); + + if (rv==SA_ERR_HPI_NOT_PRESENT) { + if (domainid==SAHPI_UNSPECIFIED_DOMAIN_ID) + printf("Handler %d is not existing in default domain.\n", + handlerid); + else printf("Handler %d is not existing in domain %d.\n", + handlerid, domainid); + g_hash_table_destroy(handlerconfig); + return SA_OK; + } + else if (rv!=SA_OK) { + printf("oHpiHandlerInfo returned %d (%s)\n", + rv, oh_lookup_error(rv)); + g_hash_table_destroy(handlerconfig); + return rv; + } + if (domainid==SAHPI_UNSPECIFIED_DOMAIN_ID) + printf("\n\nInfo for handler %d in default domain:\n\n",handlerid); + else printf("\n\nInfo for handler %d in domain %d:\n\n",handlerid, domainid); + printf("Plugin name: %s\n",handlerinfo.plugin_name); + + printf("Root Entity Path: "); + oh_print_ep (&(handlerinfo.entity_root),0); + + printf("Failed attempts to load handler: %d\n",handlerinfo.load_failed); + + printf("Handler configuration:\n"); + g_hash_table_foreach(handlerconfig, print_pair, NULL); + printf("\n"); + + g_hash_table_destroy(handlerconfig); + return rv; +} + +/********************************************/ +/* exechandlergetnext */ +/********************************************/ +static SaErrorT exechandlergetnext(oHpiHandlerIdT handlerid) +{ + SaErrorT rv = SA_OK; + oHpiHandlerIdT nexthandlerid; + + if (fdebug) printf("Go and get next handler from %d in domain %d\n", + handlerid, domainid); + + rv = oHpiHandlerGetNext ( handlerid, &nexthandlerid ); + + if (fdebug) printf("oHpiHandlerGetNext returned %d (%s)\n", + rv, oh_lookup_error(rv)); + + if (rv==SA_OK) { + printf("Next Handler found from %d is %d.\n\n", + handlerid, nexthandlerid); + } + else if (rv==SA_ERR_HPI_NOT_PRESENT) { + if (domainid==SAHPI_UNSPECIFIED_DOMAIN_ID) + printf("No next Handler found from %d in default domain.\n", + handlerid); + else printf("No next Handler found from %d in domain %d.\n", + handlerid, domainid); + } + else printf("\noHpiHandlerGetNext returned %d (%s)\n", + rv, oh_lookup_error(rv)); + return rv; +} + +/********************************************/ +/* exechandlerfind */ +/********************************************/ +static SaErrorT exechandlerfind(SaHpiResourceIdT resid) +{ + SaErrorT rv = SA_OK; + oHpiHandlerIdT handlerid; + + if (fdebug) printf("Go and find handler for resource %d in domain " + "%d using session %d\n", + resid, domainid, sessionid); + + rv = oHpiHandlerFind ( sessionid, resid, &handlerid ); + + if (fdebug) printf("oHpiHandlerFind returned %d (%s)\n", + rv, oh_lookup_error(rv)); + + if (rv==SA_OK) { + printf("Handler found for resource %d: Handler-id %d.\n\n", + resid, handlerid); + } + else if (rv==SA_ERR_HPI_NOT_PRESENT) { + if (domainid==SAHPI_UNSPECIFIED_DOMAIN_ID) + printf("No Handler found for resource %d in default domain.\n", + resid); + else printf("No Handler found for resource %d in domain %d.\n", + resid, domainid); + } + else printf("\noHpiHandlerFind returned %d (%s)\n", + rv, oh_lookup_error(rv)); + return rv; +} + +/********************************************/ +/* exechandlerretry */ +/********************************************/ +static SaErrorT exechandlerretry(oHpiHandlerIdT handlerid) +{ + SaErrorT rv = SA_OK; + + if (fdebug) printf("Go and retry loading handler %d in domain %d\n", + handlerid, domainid); + + rv = oHpiHandlerRetry ( handlerid ); + + if (rv!=SA_OK) { + printf("oHpiHandlerRetry returned %d (%s)\n", + rv, oh_lookup_error(rv)); + return rv; + } + if (domainid==SAHPI_UNSPECIFIED_DOMAIN_ID) + printf("\nHandler %d in default domain successfully re-loaded.\n", + handlerid); + else printf("\nHandler %d in domain %d successfully re-loaded.\n", + handlerid, domainid); + return rv; +} + +/********************************************/ +/* exechandlerlist */ +/********************************************/ +static SaErrorT exechandlerlist() +{ + SaErrorT rv = SA_OK; + oHpiHandlerIdT handlerid = 0; + oHpiHandlerIdT nexthandlerid; + oHpiHandlerInfoT handlerinfo; + GHashTable *config = 0; + + if (domainid==SAHPI_UNSPECIFIED_DOMAIN_ID) + printf("Handlers defined in default domain:\n"); + else printf("Handlers defined in Domain %d:\n",domainid); + while (rv==SA_OK) { + rv = oHpiHandlerGetNext ( handlerid, &nexthandlerid ); + + if (fdebug) printf("oHpiHandlerGetNext (%d) returned %d (%s)\n", + handlerid, rv, oh_lookup_error(rv)); + + if (rv==SA_OK) { + //display info for that handler + rv = oHpiHandlerInfo ( /* sessionid, */ nexthandlerid, &handlerinfo, &config ); + if (rv!=SA_OK) { + printf("oHpiHandlerInfo for handler %d returned %d (%s)\n", + nexthandlerid, rv, oh_lookup_error(rv)); + rv = SA_OK; + } + else { + printf("Handler %d: %s, ", + nexthandlerid, handlerinfo.plugin_name); + oh_print_ep (&(handlerinfo.entity_root),0); + // g_hash_table_destroy(config); + } + } + else if (rv!=SA_ERR_HPI_NOT_PRESENT) { + printf("Error: oHpiHandlerGetNext (%d) returned %d (%s)\n", + handlerid, rv, oh_lookup_error(rv)); + } + handlerid = nexthandlerid; + } + printf("\n"); + if (rv==SA_ERR_HPI_NOT_PRESENT) return SA_OK; + return rv; +} + +/* end ohhandler.c */ Added: openhpi/trunk/clients/ohparam.c =================================================================== --- openhpi/trunk/clients/ohparam.c (rev 0) +++ openhpi/trunk/clients/ohparam.c 2010-10-12 13:38:06 UTC (rev 7149) @@ -0,0 +1,384 @@ +/* -*- linux-c -*- + * + * Copyright (C) Copyright Nokia Siemens Networks 2010 + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. This + * file and program are licensed under a BSD style license. See + * the Copying file included with the OpenHPI distribution for + * full licensing terms. + * + * Authors: + * Ulrich Kleber <uli...@us...> + * + * Log: + * Start from hpidomain.c + * This routine can display and manipulate parameters of the + * openHPI daemon as specified in openhpi.conf file, using + * the OpenHPI extensions as described in ohpi.c + * + * Changes: + * + */ + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <unistd.h> +#include <getopt.h> +#include <uuid/uuid.h> +#include <SaHpi.h> +#include <oh_utils.h> +#include <oh_clients.h> +#include <oHpi.h> + +#define OH_SVN_REV "$Revision: 7142 $" + +/* + * Function prototypes + */ +static SaErrorT execglobalparamget (void); +static SaErrorT execglobalparamset (oHpiGlobalParamTypeT,char *); + + +/* + * Globals + */ +int fdebug = 0; +SaHpiDomainIdT domainid = SAHPI_UNSPECIFIED_DOMAIN_ID; +SaHpiSessionIdT sessionid; + + +/* + * Main + */ +int +main(int argc, char **argv) +{ + SaErrorT rv = SA_OK; + + oHpiGlobalParamTypeT paramtype = OHPI_CONF; + char setparam[OH_MAX_TEXT_BUFFER_LENGTH]; + SaHpiBoolT printusage = FALSE; + int i=1; + + enum cmdT {eUndefined, + eGlobalParamGet, + eGlobalParamSet} cmd=eUndefined; + + oh_prog_version(argv[0], OH_SVN_REV); + + while (i<argc && !printusage) { + if (strcmp(argv[i],"-D")==0) { + if (++i<argc) domainid = atoi(argv[i]); + else printusage = TRUE; + } + else if (strcmp(argv[i],"-x")==0) fdebug=1; + else if (strcmp(argv[i],"get")==0) { + cmd=eGlobalParamGet; + } + else if (strcmp(argv[i],"set")==0) { + cmd=eGlobalParamSet; + if (++i<argc) { + if (strcmp(argv[i],"OPENHPI_ON_EP")==0) + paramtype=OHPI_ON_EP; + else if (strcmp(argv[i],"OPENHPI_LOG_ON_SEV")==0) + paramtype=OHPI_LOG_ON_SEV; + else if (strcmp(argv[i],"OPENHPI_EVT_QUEUE_LIMIT")==0) + paramtype=OHPI_EVT_QUEUE_LIMIT; + else if (strcmp(argv[i],"OPENHPI_DEL_SIZE_LIMIT")==0) + paramtype=OHPI_DEL_SIZE_LIMIT; + else if (strcmp(argv[i],"OPENHPI_DEL_SAVE")==0) + paramtype=OHPI_DEL_SAVE; + else if (strcmp(argv[i],"OPENHPI_DAT_SIZE_LIMIT")==0) + paramtype=OHPI_DAT_SIZE_LIMIT; + else if (strcmp(argv[i],"OPENHPI_DAT_USER_LIMIT")==0) + paramtype=OHPI_DAT_USER_LIMIT; + else if (strcmp(argv[i],"OPENHPI_DAT_SAVE")==0) + paramtype=OHPI_DAT_SAVE; + else if (strcmp(argv[i],"OPENHPI_PATH")==0) + paramtype=OHPI_PATH; + else if (strcmp(argv[i],"OPENHPI_VARPATH")==0) + paramtype=OHPI_VARPATH; + else if (strcmp(argv[i],"OPENHPI_CONF")==0) + paramtype=OHPI_CONF; + else printusage = TRUE; + } + else printusage = TRUE; + + if (++i<argc) strcpy(setparam, argv[i]); + + else if (i>=argc) printusage = TRUE; + } + + else printusage = TRUE; + i++; + } + + if (printusage == TRUE || cmd == eUndefined) + { + printf("\n"); + printf("Usage: %s [-D domain] [-x] command [specific arguments]\n\n", + argv[0]); + printf(" -D nn Select domain id nn (not supported yet by oh-functions)\n"); + printf(" -x Display debug messages\n"); + printf("\n"); + printf(" Command get: display info about all global parameters\n"); + printf(" no specific arguments\n"); + printf(" Command set:\n"); + printf(" one of the daemon's global parameters:\n"); + printf(" (without the OPENHPI prefix)\n"); + printf(" ON_EP, LOG_ON_SEV, EVT_QUEUE_LIMIT, \n"); + printf(" DEL_SIZE_LIMIT, DEL_SAVE\n"); + printf(" DAT_SIZE_LIMIT, DAT_USER_LIMIT, DAT_SAVE\n"); + printf(" PATH, VARPATH, CONF\n"); + printf(" and the desired new value. Example:\n"); + printf(" ohparam set DEL_SIZE_LIMIT 20000\n"); + printf("\n\n"); + exit(1); + } + + if (fdebug) { + if (domainid==SAHPI_UNSPECIFIED_DOMAIN_ID) + printf("saHpiSessionOpen\n"); + else printf("saHpiSessionOpen to domain %d\n",domainid); + } + rv = saHpiSessionOpen(domainid,&sessionid,NULL); + if (rv != SA_OK) { + printf("saHpiSessionOpen returns %d (%s)\n", + rv, oh_lookup_error(rv)); + exit(-1); + } + if (fdebug) + printf("saHpiSessionOpen returns with SessionId %d\n", + sessionid); + + switch (cmd){ + case eGlobalParamGet: + rv = execglobalparamget ( ); + break; + case eGlobalParamSet: + rv = execglobalparamset ( paramtype, setparam ); + break; + default: + printf("\n\nSorry, this function is not implemented yet\n\n"); + rv = SA_ERR_HPI_INVALID_PARAMS; + } + + if (rv == SA_OK) { + rv = saHpiSessionClose(sessionid); + exit(0); + } + printf("Param set failed with returncode %d (%s)\n", + rv, oh_lookup_error(rv)); + exit(-1); + +} + +/* + * + */ +static SaErrorT execglobalparamget () +{ + SaErrorT rv = SA_OK; + oHpiGlobalParamT param; + + if (fdebug) printf("Go and read global parameters in domain %d\n", domainid); + + param.Type = OHPI_ON_EP; + rv = oHpiGlobalParamGet (¶m); + if (rv!=SA_OK) { + printf("oHpiGlobalParamGet(OHPI_ON_EP) returned %d (%s)\n", + rv, oh_lookup_error(rv)); + return rv; + } + printf("OPENHPI_ON_EP: "); + oh_print_ep (&(param.u.OnEP),0); + + param.Type = OHPI_LOG_ON_SEV; + rv = oHpiGlobalParamGet (¶m); + if (rv!=SA_OK) { + printf("oHpiGlobalParamGet(OHPI_LOG_ON_SEV) returned %d (%s)\n", + rv, oh_lookup_error(rv)); + return rv; + } + printf("OPENHPI_LOG_ON_SEV = %s\n", oh_lookup_severity (param.u.LogOnSev)); + + param.Type =OHPI_EVT_QUEUE_LIMIT; + rv = oHpiGlobalParamGet (¶m); + if (rv!=SA_OK) { + printf("oHpiGlobalParamGet(OHPI_EVT_QUEUE_LIMIT) returned %d (%s)\n", + rv, oh_lookup_error(rv)); + return rv; + } + printf("OPENHPI_EVT_QUEUE_LIMIT = %d\n", param.u.EvtQueueLimit); + + param.Type =OHPI_DEL_SIZE_LIMIT; + rv = oHpiGlobalParamGet (¶m); + if (rv!=SA_OK) { + printf("oHpiGlobalParamGet(OHPI_DEL_SIZE_LIMIT) returned %d (%s)\n", + rv, oh_lookup_error(rv)); + return rv; + } + printf("OPENHPI_DEL_SIZE_LIMIT = %d\n", param.u.DelSizeLimit); + + param.Type =OHPI_DEL_SAVE; + rv = oHpiGlobalParamGet (¶m); + if (rv!=SA_OK) { + printf("oHpiGlobalParamGet(OHPI_DEL_SAVE) returned %d (%s)\n", + rv, oh_lookup_error(rv)); + return rv; + } + printf("OPENHPI_DEL_SAVE = "); + if (param.u.DelSave) printf("TRUE\n"); + else printf("FALSE\n"); + + param.Type =OHPI_DAT_SIZE_LIMIT; + rv = oHpiGlobalParamGet (¶m); + if (rv!=SA_OK) { + printf("oHpiGlobalParamGet(OHPI_DAT_SIZE_LIMIT) returned %d (%s)\n", + rv, oh_lookup_error(rv)); + return rv; + } + printf("OPENHPI_DAT_SIZE_LIMIT = %d\n", param.u.DatSizeLimit); + + param.Type =OHPI_DAT_USER_LIMIT; + rv = oHpiGlobalParamGet (¶m); + if (rv!=SA_OK) { + printf("oHpiGlobalParamGet(OHPI_DAT_USER_LIMIT) returned %d (%s)\n", + rv, oh_lookup_error(rv)); + return rv; + } + printf("OPENHPI_DAT_USER_LIMIT = %d\n", param.u.DatUserLimit); + + param.Type =OHPI_DAT_SAVE; + rv = oHpiGlobalParamGet (¶m); + if (rv!=SA_OK) { + printf("oHpiGlobalParamGet(OHPI_DAT_SAVE) returned %d (%s)\n", + rv, oh_lookup_error(rv)); + return rv; + } + printf("OPENHPI_DAT_SAVE = "); + if (param.u.DatSave) printf("TRUE\n"); + else printf("FALSE\n"); + + param.Type =OHPI_PATH; + rv = oHpiGlobalParamGet (¶m); + if (rv!=SA_OK) { + printf("oHpiGlobalParamGet(OHPI_PATH) returned %d (%s)\n", + rv, oh_lookup_error(rv)); + return rv; + } + printf("OPENHPI_PATH = %s\n",param.u.Path); + + param.Type =OHPI_VARPATH; + rv = oHpiGlobalParamGet (¶m); + if (rv!=SA_OK) { + printf("oHpiGlobalParamGet(OHPI_VARPATH) returned %d (%s)\n", + rv, oh_lookup_error(rv)); + return rv; + } + printf("OPENHPI_VARPATH = %s\n",param.u.VarPath); + + param.Type =OHPI_CONF; + rv = oHpiGlobalParamGet (¶m); + if (rv!=SA_OK) { + printf("oHpiGlobalParamGet(OHPI_CONF) returned %d (%s)\n", + rv, oh_lookup_error(rv)); + return rv; + } + printf("OPENHPI_CONF = %s\n",param.u.Conf); + + return SA_OK; +} + +/* + * + */ +static SaErrorT execglobalparamset (oHpiGlobalParamTypeT ptype, char *setparam) +{ + SaErrorT rv = SA_OK; + oHpiGlobalParamT param; + SaHpiTextBufferT buffer; + + if (fdebug) printf("Go and set global parameter %d in domain %d to %s\n", ptype, domainid, setparam); + + param.Type = ptype; + switch (ptype){ + //strings + case OHPI_PATH: strcpy(param.u.Path, setparam);break; + case OHPI_VARPATH: strcpy(param.u.VarPath, setparam);break; + case OHPI_CONF: strcpy(param.u.Conf, setparam);break; + //ep + case OHPI_ON_EP: + if (oh_encode_entitypath(setparam,¶m.u.OnEP)!=SA_OK) + return SA_ERR_HPI_INVALID_PARAMS; + break; + //severity + case OHPI_LOG_ON_SEV: + strncpy((char *)buffer.Data, setparam, SAHPI_MAX_TEXT_BUFFER_LENGTH); + if (oh_encode_severity(&buffer, ¶m.u.LogOnSev)!=SA_OK) + return SA_ERR_HPI_INVALID_PARAMS; + break; + //integers + case OHPI_EVT_QUEUE_LIMIT: param.u.EvtQueueLimit = atoi(setparam);break; + case OHPI_DEL_SIZE_LIMIT: param.u.DelSizeLimit = atoi(setparam);break; + case OHPI_DAT_SIZE_LIMIT: param.u.DatSizeLimit = atoi(setparam);break; + case OHPI_DAT_USER_LIMIT: param.u.DatUserLimit = atoi(setparam);break; + //bools + case OHPI_DEL_SAVE: + if (strcmp(setparam,"TRUE")==0) param.u.DelSave = SAHPI_TRUE; + else if (strcmp(setparam,"FALSE")==0) param.u.DelSave = SAHPI_FALSE; + else return SA_ERR_HPI_INVALID_PARAMS; + break; + case OHPI_DAT_SAVE: + if (strcmp(setparam,"TRUE")==0) param.u.DatSave = SAHPI_TRUE; + else if (strcmp(setparam,"FALSE")==0) param.u.DatSave = SAHPI_FALSE; + else return SA_ERR_HPI_INVALID_PARAMS; + break; + } + rv = oHpiGlobalParamSet (¶m); + + if (rv!=SA_OK) { + printf("oHpiGlobalParamSet returned %d (%s)\n", + rv, oh_lookup_error(rv)); + return rv; + } + + switch (param.Type){ + case OHPI_ON_EP: printf("OPENHPI_ON_EP: "); + oh_print_ep (&(param.u.OnEP),0); + break; + case OHPI_LOG_ON_SEV: printf("OPENHPI_LOG_ON_SEV = %s\n", + oh_lookup_severity (param.u.LogOnSev)); + break; + case OHPI_EVT_QUEUE_LIMIT: printf("OPENHPI_EVT_QUEUE_LIMIT = %d\n", + param.u.EvtQueueLimit); + break; + case OHPI_DEL_SIZE_LIMIT: printf("OPENHPI_DEL_SIZE_LIMIT = %d\n", + param.u.DelSizeLimit); + break; + case OHPI_DEL_SAVE: printf("OPENHPI_DEL_SAVE = "); + if (param.u.DelSave) printf("TRUE\n"); + else printf("FALSE\n"); + break; + case OHPI_DAT_SIZE_LIMIT: printf("OPENHPI_DAT_SIZE_LIMIT = %d\n", + param.u.DatSizeLimit); + break; + case OHPI_DAT_USER_LIMIT: printf("OPENHPI_DAT_USER_LIMIT = %d\n", + param.u.DatUserLimit); + break; + case OHPI_DAT_SAVE: printf("OPENHPI_DAT_SAVE = "); + if (param.u.DatSave) printf("TRUE\n"); + else printf("FALSE\n"); + break; + case OHPI_PATH: printf("OHPENPI_PATH = %s\n",param.u.Path);break; + case OHPI_VARPATH: printf("OPENHPI_VARPATH = %s\n",param.u.VarPath);break; + case OHPI_CONF: printf("OPENHPI_CONF = %s\n",param.u.Conf);break; + } + return SA_OK; + +} + +/* end ohparam.c */ Modified: openhpi/trunk/docs/man/Makefile.am =================================================================== --- openhpi/trunk/docs/man/Makefile.am 2010-10-12 11:00:45 UTC (rev 7148) +++ openhpi/trunk/docs/man/Makefile.am 2010-10-12 13:38:06 UTC (rev 7149) @@ -38,6 +38,7 @@ hpievents.pod.1 hpionIBMblade.pod.1 \ hpisensor.pod.1 hpitop.pod.1 \ hpidomain.pod.1 hpigensimdata.pod.1 \ + ohhandler.pod.1 ohparam.pod.1 \ hpi_shell.pod.1 @@ -71,6 +72,7 @@ hpievents.1 hpionIBMblade.1 \ hpisensor.1 hpitop.1 \ hpidomain.1 hpigensimdata.1 \ + ohhandler.1 ohparam.1 \ hpi_shell.1 clean-local: am_config_clean-local Modified: openhpi/trunk/docs/man/hpi_shell.pod.1 =================================================================== --- openhpi/trunk/docs/man/hpi_shell.pod.1 2010-10-12 11:00:45 UTC (rev 7148) +++ openhpi/trunk/docs/man/hpi_shell.pod.1 2010-10-12 13:38:06 UTC (rev 7149) @@ -31,11 +31,13 @@ =head1 SEE ALSO - hpi_shell hpifan hpipower hpithres - hpialarms hpiinv hpireset hpitop - hpiel hpijs hpisensor hpitree + hpialarms hpifan hpipower hpithres + hpidomain hpigensimdata hpireset hpitop + hpiel hpiinv hpisensor hpitree hpievents hpionIBMblade hpisettime hpiwdt + ohhandler ohparam + =head1 AUTHORS Author(s) of this man page: Modified: openhpi/trunk/docs/man/hpialarms.pod.1 =================================================================== --- openhpi/trunk/docs/man/hpialarms.pod.1 2010-10-12 11:00:45 UTC (rev 7148) +++ openhpi/trunk/docs/man/hpialarms.pod.1 2010-10-12 13:38:06 UTC (rev 7149) @@ -62,6 +62,7 @@ hpiel hpiinv hpisensor hpitree hpievents hpionIBMblade hpisettime hpiwdt hpifan hpipower hpithres + ohhandler ohparam =head1 AUTHORS Modified: openhpi/trunk/docs/man/hpidomain.pod.1 =================================================================== --- openhpi/trunk/docs/man/hpidomain.pod.1 2010-10-12 11:00:45 UTC (rev 7148) +++ openhpi/trunk/docs/man/hpidomain.pod.1 2010-10-12 13:38:06 UTC (rev 7149) @@ -31,8 +31,10 @@ hpiel hpiinv hpisensor hpitree hpievents hpionIBMblade hpisettime hpiwdt hpifan hpipower hpithres + ohhandler ohparam + =head1 AUTHORS Authors of this man page: Modified: openhpi/trunk/docs/man/hpiel.pod.1 =================================================================== --- openhpi/trunk/docs/man/hpiel.pod.1 2010-10-12 11:00:45 UTC (rev 7148) +++ openhpi/trunk/docs/man/hpiel.pod.1 2010-10-12 13:38:06 UTC (rev 7149) @@ -70,6 +70,7 @@ hpidomain hpiinv hpisensor hpitree hpievents hpionIBMblade hpisettime hpiwdt hpifan hpipower hpithres + ohhandler ohparam =head1 AUTHORS Modified: openhpi/trunk/docs/man/hpievents.pod.1 =================================================================== --- openhpi/trunk/docs/man/hpievents.pod.1 2010-10-12 11:00:45 UTC (rev 7148) +++ openhpi/trunk/docs/man/hpievents.pod.1 2010-10-12 13:38:06 UTC (rev 7149) @@ -55,6 +55,7 @@ hpidomain hpiinv hpisensor hpitree hpiel hpionIBMblade hpisettime hpiwdt hpifan hpipower hpithres + ohhandler ohparam =head1 AUTHORS Modified: openhpi/trunk/docs/man/hpifan.pod.1 =================================================================== --- openhpi/trunk/docs/man/hpifan.pod.1 2010-10-12 11:00:45 UTC (rev 7148) +++ openhpi/trunk/docs/man/hpifan.pod.1 2010-10-12 13:38:06 UTC (rev 7149) @@ -31,6 +31,7 @@ hpidomain hpiinv hpisensor hpitree hpiel hpionIBMblade hpisettime hpiwdt hpievents hpipower hpithres + ohhandler ohparam =head1 AUTHORS Modified: openhpi/trunk/docs/man/hpigensimdata.pod.1 =================================================================== --- openhpi/trunk/docs/man/hpigensimdata.pod.1 2010-10-12 11:00:45 UTC (rev 7148) +++ openhpi/trunk/docs/man/hpigensimdata.pod.1 2010-10-12 13:38:06 UTC (rev 7149) @@ -33,6 +33,7 @@ hpidomain hpiinv hpisensor hpitree hpiel hpionIBMblade hpisettime hpiwdt hpievents hpipower hpithres + ohhandler ohparam =head1 AUTHORS Modified: openhpi/trunk/docs/man/hpiinv.pod.1 =================================================================== --- openhpi/trunk/docs/man/hpiinv.pod.1 2010-10-12 11:00:45 UTC (rev 7148) +++ openhpi/trunk/docs/man/hpiinv.pod.1 2010-10-12 13:38:06 UTC (rev 7149) @@ -42,6 +42,7 @@ hpidomain hpigensimdata hpisensor hpitree hpiel hpionIBMblade hpisettime hpiwdt hpievents hpipower hpithres + ohhandler ohparam =head1 AUTHORS Modified: openhpi/trunk/docs/man/hpionIBMblade.pod.1 =================================================================== --- openhpi/trunk/docs/man/hpionIBMblade.pod.1 2010-10-12 11:00:45 UTC (rev 7148) +++ openhpi/trunk/docs/man/hpionIBMblade.pod.1 2010-10-12 13:38:06 UTC (rev 7149) @@ -55,6 +55,7 @@ hpidomain hpigensimdata hpisensor hpitree hpiel hpiiinv hpisettime hpiwdt hpievents hpipower hpithres + ohhandler ohparam =head1 AUTHORS Modified: openhpi/trunk/docs/man/hpipower.pod.1 =================================================================== --- openhpi/trunk/docs/man/hpipower.pod.1 2010-10-12 11:00:45 UTC (rev 7148) +++ openhpi/trunk/docs/man/hpipower.pod.1 2010-10-12 13:38:06 UTC (rev 7149) @@ -34,6 +34,7 @@ hpidomain hpigensimdata hpisensor hpitree hpiel hpiiinv hpisettime hpiwdt hpievents hpionIBMblade hpithres + ohhandler ohparam =head1 AUTHORS Modified: openhpi/trunk/docs/man/hpireset.pod.1 =================================================================== --- openhpi/trunk/docs/man/hpireset.pod.1 2010-10-12 11:00:45 UTC (rev 7148) +++ openhpi/trunk/docs/man/hpireset.pod.1 2010-10-12 13:38:06 UTC (rev 7149) @@ -36,6 +36,7 @@ hpidomain hpigensimdata hpisensor hpitree hpiel hpiiinv hpisettime hpiwdt hpievents hpionIBMblade hpithres + ohhandler ohparam =head1 AUTHORS Modified: openhpi/trunk/docs/man/hpisensor.pod.1 =================================================================== --- openhpi/trunk/docs/man/hpisensor.pod.1 2010-10-12 11:00:45 UTC (rev 7148) +++ openhpi/trunk/docs/man/hpisensor.pod.1 2010-10-12 13:38:06 UTC (rev 7149) @@ -33,6 +33,7 @@ hpidomain hpigensimdata hpireset hpitree hpiel hpiiinv hpisettime hpiwdt hpievents hpionIBMblade hpithres + ohhandler ohparam =head1 AUTHORS Modified: openhpi/trunk/docs/man/hpisettime.pod.1 =================================================================== --- openhpi/trunk/docs/man/hpisettime.pod.1 2010-10-12 11:00:45 UTC (rev 7148) +++ openhpi/trunk/docs/man/hpisettime.pod.1 2010-10-12 13:38:06 UTC (rev 7149) @@ -30,6 +30,7 @@ hpidomain hpigensimdata hpireset hpitree hpiel hpiiinv hpisensor hpiwdt hpievents hpionIBMblade hpithres + ohhandler ohparam =head1 AUTHORS Modified: openhpi/trunk/docs/man/hpithres.pod.1 =================================================================== --- openhpi/trunk/docs/man/hpithres.pod.1 2010-10-12 11:00:45 UTC (rev 7148) +++ openhpi/trunk/docs/man/hpithres.pod.1 2010-10-12 13:38:06 UTC (rev 7149) @@ -28,6 +28,7 @@ hpidomain hpigensimdata hpireset hpitree hpiel hpiiinv hpisensor hpiwdt hpievents hpionIBMblade hpisettime + ohhandler ohparam =head1 AUTHORS Modified: openhpi/trunk/docs/man/hpitop.pod.1 =================================================================== --- openhpi/trunk/docs/man/hpitop.pod.1 2010-10-12 11:00:45 UTC (rev 7148) +++ openhpi/trunk/docs/man/hpitop.pod.1 2010-10-12 13:38:06 UTC (rev 7149) @@ -39,6 +39,7 @@ hpidomain hpigensimdata hpireset hpitree hpiel hpiiinv hpisensor hpiwdt hpievents hpionIBMblade hpisettime + ohhandler ohparam =head1 AUTHORS Modified: openhpi/trunk/docs/man/hpitree.pod.1 =================================================================== --- openhpi/trunk/docs/man/hpitree.pod.1 2010-10-12 11:00:45 UTC (rev 7148) +++ openhpi/trunk/docs/man/hpitree.pod.1 2010-10-12 13:38:06 UTC (rev 7149) @@ -41,6 +41,7 @@ hpidomain hpigensimdata hpireset hpitop hpiel hpiiinv hpisensor hpiwdt hpievents hpionIBMblade hpisettime + ohhandler ohparam =head1 AUTHORS Modified: openhpi/trunk/docs/man/hpiwdt.pod.1 =================================================================== --- openhpi/trunk/docs/man/hpiwdt.pod.1 2010-10-12 11:00:45 UTC (rev 7148) +++ openhpi/trunk/docs/man/hpiwdt.pod.1 2010-10-12 13:38:06 UTC (rev 7149) @@ -33,6 +33,7 @@ hpidomain hpigensimdata hpireset hpitop hpiel hpiiinv hpisensor hpitree hpievents hpionIBMblade hpisettime + ohhandler ohparam =head1 AUTHORS Added: openhpi/trunk/docs/man/ohhandler.pod.1 =================================================================== --- openhpi/trunk/docs/man/ohhandler.pod.1 (rev 0) +++ openhpi/trunk/docs/man/ohhandler.pod.1 2010-10-12 13:38:06 UTC (rev 7149) @@ -0,0 +1,63 @@ +=head1 NAME + +ohhandler - An openhpi sample application that uses the openhpi additional interfaces to control openhpi configuration. That is plugins can be loaded, plugin instances (handlers) created, unloaded or their configuration displayed. + +=head1 SYNOPSIS + + ohhandler [-D domain] [-x] list + ohhandler [-D domain] [-x] info <handler-id> + ohhandler [-D domain] [-x] destroy <handler-id> + ohhandler [-D domain] [-x] getnext <handler-id> + ohhandler [-D domain] [-x] find <resource-id> + ohhandler [-D domain] [-x] retry <handler-id> + ohhandler [-D domain] [-x] create plugin <plugin-name> <configuration-parameters> + +=head1 DESCRIPTION + +ohhandler list will display a list of all plugin instances (handlers) currently defined in the openhpi daemon for the specified domain. Part of the output is the handler-id that can be used in subsequent commands. + +ohhandler info will display specific info for the handler with the specified id. This information includes all configuration parameters of the handler as specified in the openhpi.conf file or as dynamically defined during a "ohhandler create" call. + +ohhandler destroy will unload the specified handler and delete all its configuration information. + +ohhandler getnext will allows to walk through all hanlers currently defined in the openhpi daemon for the specified domain. + +ohhandler find will find the handler that is managing the specified resource. + +ohhandler retry allows to try again to load and initialize the specified handler. + +ohhandler create allows to dynamically create a new handler with configuration parameters like they are specified in the openhpi.conf file. + - The type of plugin is specified with the keyword plugin + - Configuration parameters should follow as name value pairs + - Complex strings like entity paths must be enclosed with "" + Example: + ohhandler create plugin libsimulator entity_root "{SYSTEM_CHASSIS,1}" name sim + +If no domain is selected, ohhandler uses the default domain. The selected domain id must be configured via the openhpidclient.conf file specified in the environment. + +=head1 OPTIONS + +=over 2 + + -D <domainid> select domain id + -x display debug messages. + -h help + +=back + +=head1 SEE ALSO + + hpi_shell + hpialarms hpigensimdata hpireset hpitop + hpidomain hpiinv hpisensor hpitree + hpiel hpionIBMblade hpisettime hpiwdt + hpievents hpipower hpithres + ohparam + + +=head1 AUTHORS + +Authors of this man page: + + Ulrich Kleber (uli...@us...) + Added: openhpi/trunk/docs/man/ohparam.pod.1 =================================================================== --- openhpi/trunk/docs/man/ohparam.pod.1 (rev 0) +++ openhpi/trunk/docs/man/ohparam.pod.1 2010-10-12 13:38:06 UTC (rev 7149) @@ -0,0 +1,43 @@ +=head1 NAME + +ohparam - An openhpi sample application that uses the openhpi additional interface to control openhpi configuration parameters + +=head1 SYNOPSIS + + ohparam [-D domain] [-x] get + ohparam [-D domain] [-x] set <paramname newvalue> + +=head1 DESCRIPTION + +ohparam get will display all global configuration parameters of the openhpi daemon for the specified domain. + +ohparam set will change the given global configuration parameters of the openhpi daemon for the specified domain to the new value. + +If no domain is selected, ohparam uses the default domain. The selected domain id must be configured via the openhpidclient.conf file specified in the environment. + +=head1 OPTIONS + +=over 2 + + -D <domainid> select domain id + -x display debug messages. + -h help + +=back + +=head1 SEE ALSO + + hpi_shell + hpialarms hpigensimdata hpireset hpitop + hpidomain hpiinv hpisensor hpitree + hpiel hpionIBMblade hpisettime hpiwdt + hpievents hpipower hpithres + ohhandler + + +=head1 AUTHORS + +Authors of this man page: + + Ulrich Kleber (uli...@us...) + This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |