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