1 /* @(#)rstat.x 2.2 88/08/01 4.0 RPCSRC */ 2 /* @(#)rstat.x 1.2 87/09/18 Copyr 1987 Sun Micro */ 3 4 /* 5 * Sun RPC is a product of Sun Microsystems, Inc. and is provided for 6 * unrestricted use provided that this legend is included on all tape 7 * media and as a part of the software program in whole or part. Users 8 * may copy or modify Sun RPC without charge, but are not authorized 9 * to license or distribute it to anyone else except as part of a product or 10 * program developed by the user. 11 * 12 * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE 13 * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR 14 * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE. 15 * 16 * Sun RPC is provided with no support and without any obligation on the 17 * part of Sun Microsystems, Inc. to assist in its use, correction, 18 * modification or enhancement. 19 * 20 * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE 21 * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC 22 * OR ANY PART THEREOF. 23 * 24 * In no event will Sun Microsystems, Inc. be liable for any lost revenue 25 * or profits or other special, indirect and consequential damages, even if 26 * Sun has been advised of the possibility of such damages. 27 * 28 * Sun Microsystems, Inc. 29 * 2550 Garcia Avenue 30 * Mountain View, California 94043 31 */ 32 33 /* 34 * Gather statistics on remote machines 35 */ 36 37 #ifdef RPC_HDR 38 39 %#ifndef FSCALE 40 %/* 41 % * Scale factor for scaled integers used to count load averages. 42 % */ 43 %#define FSHIFT 8 /* bits to right of fixed binary point */ 44 %#define FSCALE (1<<FSHIFT) 45 % 46 %#endif /* ndef FSCALE */ 47 48 #endif /* def RPC_HDR */ 49 50 const CPUSTATES = 4; 51 const DK_NDRIVE = 4; 52 53 /* 54 * GMT since 0:00, January 1, 1970 55 */ 56 struct rstat_timeval { 57 unsigned int tv_sec; /* seconds */ 58 unsigned int tv_usec; /* and microseconds */ 59 }; 60 61 struct statstime { /* RSTATVERS_TIME */ 62 int cp_time[CPUSTATES]; 63 int dk_xfer[DK_NDRIVE]; 64 unsigned int v_pgpgin; /* these are cumulative sum */ 65 unsigned int v_pgpgout; 66 unsigned int v_pswpin; 67 unsigned int v_pswpout; 68 unsigned int v_intr; 69 int if_ipackets; 70 int if_ierrors; 71 int if_oerrors; 72 int if_collisions; 73 unsigned int v_swtch; 74 int avenrun[3]; /* scaled by FSCALE */ 75 rstat_timeval boottime; 76 rstat_timeval curtime; 77 int if_opackets; 78 }; 79 80 struct statsswtch { /* RSTATVERS_SWTCH */ 81 int cp_time[CPUSTATES]; 82 int dk_xfer[DK_NDRIVE]; 83 unsigned int v_pgpgin; /* these are cumulative sum */ 84 unsigned int v_pgpgout; 85 unsigned int v_pswpin; 86 unsigned int v_pswpout; 87 unsigned int v_intr; 88 int if_ipackets; 89 int if_ierrors; 90 int if_oerrors; 91 int if_collisions; 92 unsigned int v_swtch; 93 unsigned int avenrun[3];/* scaled by FSCALE */ 94 rstat_timeval boottime; 95 int if_opackets; 96 }; 97 98 struct stats { /* RSTATVERS_ORIG */ 99 int cp_time[CPUSTATES]; 100 int dk_xfer[DK_NDRIVE]; 101 unsigned int v_pgpgin; /* these are cumulative sum */ 102 unsigned int v_pgpgout; 103 unsigned int v_pswpin; 104 unsigned int v_pswpout; 105 unsigned int v_intr; 106 int if_ipackets; 107 int if_ierrors; 108 int if_oerrors; 109 int if_collisions; 110 int if_opackets; 111 }; 112 113 114 program RSTATPROG { 115 /* 116 * Newest version includes current time and context switching info 117 */ 118 version RSTATVERS_TIME { 119 statstime 120 RSTATPROC_STATS(void) = 1; 121 122 unsigned int 123 RSTATPROC_HAVEDISK(void) = 2; 124 } = 3; 125 /* 126 * Does not have current time 127 */ 128 version RSTATVERS_SWTCH { 129 statsswtch 130 RSTATPROC_STATS(void) = 1; 131 132 unsigned int 133 RSTATPROC_HAVEDISK(void) = 2; 134 } = 2; 135 /* 136 * Old version has no info about current time or context switching 137 */ 138 version RSTATVERS_ORIG { 139 stats 140 RSTATPROC_STATS(void) = 1; 141 142 unsigned int 143 RSTATPROC_HAVEDISK(void) = 2; 144 } = 1; 145 } = 100001; 146