2013年10月11日 星期五

C dynamic call RMF API ERBSMFI program

#pragma linkage (EXSMFI,OS)
typedef int EXSMFI();

int  reqtype = 0x00000003;        /* Request type                  */
int  rectype = 0x0000004F;        /* Record type 79 - 2            */
int  subtype = 0x00000002;        /* Subtype for ARD report record */
char *buffer;                     /* SMF record buffer             */
int  buflen  = 247488;            /* Length of SMF record buffer   */
                                  /* 214720 + 32768                */
int  cpuutl  = 0;                 /* Return area for CPU util.     */
int  dpr     = 0;                 /* Return area for demand paging */
int  fullwd  = 0x00000000;        /* Parameter 8                   */
int  srm     = 0x00000000;        /* MVS/SRM CPU utilization       */

int  rc      = 0;                 /* call ERBSMFI return code      */
EXSMFI *fptr;

/* --------------------------------------------------------------- */
/* Get storage for SMF record buffer                               */
/* --------------------------------------------------------------- */
buffer = (char *)malloc(buflen);
memset(buffer,0,buflen);

/* --------------------------------------------------------------- */
/* Call ERBSMFI to create the record                               */
/* --------------------------------------------------------------- */
fptr = (EXSMFI *)fetch("ERBSMFI");
rc = (*fptr)(&reqtype,
             &rectype,
             &subtype,
             buffer,
             &buflen,
             &cpuutl,
             &dpr,
             &fullwd,
             &srm);