/* IBM_PROLOG_BEGIN_TAG                                                   */
/* This is an automatically generated prolog.                             */
/*                                                                        */
/* perf72Q src/perf/perfmgr/usr/include/sys/Rsi.h 1.15.2.3                */
/*                                                                        */
/*                                                                        */
/*                                                                        */
/* OBJECT CODE ONLY SOURCE MATERIALS                                      */
/*                                                                        */
/* COPYRIGHT International Business Machines Corp. 1992,2019              */
/* All Rights Reserved                                                    */
/*                                                                        */
/* The source code for this program is not published or otherwise         */
/* divested of its trade secrets, irrespective of what has been           */
/* deposited with the U.S. Copyright Office.                              */
/*                                                                        */
/* IBM_PROLOG_END_TAG                                                     */
/* @(#)71   1.15.2.3  src/perf/perfmgr/usr/include/sys/Rsi.h, perfmgr, perf72Q, q2019_13A4 2/6/19 01:09:57 */
/*
 * COMPONENT_NAME: (PERFMGR) - Performance Manager
 *
 * FUNCTIONS: Declarations for Rsi API
 *
 * ORIGINS: 30
 *
 *                  -- (                            when
 * combined with the aggregated modules for this product)
 * OBJECT CODE ONLY SOURCE MATERIALS
 * (C) COPYRIGHT International Business Machines Corp. 1992, 1996
 * All Rights Reserved
 *
 * US Government Users Restricted Rights - Use, duplication or
 * disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
 */

#ifndef _H_RSI
#define _H_RSI

#ifndef XM_BOOL
#define XM_BOOL
typedef unsigned char  boolean;
#define true  ((unsigned char) 0xff)
#define false ((unsigned char) 0x00)
#endif

#include <sys/types.h>
#include <netinet/in.h>

/*#ifndef _C_SPMISMUX*/
#ifndef _H_SPMIDEF
#include <sys/Spmidef.h>
#endif

#ifdef __cplusplus
extern "C" {
#endif

#ifdef LITTLE_END
void to_canon(char *);
void from_canon_end(char *);
#endif

#ifdef  __cplusplus
#define CALLA_ARGS struct RSiHandleTmpStruct *, pack *, sockaddr_in *
#define CALLB_ARGS struct RSiHandleTmpStruct *, pack *, sockaddr_in *
#define CALLA_ARGSX struct RSiHandleTmpStructx *, pack *, sockaddr_in6 *
#define CALLB_ARGSX struct RSiHandleTmpStructx *, pack *, sockaddr_in6 *
#else
#define CALLA_ARGS RSiHandle, pack *, struct sockaddr_in *
#define CALLB_ARGS
#define CALLA_ARGSX RSiHandlex, pack *, struct sockaddr_in6 *
#define CALLB_ARGSX
#endif /* __cplusplus */

typedef char * sdi_id;
typedef char * adi_id;

#define id2ptr(ptr,id)  ptr = (void *)id
#define ptr2id(id,ptr)  id  = (void *)ptr

/*
	This section defines the version number for the
	xmquery network protocol and a few related and
	unrelated constants
*/
#define  MAJOR_VER            6
#define  MINOR_VER            1
#define  SUBREL4_VER          2 * 1000 + 1
#define  SUBREL5_VER          2 * 1000 + 3
#define  OUR_VER              MAJOR_VER * 1000 + MINOR_VER
#define  MAX_PLOTS_PER_GRAPH  24
#define  MIN_REMOTE_INT       500
#define  MAX_REMOTE_INT       5000
#define  ABS_MIN_REMOTE_INT   100
#define  HOSTS_FILE           "Rsi.hosts"
#define  NUX                  0xbad2feed

#define MAX_LPARS_SIZE 256

typedef enum { /* RSi Packet types */
               create_stat_set = 1,          /* 01 */
               del_set_stat,                 /* 02 */
               first_cx,                     /* 03 */
               first_stat,                   /* 04 */
               instantiate,                  /* 05 */
               next_cx,                      /* 06 */
               next_stat,                    /* 07 */
               path_add_set_stat,            /* 08 */
               path_get_cx,                  /* 09 */
               path_get_stat,                /* 10 */
               stat_get_path,                /* 11 */
               create_hot_set,               /* 12 */
               del_set_hot,                  /* 13 */
               path_add_set_hot,             /* 14 */
         /* additional functions to feed data and control data feeding  */
               begin_feeding = 31,           /* 31 */
               change_feeding,               /* 32 */
               end_feeding,                  /* 33 */
               data_feed,                    /* 34 */
               going_down,                   /* 35 */
               hot_feed,                     /* 36 */
         /* functions to determine if remote partner is alive and well  */
               are_you_there = 51,           /* 51 */
               still_alive,                  /* 52 */
               i_am_back,                    /* 53 */
               except_rec,                   /* 54 */
         /* functions to display status information for the daemon   */
               send_status = 81,             /* 81 */
               host_status,                  /* 82 */
               are_you_there_group = 128,    /* 128 */
               i_am_back_group,              /* 128 */

               create_stat_set64 = 130,      /* 130 */
               create_hot_set64,             /* 131 */
               path_add_set_stat64,          /* 132 */
               path_add_set_hot64,           /* 133 */
               del_set_stat64,               /* 134 */
               del_set_hot64,                /* 135 */

               create_dyn_set = 140,         /* 140 */
               path_add_set_dyn,             /* 141 */
               del_set_dyn,                  /* 142 */

               data_feed64 = 150,            /* 150 */
               hot_feed64 = 151,             /* 151 */
 	           dyn_feed = 152,                /* 152 */

               cluster_data_feed = 200,      /* 200 */
               cluster_node_data_feed = 201  /* 201 */

} function_type;

#define RSiOkay 0
typedef enum { /* RSi Error Codes */
               RSiTimeout = 280,
               RSiBusy,
               RSiSendErr,
               RSiPollErr,
               RSiRecvErr,
               RSiSizeErr,
               RSiResync,
               RSiBadStat,
               RSiBadArg,
               RSiBadHost,
               RSiDupHost,
               RSiSockErr,
               RSiNoPort,
               RSiNoMatch,
               RSiInstErr,
               RSiNoFeed,
               RSiTooMany,
               RSiNoMem,
               RSiNotInit,
               RSiNoLicense,
					RSiNotSupported,
               RSiBadDataType
} RSiErrorType;

typedef enum { /* alive type */
               request = 0,
               response,
               timing
} alive_type;

/* #define okay 0 */
typedef enum { /* Packet Error Code */
               okay = 0,
               duplicate = 380,
               error,
               rescheduled,
               bad_version,
               unknown_ssp,
               too_many_hosts,
               not_authorized,
               cant_add_shared,
               too_many_values,
               schedule_via_inetd,
               unknown_hsp,
               unknown
} status_code;

typedef struct
{
   sdi_id            cxt;
   short             level;
   char              hostname[64];
} cx_handle;

typedef struct
{
   u_short           d_len;      /* Length of data packet */
   u_short           reserved; 
   function_type     type;
   u_long            req_no;
   status_code       status;
} pack;

typedef struct
{
   u_longlong_t CEC;
   u_longlong_t reserved1;
   u_longlong_t reserved2;
} RSiGroupID;

typedef union {
    uint m;
    struct {
        unsigned  is_shared:1;      /* Partition is in shared mode */
        unsigned  is_capped:1;       /* Partition is capped */
        unsigned  is_smt:1;          /* SMT mode is on or off */
        unsigned  is_donate_enable:1; /* capable of donating cycles */
        unsigned  vrmenabled:1;
        unsigned  vserver:1;
        unsigned  vclient:1;
        unsigned  is_ame:1;   /*AME enabled?*/
        unsigned psave_mode:1; /*Power savings mode*/
        unsigned  filler:26;
    }u;
} partition_stats_type_t;

typedef struct
{
    short monitored_lpars;   /* number of paritions monitored */
    short available_lpars;    /* number of paritions unmonitored */
    short shared_lpars;   /* number of shared paritions */
    short dedicated_lpars;   /* number of dedicated paritions */
    short capped_lpars;   /* number of capped paritions */
    short uncapped_lpars;   /* number of uncapped paritions */
    short donate_lpars;        /*number of donating paritions */

    float monitored_processors;   /*  number of physical processors monitored */
    float total_processors;   /* number of physical processors unmonitored */
    short available_processors;   /* number of physical processors available */
    float unallocated_processors;   /* number of physical processors unallocated */
    float shared_processors;   /* number of shared processors */
    short dedicated_processors;   /* number of dedicated processors */
    float processors_availpool;   /* Available physical processors in the shared pool */
    float processors_poolsize;   /* Online physical processors in Pool */
    float pprocessors_shrphybusy;   /* Physical busy for shared partitions */
    float processors_dediphybusy;   /* Physical busy for dedicated partitions */
    unsigned int processors_vcsw;   /* Global Virtual Context Switches */
    unsigned int processors_phintrpts;   /* Global Phantom Interrupts */
    short   donate_cpu;
    float stolen_processors;
    float donate_processors;

    unsigned long memory_monitored;   /* Total memory from monitored paritions in MB */
    unsigned long total_memory;   /* Total memory from unmonitored paritions in MB */
    unsigned long memory_available;   /* Total available memory on CEC in MB */
    unsigned long memory_unallocated;   /* Unallocated memory on CEC in MB */
    unsigned long long memory_consumed;   /* Memory in use in MB */

    float memory_monitored_pct;
    float memory_available_pct;
    float memory_unallocated_pct;
    float memory_consumed_pct;

    float processors_monitored_pct;
    float processors_total_pct;
    float processors_shared_pct;
    float processors_dedicated_pct;
    float processors_availpool_pct;
    float processors_poolsize_pct;
    float processors_shrpbusy_pct;
    float processors_dedipbusy_pct;
    float processors_avail_pctpool;
    float processors_unallocated_pct;
    int handle[MAX_LPARS_SIZE];
}Cec_Stats;

typedef struct
{
    short monitored_lpars;   /* number of paritions monitored */
    short shared_lpars;   /* number of shared paritions */
    short dedicated_lpars;   /* number of dedicated paritions */
    short capped_lpars;   /* number of capped paritions */
    short uncapped_lpars;   /* number of uncapped paritions */

    float monitored_processors;   /*  number of physical processors monitored */
    float shared_processors;   /* number of shared processors */
    short dedicated_processors;   /* number of dedicated processors */
    float shrphybusy_processors;   /* Physical busy for shared partitions */
    float dediphybusy_processors;   /* Physical busy for dedicated partitions */

    unsigned long memory_online; /* Aggregated online physical memory of monitored partitions */
    unsigned long memory_consumed;   /* Memory in use in MB */
    float memory_consumed_pct;   /* Percentage of consumed physical memory */

    float processors_shared_pct;    /* % of shared physical processors */
    float processors_dedicated_pct;  /* % of dedicated physical processors */
    float processors_shrpbusy_pct;   /* % of busy shared physical processors */
    float processors_dedipbusy_pct;   /* % of busy dedicated physical processors */
    int handle[MAX_LPARS_SIZE];
}Cluster_Stats;


typedef struct
{
    unsigned int node_handle;
    char hostname[64];
#ifdef RSIv6
    struct in6_addr ip_addr;
#else
    struct in_addr ip_addr;
#endif
    int lpar_number;
    unsigned long long cecid;
    unsigned long long cluster_id;
    partition_stats_type_t type;
    unsigned char osver;
    unsigned long long onlinemem;
    unsigned long long realsize;
    unsigned long long realnumfrb;
    unsigned long long memory_inuse;
    unsigned short logical_cpu;
    unsigned long long user;
    unsigned long long kern;
    unsigned long long wait;
    unsigned long long idle;

    float entitlement;
    float physical_processors_busy;
    float entitlement_consumed;

    unsigned long long virtual_context_switches;
    unsigned long long phantom_interrupts;

    unsigned short physical_cpu;
    float available_physical_processor;
    float physical_cpu_inpool;
    float shcpusys;
    float donated_idle_cycles;
    float donated_busy_cycles;
    float stolen_idle_cycles;
    float stolen_busy_cycles;

    unsigned int poolid;
    float pool_entc;
    float max_pool_cap;

    unsigned int memory_pool_id;
    float memory_pool_size;
    float physical_memory;
    float logical_memory_loaned;
    float io_memory_entitlement;
    float io_memory_entitlement_used;
    unsigned long long hypervisor_page_faults;
    unsigned long long hypervisor_page_ins;
    unsigned int virtual_cpu;
}Node_Stats;
   

/*----------------------------------------------------------------------*/

#ifdef _SOLARIS
typedef struct RSiHandleTmpStruct
#else /* _SOLARIS */
typedef struct
#endif /* _SOLARIS */
{
   char                 *hostname;
   char                 *longname;
   struct sockaddr_in   saddr;
   struct sockaddr_in   raddr;
   struct remote_stat   *rst_anchor;
   struct remote_hot    *rht_anchor;
   struct path_struct   *psp_anchor;
   pack                 *pi;
   pack                 *po;
   u_short              portno;
   u_short              buflen;
   u_short              resy_cnt;
   int                  seq;
   int                  last_rcvd;     /* time (seconds) of last input     */
   int                  time_out;      /* timeout value in milliseconds    */
   int                  (*unsolicit)(CALLB_ARGS);
   int                  (*resyncfunc)(CALLB_ARGS);
   int                  (*exceptfunc)(CALLB_ARGS);
   void                 *reserved;
   int                  majorv;
   int                  minorv;
} RSiHandleStruct, *RSiHandle;

#define XmIpPrefix   ((u_long)&(((pack *)NULL)->data))
#define RSiIsOpen(rh)   ((rh)->po)

#ifdef _SOLARIS
typedef struct RSiHandleTmpStructx
#else /* _SOLARIS */
typedef struct
#endif /* _SOLARIS */
{
        char                 *hostname;
        char                 *longname;
        struct sockaddr_in6  saddr;
        struct sockaddr_in6  raddr;
        struct remote_stat   *rst_anchor;
        struct remote_hot    *rht_anchor;
        struct path_struct   *psp_anchor;
        pack                 *pi;
        pack                 *po;
        u_short              portno;
        u_short              buflen;
        u_short              resy_cnt;
        int                  seq;
        int                  last_rcvd;     /* time (seconds) of last input     */
        int                  time_out;      /* timeout value in milliseconds    */
        int                  (*unsolicit)(CALLB_ARGSX);
        int                  (*resyncfunc)(CALLB_ARGSX);
        int                  (*exceptfunc)(CALLB_ARGSX);
        void                 *sspc;
        int                  majorv;
        int                  minorv;
} RSiHandleStructx, *RSiHandlex;
#ifdef _NO_PROTO
#ifndef RSIv6

RSiHandle RSiInit();
int RSiOpen();
void RSiClose();
char **RSiInvite();
struct SpmiStatVals *RSiAddAndInst();
char *RSiStatGetPath();
struct SpmiStatSet *RSiCreateStatSet();
struct SpmiStatVals *RSiPathAddSetStat();
int RSiDelSetStat();
int RSiInstantiate();
cx_handle *RSiPathGetCx();
struct SpmiCxLink *RSiFirstCx();
struct SpmiCxLink *RSiNextCx();
struct SpmiStatLink *RSiFirstStat();
struct SpmiStatLink *RSiNextStat();
void RSiMainLoop();
float RSiGetValue();
struct SpmiStatVals *RSiGetRawValue();
int RSiStartFeed();
int RSiChangeFeed();
int RSiStopFeed();
struct SpmiHotSet *RSiCreateHotSet();
struct SpmiHotVals *RSiAddSetHot();
int RSiDelSetHot();
struct SpmiHotVals *RSiGetHotItem();
int RSiStartHotFeed();
int RSiChangeHotFeed();
int RSiStopHotFeed();

char **RSiInviteGroup();

struct SpmiStatVals64 *RSiAddAndInst64();
char *RSiStatGetPath64();

struct SpmiStatSet64 *RSiCreateStatSet64();
struct SpmiStatVals64 *RSiPathAddSetStat64();
int RSiDelSetStat64();

double RSiGetValue64();
struct SpmiStatVals64 *RSiGetRawValue64();

int RSiStartFeed64();
int RSiChangeFeed64();
int RSiStopFeed64();

int RSiGetCECID();

struct SpmiHotSet64 *RSiCreateHotSet64();
struct SpmiHotVals64 *RSiAddSetHot64();
int RSiDelSetHot64();
struct SpmiHotVals64 *RSiGetHotItem64();

int RSiStartHotFeed64();
int RSiChangeHotFeed64();
int RSiStopHotFeed64();

int RSiGetValueStr();
int RSiGetValueStr64();

int RSiStartDynFeed();
int RSiChangeDynFeed();
int RSiStopDynFeed();

struct SpmiDynSet *RSiCreateDynSet();
struct SpmiDynVals *RSiAddSetDyn();
int RSiDelSetDyn();
struct SpmiDynVals *RSiGetDynItem();
int RSiGetCECData();
int RSiGetClusterData();

#else /* RSIv6 */
RSiHandlex RSiInitx();
int RSiOpenx();
void RSiClosex();
char **RSiInvitex();
struct SpmiStatVals *RSiAddAndInstx();
char *RSiStatGetPathx();
struct SpmiStatSet *RSiCreateStatSetx();
struct SpmiStatVals *RSiPathAddSetStatx();
int RSiDelSetStatx();
int RSiInstantiatex();
cx_handle *RSiPathGetCxx();
struct SpmiCxLink *RSiFirstCxx();
struct SpmiCxLink *RSiNextCxx();
struct SpmiStatLink *RSiFirstStatx();
struct SpmiStatLink *RSiNextStatx();
void RSiMainLoopx();
float RSiGetValuex();
struct SpmiStatVals *RSiGetRawValuex();
int RSiStartFeedx();
int RSiChangeFeedx();
int RSiStopFeedx();
struct SpmiHotSet *RSiCreateHotSetx();
struct SpmiHotVals *RSiAddSetHotx();
int RSiDelSetHotx();
struct SpmiHotVals *RSiGetHotItemx();
int RSiStartHotFeedx();
int RSiChangeHotFeedx();
int RSiStopHotFeedx();
char **RSiInviteGroupx();
struct SpmiStatVals64 *RSiAddAndInst64x();
char *RSiStatGetPath64x();
struct SpmiStatSet64 *RSiCreateStatSet64x();
struct SpmiStatVals64 *RSiPathAddSetStat64x();
int RSiDelSetStat64x();
double RSiGetValue64x();
struct SpmiStatVals64 *RSiGetRawValue64x();
int RSiStartFeed64x();
int RSiChangeFeed64x();
int RSiStopFeed64x();
int RSiGetCECIDx();
struct SpmiHotSet64 *RSiCreateHotSet64x();
struct SpmiHotVals64 *RSiAddSetHot64x();
int RSiDelSetHot64x();
struct SpmiHotVals64 *RSiGetHotItem64x();
int RSiStartHotFeed64x();
int RSiChangeHotFeed64x();
int RSiStopHotFeed64x();
int RSiGetValueStrx();
int RSiGetValueStr64x();
int RSiStartDynFeedx();
int RSiChangeDynFeedx();
int RSiStopDynFeedx();
struct SpmiDynSet *RSiCreateDynSetx();
struct SpmiDynVals *RSiAddSetDynx();
int RSiDelSetDynx();
struct SpmiDynVals *RSiGetDynItemx();
int RSiGetCECDatax();
int RSiGetClusterDatax();
#endif /* RSIv6 */
#else  /* NO_PROTO */
#ifndef RSIv6 

RSiHandle RSiInit(int);
int RSiOpen(RSiHandle, int, int, char *,
      int (*)(CALLA_ARGS),
      int (*)(CALLA_ARGS),
      int (*)(CALLA_ARGS));
void RSiClose(RSiHandle);
char **RSiInvite(int (*)(CALLA_ARGS),
                 int (*)(CALLA_ARGS));
struct SpmiStatVals *RSiAddAndInst(RSiHandle, struct SpmiStatSet *, char *);
char *RSiStatGetPath(RSiHandle, struct SpmiStatVals *);
struct SpmiStatSet *RSiCreateStatSet(RSiHandle);
struct SpmiStatVals *RSiPathAddSetStat(RSiHandle,struct SpmiStatSet *,char *);
int RSiDelSetStat(RSiHandle, struct SpmiStatSet *, struct SpmiStatVals *);
int RSiInstantiate(RSiHandle, cx_handle *);
cx_handle *RSiPathGetCx(RSiHandle, char *);
struct SpmiCxLink *RSiFirstCx(RSiHandle, cx_handle *, char **, char**);
struct SpmiCxLink *RSiNextCx(RSiHandle, cx_handle *, struct SpmiCxLink *,
                             char **, char **);
struct SpmiStatLink *RSiFirstStat(RSiHandle, cx_handle *, char **, char **);
struct SpmiStatLink *RSiNextStat(RSiHandle, cx_handle *, struct SpmiStatLink *,
                             char **, char **);
void RSiMainLoop(int);
float RSiGetValue(RSiHandle, struct SpmiStatVals *);
struct SpmiStatVals *RSiGetRawValue(RSiHandle, struct SpmiStatVals *, int *);
int RSiStartFeed(RSiHandle, struct SpmiStatSet *, int);
int RSiChangeFeed(RSiHandle, struct SpmiStatSet *, int);
int RSiStopFeed(RSiHandle, struct SpmiStatSet *, boolean);
struct SpmiHotSet *RSiCreateHotSet(RSiHandle);
struct SpmiHotVals *RSiAddSetHot(RSiHandle, struct SpmiHotSet *, char *,
		cx_handle *, int, int, int, int, int, int, int);
int RSiDelSetHot(RSiHandle, struct SpmiHotSet *, struct SpmiHotVals *);
struct SpmiHotVals *RSiGetHotItem(RSiHandle, struct SpmiHotSet **, int *,
		float *, float *, char **);
int RSiStartHotFeed(RSiHandle, struct SpmiHotSet *, int);
int RSiChangeHotFeed(RSiHandle, struct SpmiHotSet *, int);
int RSiStopHotFeed(RSiHandle, struct SpmiHotSet *, boolean);


char **RSiInviteGroup(RSiGroupID* id, int (*)(CALLA_ARGS), int (*)(CALLA_ARGS));

struct SpmiStatVals64 *RSiAddAndInst64(RSiHandle, struct SpmiStatSet64 *, char *);
char *RSiStatGetPath64(RSiHandle, struct SpmiStatVals64 *);

struct SpmiStatSet64 *RSiCreateStatSet64(RSiHandle);
struct SpmiStatVals64 *RSiPathAddSetStat64(RSiHandle,struct SpmiStatSet64 *,char *);
int RSiDelSetStat64(RSiHandle, struct SpmiStatSet64 *, struct SpmiStatVals64 *);

double RSiGetValue64(RSiHandle, struct SpmiStatVals64 *);
struct SpmiStatVals64 *RSiGetRawValue64(RSiHandle, struct SpmiStatVals64 *, int *);

int RSiStartFeed64(RSiHandle, struct SpmiStatSet64 *, int);
int RSiChangeFeed64(RSiHandle, struct SpmiStatSet64 *, int);
int RSiStopFeed64(RSiHandle, struct SpmiStatSet64 *, boolean);

int RSiGetCECID(RSiHandle rsh, unsigned long long *CECID);

struct SpmiHotSet64 *RSiCreateHotSet64(RSiHandle);
struct SpmiHotVals64 *RSiAddSetHot64(RSiHandle, struct SpmiHotSet64 *, char *, cx_handle *, int, long long, int, int, int, int, int);
int RSiDelSetHot64(RSiHandle, struct SpmiHotSet64 *, struct SpmiHotVals64 *);
struct SpmiHotVals64 *RSiGetHotItem64(RSiHandle, struct SpmiHotSet64 **, int *, double *, double *, char **);

int RSiStartHotFeed64(RSiHandle, struct SpmiHotSet64 *, int);
int RSiChangeHotFeed64(RSiHandle, struct SpmiHotSet64 *, int);
int RSiStopHotFeed64(RSiHandle, struct SpmiHotSet64 *, boolean);

int RSiGetValueStr(RSiHandle, struct SpmiStatVals *, char *str, int *size);
int RSiGetValueStr64(RSiHandle, struct SpmiStatVals64 *, char *str, int *size);

int RSiStartDynFeed(RSiHandle, struct SpmiDynSet *, int);
int RSiChangeDynFeed(RSiHandle, struct SpmiDynSet *, int);
int RSiStopDynFeed(RSiHandle, struct SpmiDynSet *, boolean);

struct SpmiDynSet *RSiCreateDynSet(RSiHandle, char *context);
int RSiAddSetDyn(RSiHandle, struct SpmiDynSet *, char *statname);
int RSiDelSetDyn(RSiHandle, struct SpmiDynSet *, char *statname);
struct SpmiDynVals *RSiGetDynItem(RSiHandle, struct SpmiDynSet **, int *, double *, double *, char **);

int RSiGetCECData(RSiHandle ,Cec_Stats **,  Node_Stats **);
int RSiGetClusterData(RSiHandle ,Cluster_Stats **, Node_Stats **);

#else /* RSIv6 */

RSiHandlex RSiInitx(int);
int RSiOpenx(RSiHandlex, int, int, char *,
      int (*)(CALLA_ARGSX),
      int (*)(CALLA_ARGSX),
      int (*)(CALLA_ARGS));
void RSiClosex(RSiHandlex);
char **RSiInvitex(int (*)(CALLA_ARGSX),
                 int (*)(CALLA_ARGSX));
struct SpmiStatVals *RSiAddAndInstx(RSiHandlex, struct SpmiStatSet *, char *);
char *RSiStatGetPathx(RSiHandlex, struct SpmiStatVals *);
struct SpmiStatSet *RSiCreateStatSetx(RSiHandlex);
struct SpmiStatVals *RSiPathAddSetStatx(RSiHandlex,struct SpmiStatSet *,char *);
int RSiDelSetStatx(RSiHandlex, struct SpmiStatSet *, struct SpmiStatVals *);
int RSiInstantiatex(RSiHandlex, cx_handle *);
cx_handle *RSiPathGetCxx(RSiHandlex, char *);
struct SpmiCxLink *RSiFirstCxx(RSiHandlex, cx_handle *, char **, char**);
struct SpmiCxLink *RSiNextCxx(RSiHandlex, cx_handle *, struct SpmiCxLink *,
                             char **, char **);
struct SpmiStatLink *RSiFirstStatx(RSiHandlex, cx_handle *, char **, char **);
struct SpmiStatLink *RSiNextStatx(RSiHandlex, cx_handle *, struct SpmiStatLink *,
                             char **, char **);
void RSiMainLoopx(int);
float RSiGetValuex(RSiHandlex, struct SpmiStatVals *);
struct SpmiStatVals *RSiGetRawValuex(RSiHandlex, struct SpmiStatVals *, int *);
int RSiStartFeedx(RSiHandlex, struct SpmiStatSet *, int);
int RSiChangeFeedx(RSiHandlex, struct SpmiStatSet *, int);
int RSiStopFeedx(RSiHandlex, struct SpmiStatSet *, boolean);
struct SpmiHotSet *RSiCreateHotSetx(RSiHandlex);
struct SpmiHotVals *RSiAddSetHotx(RSiHandlex, struct SpmiHotSet *, char *,
		cx_handle *, int, int, int, int, int, int, int);
int RSiDelSetHotx(RSiHandlex, struct SpmiHotSet *, struct SpmiHotVals *);
struct SpmiHotVals *RSiGetHotItemx(RSiHandlex, struct SpmiHotSet **, int *,
		float *, float *, char **);
int RSiStartHotFeedx(RSiHandlex, struct SpmiHotSet *, int);
int RSiChangeHotFeedx(RSiHandlex, struct SpmiHotSet *, int);
int RSiStopHotFeedx(RSiHandlex, struct SpmiHotSet *, boolean);


char **RSiInviteGroupx(RSiGroupID* id, int (*)(CALLA_ARGSX), int (*)(CALLA_ARGSX));

struct SpmiStatVals64 *RSiAddAndInst64x(RSiHandlex, struct SpmiStatSet64 *, char *);
char *RSiStatGetPath64x(RSiHandlex, struct SpmiStatVals64 *);

struct SpmiStatSet64 *RSiCreateStatSet64x(RSiHandlex);
struct SpmiStatVals64 *RSiPathAddSetStat64x(RSiHandlex,struct SpmiStatSet64 *,char *);
int RSiDelSetStat64x(RSiHandlex, struct SpmiStatSet64 *, struct SpmiStatVals64 *);

double RSiGetValue64x(RSiHandlex, struct SpmiStatVals64 *);
struct SpmiStatVals64 *RSiGetRawValue64x(RSiHandlex, struct SpmiStatVals64 *, int *);

int RSiStartFeed64x(RSiHandlex, struct SpmiStatSet64 *, int);
int RSiChangeFeed64x(RSiHandlex, struct SpmiStatSet64 *, int);
int RSiStopFeed64x(RSiHandlex, struct SpmiStatSet64 *, boolean);

int RSiGetCECIDx(RSiHandlex rsh, unsigned long long *CECID);

struct SpmiHotSet64 *RSiCreateHotSet64x(RSiHandlex);
struct SpmiHotVals64 *RSiAddSetHot64x(RSiHandlex, struct SpmiHotSet64 *, char *, cx_handle *, int, long long, int, int, int, int, int);
int RSiDelSetHot64x(RSiHandlex, struct SpmiHotSet64 *, struct SpmiHotVals64 *);
struct SpmiHotVals64 *RSiGetHotItem64x(RSiHandlex, struct SpmiHotSet64 **, int *, double *, double *, char **);

int RSiStartHotFeed64x(RSiHandlex, struct SpmiHotSet64 *, int);
int RSiChangeHotFeed64x(RSiHandlex, struct SpmiHotSet64 *, int);
int RSiStopHotFeed64x(RSiHandlex, struct SpmiHotSet64 *, boolean);

int RSiGetValueStrx(RSiHandlex, struct SpmiStatVals *, char *str, int *size);
int RSiGetValueStr64x(RSiHandlex, struct SpmiStatVals64 *, char *str, int *size);

int RSiStartDynFeedx(RSiHandlex, struct SpmiDynSet *, int);
int RSiChangeDynFeedx(RSiHandlex, struct SpmiDynSet *, int);
int RSiStopDynFeedx(RSiHandlex, struct SpmiDynSet *, boolean);

struct SpmiDynSet *RSiCreateDynSetx(RSiHandlex, char *context);
int RSiAddSetDynx(RSiHandlex, struct SpmiDynSet *, char *statname);
int RSiDelSetDynx(RSiHandlex, struct SpmiDynSet *, char *statname);
struct SpmiDynVals *RSiGetDynItemx(RSiHandlex, struct SpmiDynSet **, int *, double *, double *, char **);

int RSiGetCECDatax(RSiHandlex ,Cec_Stats **,  Node_Stats **);
int RSiGetClusterDatax(RSiHandlex ,Cluster_Stats **, Node_Stats **);
#endif /* RSIv6 */
#endif /* _NO_PROTO */

#ifdef __cplusplus
}
#endif

#endif   /* _H_RSI */