1 /*- 2 * Copyright (c) 2010, Oracle America, Inc. 3 * 4 * Redistribution and use in source and binary forms, with or without 5 * modification, are permitted provided that the following conditions are 6 * met: 7 * 8 * * Redistributions of source code must retain the above copyright 9 * notice, this list of conditions and the following disclaimer. 10 * * Redistributions in binary form must reproduce the above 11 * copyright notice, this list of conditions and the following 12 * disclaimer in the documentation and/or other materials 13 * provided with the distribution. 14 * * Neither the name of the "Oracle America, Inc." nor the names of its 15 * contributors may be used to endorse or promote products derived 16 * from this software without specific prior written permission. 17 * 18 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 19 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 20 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 21 * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 22 * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 23 * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 24 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE 25 * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 26 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 27 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 28 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 29 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30 */ 31 32 /* 33 * Gather statistics on remote machines 34 */ 35 36 #ifdef RPC_HDR 37 38 %#ifndef FSCALE 39 %/* 40 % * Scale factor for scaled integers used to count load averages. 41 % */ 42 %#define FSHIFT 8 /* bits to right of fixed binary point */ 43 %#define FSCALE (1<<FSHIFT) 44 % 45 %#endif /* ndef FSCALE */ 46 47 #else 48 49 %#ifndef lint 50 %/*static char sccsid[] = "from: @(#)rstat.x 1.2 87/09/18 Copyr 1987 Sun Micro";*/ 51 %/*static char sccsid[] = "from: @(#)rstat.x 2.2 88/08/01 4.0 RPCSRC";*/ 52 %#endif /* not lint */ 53 %#include <sys/cdefs.h> 54 #endif /* def RPC_HDR */ 55 56 const RSTAT_CPUSTATES = 4; 57 const RSTAT_DK_NDRIVE = 4; 58 59 /* 60 * GMT since 0:00, January 1, 1970 61 */ 62 struct rstat_timeval { 63 unsigned int tv_sec; /* seconds */ 64 unsigned int tv_usec; /* and microseconds */ 65 }; 66 67 struct statstime { /* RSTATVERS_TIME */ 68 int cp_time[RSTAT_CPUSTATES]; 69 int dk_xfer[RSTAT_DK_NDRIVE]; 70 unsigned int v_pgpgin; /* these are cumulative sum */ 71 unsigned int v_pgpgout; 72 unsigned int v_pswpin; 73 unsigned int v_pswpout; 74 unsigned int v_intr; 75 int if_ipackets; 76 int if_ierrors; 77 int if_oerrors; 78 int if_collisions; 79 unsigned int v_swtch; 80 int avenrun[3]; /* scaled by FSCALE */ 81 rstat_timeval boottime; 82 rstat_timeval curtime; 83 int if_opackets; 84 }; 85 86 struct statsswtch { /* RSTATVERS_SWTCH */ 87 int cp_time[RSTAT_CPUSTATES]; 88 int dk_xfer[RSTAT_DK_NDRIVE]; 89 unsigned int v_pgpgin; /* these are cumulative sum */ 90 unsigned int v_pgpgout; 91 unsigned int v_pswpin; 92 unsigned int v_pswpout; 93 unsigned int v_intr; 94 int if_ipackets; 95 int if_ierrors; 96 int if_oerrors; 97 int if_collisions; 98 unsigned int v_swtch; 99 unsigned int avenrun[3];/* scaled by FSCALE */ 100 rstat_timeval boottime; 101 int if_opackets; 102 }; 103 104 struct stats { /* RSTATVERS_ORIG */ 105 int cp_time[RSTAT_CPUSTATES]; 106 int dk_xfer[RSTAT_DK_NDRIVE]; 107 unsigned int v_pgpgin; /* these are cumulative sum */ 108 unsigned int v_pgpgout; 109 unsigned int v_pswpin; 110 unsigned int v_pswpout; 111 unsigned int v_intr; 112 int if_ipackets; 113 int if_ierrors; 114 int if_oerrors; 115 int if_collisions; 116 int if_opackets; 117 }; 118 119 120 program RSTATPROG { 121 /* 122 * Newest version includes current time and context switching info 123 */ 124 version RSTATVERS_TIME { 125 statstime 126 RSTATPROC_STATS(void) = 1; 127 128 unsigned int 129 RSTATPROC_HAVEDISK(void) = 2; 130 } = 3; 131 /* 132 * Does not have current time 133 */ 134 version RSTATVERS_SWTCH { 135 statsswtch 136 RSTATPROC_STATS(void) = 1; 137 138 unsigned int 139 RSTATPROC_HAVEDISK(void) = 2; 140 } = 2; 141 /* 142 * Old version has no info about current time or context switching 143 */ 144 version RSTATVERS_ORIG { 145 stats 146 RSTATPROC_STATS(void) = 1; 147 148 unsigned int 149 RSTATPROC_HAVEDISK(void) = 2; 150 } = 1; 151 } = 100001; 152 153 #ifdef RPC_HDR 154 % 155 %enum clnt_stat rstat(char *, struct statstime *); 156 %int havedisk(char *); 157 % 158 #endif 159