1/* @(#)rstat.x	2.2 88/08/01 4.0 RPCSRC */
2
3/*
4 * Copyright (c) 2010, Oracle America, Inc.
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are
7 * met:
8 *
9 *     * Redistributions of source code must retain the above copyright
10 *       notice, this list of conditions and the following disclaimer.
11 *     * Redistributions in binary form must reproduce the above
12 *       copyright notice, this list of conditions and the following
13 *       disclaimer in the documentation and/or other materials
14 *       provided with the distribution.
15 *     * Neither the name of the "Oracle America, Inc." nor the names of its
16 *       contributors may be used to endorse or promote products derived
17 *       from this software without specific prior written permission.
18 *
19 *   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20 *   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21 *   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
22 *   FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
23 *   COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
24 *   INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
25 *   DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
26 *   GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
27 *   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
28 *   WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
29 *   NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
30 *   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
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
50const CPUSTATES = 4;
51const DK_NDRIVE = 4;
52
53/*
54 * GMT since 0:00, January 1, 1970
55 */
56struct rstat_timeval {
57	unsigned int tv_sec;	/* seconds */
58	unsigned int tv_usec;	/* and microseconds */
59};
60
61struct 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
80struct 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
98struct 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
114program 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