author | akshay.kale@oracle.com <akshay.kale@oracle.com> |
Fri, 14 Oct 2016 13:13:27 -0700 | |
changeset 7112 | dab9beb5bc49 |
parent 2192 | 31cdcfd53b4b |
permissions | -rw-r--r-- |
2192
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
1 |
# |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
2 |
# This patch was included to address: |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
3 |
# 16988337 Stolen time should be visible in output of top(1) |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
4 |
# |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
5 |
# Upstream BugDB: https://sourceforge.net/p/unixtop/bugs/ |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
6 |
# Upstream BugURL: https://sourceforge.net/p/unixtop/bugs/55/ |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
7 |
# |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
8 |
--- a/machine/m_sunos5.c Fri May 24 15:39:52 2013 +0200 |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
9 |
+++ b/machine/m_sunos5.c Wed Nov 05 13:48:21 2014 +0100 |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
10 |
@@ -7,8 +7,7 @@ |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
11 |
* This is the machine-dependent module for SunOS 5.x (Solaris 2). |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
12 |
* There is some support for MP architectures. |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
13 |
* This makes top work on all revisions of SunOS 5 from 5.0 |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
14 |
- * through 5.9 (otherwise known as Solaris 9). It has not been |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
15 |
- * tested on SunOS 5.10. |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
16 |
+ * through 5.11 (otherwise known as Solaris 11). |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
17 |
* |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
18 |
* AUTHORS: Torsten Kasch <[email protected]> |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
19 |
* Robert Boucher <[email protected]> |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
20 |
@@ -18,6 +17,7 @@ |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
21 |
* Petri Kutvonen <[email protected]> |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
22 |
* Casper Dik <[email protected]> |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
23 |
* Tim Pugh <[email protected]> |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
24 |
+ * Stanislav Kozina <[email protected]> |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
25 |
*/ |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
26 |
|
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
27 |
#define _KMEMUSER |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
28 |
@@ -112,6 +112,11 @@ |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
29 |
#define USE_KSTAT |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
30 |
#endif |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
31 |
#ifdef USE_KSTAT |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
32 |
+ |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
33 |
+# if OSREV >= 510 |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
34 |
+# define USE_NAMED_CPU_KSTAT |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
35 |
+# endif |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
36 |
+ |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
37 |
#include <kstat.h> |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
38 |
/* |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
39 |
* Some kstats are fixed at 32 bits, these will be specified as ui32; some |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
40 |
@@ -235,18 +240,35 @@ |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
41 |
*/ |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
42 |
struct cpustats |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
43 |
{ |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
44 |
- unsigned int states[CPUSTATES]; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
45 |
- uint_t pswitch; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
46 |
- uint_t trap; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
47 |
- uint_t intr; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
48 |
- uint_t syscall; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
49 |
- uint_t sysfork; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
50 |
- uint_t sysvfork; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
51 |
- uint_t pfault; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
52 |
- uint_t pgin; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
53 |
- uint_t pgout; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
54 |
+ uint64_t states[CPUSTATES]; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
55 |
+ uint64_t pswitch; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
56 |
+ uint64_t trap; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
57 |
+ uint64_t intr; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
58 |
+ uint64_t syscall; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
59 |
+ uint64_t sysfork; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
60 |
+ uint64_t sysvfork; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
61 |
+ uint64_t pfault; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
62 |
+ uint64_t pgin; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
63 |
+ uint64_t pgout; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
64 |
}; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
65 |
|
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
66 |
+#ifdef USE_NAMED_CPU_KSTAT |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
67 |
+static int cpu_ticks_idle_index = -1; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
68 |
+static int cpu_ticks_user_index = -1; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
69 |
+static int cpu_ticks_kernel_index = -1; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
70 |
+static int cpu_ticks_stolen_index = -1; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
71 |
+static int pswitch_index = -1; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
72 |
+static int trap_index = -1; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
73 |
+static int intr_index = -1; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
74 |
+static int syscall_index = -1; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
75 |
+static int sysfork_index = -1; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
76 |
+static int sysvfork_index = -1; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
77 |
+static int hat_fault_index = -1; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
78 |
+static int as_fault_index = -1; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
79 |
+static int pgin_index = -1; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
80 |
+static int pgout_index = -1; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
81 |
+#endif |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
82 |
+ |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
83 |
/* |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
84 |
* GCC assumes that all doubles are aligned. Unfortunately it |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
85 |
* doesn't round up the structure size to be a multiple of 8. |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
86 |
@@ -280,9 +302,12 @@ |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
87 |
|
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
88 |
int cpu_states[CPUSTATES]; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
89 |
char *cpustatenames[] = |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
90 |
-{"idle", "user", "kernel", "iowait", "swap", NULL}; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
91 |
-#define CPUSTATE_IOWAIT 3 |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
92 |
-#define CPUSTATE_SWAP 4 |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
93 |
+{"idle", "user", "kernel", "stolen", "swap", NULL}; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
94 |
+#define CPUSTATE_IDLE 0 |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
95 |
+#define CPUSTATE_USER 1 |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
96 |
+#define CPUSTATE_KERNEL 2 |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
97 |
+#define CPUSTATE_STOLEN 3 |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
98 |
+#define CPUSTATE_SWAP 4 |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
99 |
|
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
100 |
|
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
101 |
/* these are for detailing the memory statistics */ |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
102 |
@@ -773,36 +798,33 @@ |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
103 |
} |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
104 |
|
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
105 |
/* |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
106 |
- * int kstat_safe_namematch(int num, kstat_t *ksp, char *name, void *buf) |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
107 |
- * |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
108 |
- * Safe scan of kstat chain for names starting with "name". Matches |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
109 |
- * are copied in to "ksp", and kstat_read is called on each match using |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
110 |
- * "buf" as a buffer of length "size". The actual number of records |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
111 |
- * found is returned. Up to "num" kstats are copied in to "ksp", but |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
112 |
- * no more. If any kstat_read indicates that the chain has changed, then |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
113 |
- * the whole process is restarted. |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
114 |
+ * Safe scan of kstat chain for names starting with "module", "name" or |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
115 |
+ * "class". Every condition is ignored if set to empty string. |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
116 |
+ * kstat_read is called on each match. The actual number of records |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
117 |
+ * found is returned. If any kstat_read indicates that the chain has changed, |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
118 |
+ * then the whole process is restarted. |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
119 |
*/ |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
120 |
|
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
121 |
int |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
122 |
-kstat_safe_namematch(int num, kstat_t **ksparg, char *name, void *buf, int size) |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
123 |
- |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
124 |
+kstat_safe_lookup(int num, kstat_t **ksparg, char *class, char *module, |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
125 |
+ char *name) |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
126 |
{ |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
127 |
kstat_t *ks; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
128 |
kstat_t **ksp; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
129 |
kid_t new_kcid; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
130 |
- int namelen; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
131 |
+ int classlen, modlen, namelen; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
132 |
int count; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
133 |
int changed; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
134 |
- char *cbuf; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
135 |
|
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
136 |
- dprintf("kstat_safe_namematch(%d, %08x, %s, %08x, %d)\n", |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
137 |
- num, ksparg, name, buf, size); |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
138 |
+ dprintf("kstat_safe_lookup(%d, %08x, %s, %s, %s)\n", |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
139 |
+ num, ksparg, class, module, name); |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
140 |
|
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
141 |
+ classlen = strlen(class); |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
142 |
+ modlen = strlen(module); |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
143 |
namelen = strlen(name); |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
144 |
|
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
145 |
do { |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
146 |
/* initialize before the scan */ |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
147 |
- cbuf = (char *)buf; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
148 |
ksp = ksparg; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
149 |
count = 0; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
150 |
changed = 0; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
151 |
@@ -810,18 +832,23 @@ |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
152 |
/* scan the chain for matching kstats */ |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
153 |
for (ks = kc->kc_chain; ks != NULL; ks = ks->ks_next) |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
154 |
{ |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
155 |
- if (strncmp(ks->ks_name, name, namelen) == 0) |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
156 |
+ if ((strncmp(ks->ks_class, class, classlen) == 0) && |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
157 |
+ (strncmp(ks->ks_module, module, modlen) == 0) && |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
158 |
+ (strncmp(ks->ks_name, name, namelen) == 0)) |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
159 |
{ |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
160 |
+ dprintf("kstat_safe_lookup found instance %d (%p)\n", |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
161 |
+ ks->ks_instance, ks); |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
162 |
+ |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
163 |
/* this kstat matches: save it if there is room */ |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
164 |
if (count++ < num) |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
165 |
{ |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
166 |
/* read the kstat */ |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
167 |
- new_kcid = kstat_read(kc, ks, cbuf); |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
168 |
+ new_kcid = kstat_read(kc, ks, NULL); |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
169 |
|
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
170 |
/* if the chain changed, update it */ |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
171 |
if (new_kcid != kcid) |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
172 |
{ |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
173 |
- dprintf("kstat_safe_namematch: chain changed to %d...updating\n", |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
174 |
+ dprintf("kstat_safe_lookup: chain changed to %d...updating\n", |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
175 |
new_kcid); |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
176 |
changed = 1; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
177 |
kcid = kstat_chain_update(kc); |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
178 |
@@ -832,18 +859,64 @@ |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
179 |
} |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
180 |
|
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
181 |
/* move to the next buffers */ |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
182 |
- cbuf += size; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
183 |
*ksp++ = ks; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
184 |
} |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
185 |
} |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
186 |
} |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
187 |
} while(changed); |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
188 |
|
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
189 |
- dprintf("kstat_safe_namematch returns %d\n", count); |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
190 |
+ dprintf("kstat_safe_lookup returns %d\n", count); |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
191 |
|
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
192 |
return count; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
193 |
} |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
194 |
|
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
195 |
+#ifdef USE_NAMED_CPU_KSTAT |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
196 |
+/* |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
197 |
+ * If index_ptr integer value is > -1 then the index points to the |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
198 |
+ * string entry in the ks_data that we are interested in. Otherwise |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
199 |
+ * we will need to walk the array. |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
200 |
+ */ |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
201 |
+static uint64_t |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
202 |
+kstat_safe_datalookup(kstat_t *kstat, char *name, int *index_ptr) |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
203 |
+{ |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
204 |
+ int i; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
205 |
+ int size; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
206 |
+ int index; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
207 |
+ char *namep, *datap; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
208 |
+ kstat_named_t *data; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
209 |
+ |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
210 |
+ if (kstat->ks_type != KSTAT_TYPE_NAMED) |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
211 |
+ return (0); |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
212 |
+ |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
213 |
+ size = sizeof (kstat_named_t); |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
214 |
+ namep = KSTAT_NAMED_PTR(kstat)->name; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
215 |
+ |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
216 |
+ index = *index_ptr; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
217 |
+ if (index >= 0) { |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
218 |
+ /* Short cut to the information. */ |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
219 |
+ datap = kstat->ks_data; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
220 |
+ data = (kstat_named_t *)&datap[size*index]; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
221 |
+ if (data->data_type != KSTAT_DATA_UINT64) |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
222 |
+ return (0); |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
223 |
+ return (data->value.ui64); |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
224 |
+ } |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
225 |
+ |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
226 |
+ /* Need to go find the string. */ |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
227 |
+ data = kstat->ks_data; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
228 |
+ for (i = 0; i < kstat->ks_ndata; i++) { |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
229 |
+ if (strcmp(name, namep) == 0) { |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
230 |
+ *index_ptr = i; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
231 |
+ if (data->data_type != KSTAT_DATA_UINT64) |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
232 |
+ return (0); |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
233 |
+ return (data->value.ui64); |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
234 |
+ } |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
235 |
+ namep += size; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
236 |
+ data++; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
237 |
+ } |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
238 |
+ return (0); |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
239 |
+} |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
240 |
+#endif /* USE_NAMED_CPU_KSTAT */ |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
241 |
+ |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
242 |
static kstat_t *ks_system_misc = NULL; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
243 |
|
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
244 |
#endif /* USE_KSTAT */ |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
245 |
@@ -936,36 +1009,55 @@ |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
246 |
|
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
247 |
{ |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
248 |
#ifdef USE_KSTAT |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
249 |
+#ifdef USE_NAMED_CPU_KSTAT |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
250 |
+ static kstat_t **cpu_sys_ks = NULL, **cpu_vm_ks = NULL; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
251 |
+ kstat_t *cpu_sys_stat_p, *cpu_vm_stat_p; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
252 |
+#else |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
253 |
static kstat_t **cpu_ks = NULL; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
254 |
- static cpu_stat_t *cpu_stat = NULL; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
255 |
+ cpu_stat_t cpu_stat; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
256 |
+#endif |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
257 |
+ static kid_t cpu_kcid = 0; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
258 |
static unsigned int nelems = 0; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
259 |
- cpu_stat_t *cpu_stat_p; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
260 |
- int i, cpu_num; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
261 |
+ static int cpu_num = 0, cpu_vm_num = 0; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
262 |
+ int i; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
263 |
struct cpustats *cpustats_p; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
264 |
|
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
265 |
dprintf("get_cpustats(%d -> %d, %08x)\n", cnt, *cnt, cpustats); |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
266 |
|
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
267 |
- while (nelems > 0 ? |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
268 |
- (cpu_num = kstat_safe_namematch(nelems, |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
269 |
- cpu_ks, |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
270 |
- "cpu_stat", |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
271 |
- cpu_stat, |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
272 |
- sizeof(cpu_stat_t))) > nelems : |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
273 |
- (cpu_num = get_ncpus()) > 0) |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
274 |
+ /* Grab initial number of cpus */ |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
275 |
+ if (nelems == 0) { |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
276 |
+ cpu_vm_num = cpu_num = get_ncpus(); |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
277 |
+ if (cpu_num <= 0) |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
278 |
+ return (cpustats); |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
279 |
+ } |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
280 |
+ |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
281 |
+reload: |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
282 |
+ /* Make sure we have enough space for all cpus */ |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
283 |
+ while (cpu_kcid != kcid || cpu_num != cpu_vm_num || cpu_num > nelems) |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
284 |
{ |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
285 |
/* reallocate the arrays */ |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
286 |
dprintf("realloc from %d to %d\n", nelems, cpu_num); |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
287 |
nelems = cpu_num; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
288 |
- if (cpu_ks != NULL) |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
289 |
- { |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
290 |
- free(cpu_ks); |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
291 |
+#ifdef USE_NAMED_CPU_KSTAT |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
292 |
+ free(cpu_sys_ks); |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
293 |
+ free(cpu_vm_ks); |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
294 |
+ cpu_sys_ks = (kstat_t **)calloc(nelems, sizeof(kstat_t *)); |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
295 |
+ cpu_vm_ks = (kstat_t **)calloc(nelems, sizeof(kstat_t *)); |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
296 |
+ |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
297 |
+ if (cpu_sys_ks == NULL || cpu_vm_ks == NULL) { |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
298 |
+ puts("Allocation failed\n"); |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
299 |
+ abort(); |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
300 |
} |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
301 |
+ |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
302 |
+ cpu_num = kstat_safe_lookup(nelems, cpu_sys_ks, "misc", "cpu", "sys"); |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
303 |
+ cpu_vm_num = kstat_safe_lookup(nelems, cpu_vm_ks, "misc", "cpu", "vm"); |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
304 |
+#else |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
305 |
+ free(cpu_ks); |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
306 |
cpu_ks = (kstat_t **)calloc(nelems, sizeof(kstat_t *)); |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
307 |
- if (cpu_stat != NULL) |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
308 |
- { |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
309 |
- free(cpu_stat); |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
310 |
- } |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
311 |
- cpu_stat = (cpu_stat_t *)malloc(nelems * sizeof(cpu_stat_t)); |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
312 |
+ cpu_num = cpu_vm_num = |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
313 |
+ kstat_safe_lookup(nelems, cpu_ks, "misc", "cpu_stat", ""); |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
314 |
+#endif |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
315 |
+ cpu_kcid = kcid; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
316 |
} |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
317 |
|
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
318 |
/* do we have more cpus than our caller? */ |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
319 |
@@ -975,36 +1067,96 @@ |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
320 |
dprintf("realloc array from %d to %d\n", *cnt, cpu_num); |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
321 |
*cnt = cpu_num; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
322 |
cpustats = (struct cpustats *)realloc(cpustats, |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
323 |
- cpu_num * sizeof(struct cpustats)); |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
324 |
+ cpu_num * sizeof(struct cpustats)); |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
325 |
} |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
326 |
|
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
327 |
- cpu_stat_p = cpu_stat; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
328 |
cpustats_p = cpustats; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
329 |
for (i = 0; i < cpu_num; i++) |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
330 |
{ |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
331 |
- dprintf("cpu %d %08x: idle %u, user %u, syscall %u\n", i, cpu_stat_p, |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
332 |
- cpu_stat_p->cpu_sysinfo.cpu[0], |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
333 |
- cpu_stat_p->cpu_sysinfo.cpu[1], |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
334 |
- cpu_stat_p->cpu_sysinfo.syscall); |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
335 |
+#ifdef USE_NAMED_CPU_KSTAT |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
336 |
+ cpu_sys_stat_p = cpu_sys_ks[i]; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
337 |
+ cpu_vm_stat_p = cpu_vm_ks[i]; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
338 |
|
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
339 |
- cpustats_p->states[CPU_IDLE] = cpu_stat_p->cpu_sysinfo.cpu[CPU_IDLE]; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
340 |
- cpustats_p->states[CPU_USER] = cpu_stat_p->cpu_sysinfo.cpu[CPU_USER]; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
341 |
- cpustats_p->states[CPU_KERNEL] = cpu_stat_p->cpu_sysinfo.cpu[CPU_KERNEL]; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
342 |
- cpustats_p->states[CPUSTATE_IOWAIT] = cpu_stat_p->cpu_sysinfo.wait[W_IO] + |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
343 |
- cpu_stat_p->cpu_sysinfo.wait[W_PIO]; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
344 |
- cpustats_p->states[CPUSTATE_SWAP] = cpu_stat_p->cpu_sysinfo.wait[W_SWAP]; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
345 |
- cpustats_p->pswitch = cpu_stat_p->cpu_sysinfo.pswitch; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
346 |
- cpustats_p->trap = cpu_stat_p->cpu_sysinfo.trap; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
347 |
- cpustats_p->intr = cpu_stat_p->cpu_sysinfo.intr; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
348 |
- cpustats_p->syscall = cpu_stat_p->cpu_sysinfo.syscall; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
349 |
- cpustats_p->sysfork = cpu_stat_p->cpu_sysinfo.sysfork; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
350 |
- cpustats_p->sysvfork = cpu_stat_p->cpu_sysinfo.sysvfork; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
351 |
- cpustats_p->pfault = cpu_stat_p->cpu_vminfo.hat_fault + |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
352 |
- cpu_stat_p->cpu_vminfo.as_fault; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
353 |
- cpustats_p->pgin = cpu_stat_p->cpu_vminfo.pgin; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
354 |
- cpustats_p->pgout = cpu_stat_p->cpu_vminfo.pgout; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
355 |
+ /* |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
356 |
+ * If kstat id has changed, update the kstat headers and re-allocate |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
357 |
+ * the arrays accordingly. |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
358 |
+ */ |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
359 |
+ if (((cpu_kcid = kstat_read(kc, cpu_sys_stat_p, NULL)) != kcid) || |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
360 |
+ ((cpu_kcid = kstat_read(kc, cpu_vm_stat_p, NULL)) != kcid)) |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
361 |
+ goto reload; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
362 |
+ |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
363 |
+ dprintf("cpu %d %08x: idle %llu, user %llu, syscall %llu\n", |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
364 |
+ i, cpu_sys_stat_p, |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
365 |
+ kstat_safe_datalookup(cpu_sys_stat_p, "cpu_ticks_idle", |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
366 |
+ &cpu_ticks_idle_index), |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
367 |
+ kstat_safe_datalookup(cpu_sys_stat_p, "cpu_ticks_user", |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
368 |
+ &cpu_ticks_user_index), |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
369 |
+ kstat_safe_datalookup(cpu_sys_stat_p, "syscall", |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
370 |
+ &syscall_index)); |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
371 |
+ |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
372 |
+ cpustats_p->states[CPUSTATE_IDLE] = |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
373 |
+ kstat_safe_datalookup(cpu_sys_stat_p, "cpu_ticks_idle", |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
374 |
+ &cpu_ticks_idle_index); |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
375 |
+ cpustats_p->states[CPUSTATE_USER] = |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
376 |
+ kstat_safe_datalookup(cpu_sys_stat_p, "cpu_ticks_user", |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
377 |
+ &cpu_ticks_user_index); |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
378 |
+ cpustats_p->states[CPUSTATE_KERNEL] = |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
379 |
+ kstat_safe_datalookup(cpu_sys_stat_p, "cpu_ticks_kernel", |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
380 |
+ &cpu_ticks_kernel_index); |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
381 |
+ cpustats_p->states[CPUSTATE_STOLEN] = |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
382 |
+ kstat_safe_datalookup(cpu_sys_stat_p, "cpu_ticks_stolen", |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
383 |
+ &cpu_ticks_stolen_index); |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
384 |
+ cpustats_p->states[CPUSTATE_SWAP] = 0; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
385 |
+ cpustats_p->pswitch = kstat_safe_datalookup(cpu_sys_stat_p, "pswitch", |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
386 |
+ &pswitch_index); |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
387 |
+ cpustats_p->trap = kstat_safe_datalookup(cpu_sys_stat_p, "trap", |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
388 |
+ &trap_index); |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
389 |
+ cpustats_p->intr = kstat_safe_datalookup(cpu_sys_stat_p, "intr", |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
390 |
+ &intr_index); |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
391 |
+ cpustats_p->syscall = kstat_safe_datalookup(cpu_sys_stat_p, "syscall", |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
392 |
+ &syscall_index); |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
393 |
+ cpustats_p->sysfork = kstat_safe_datalookup(cpu_sys_stat_p, "sysfork", |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
394 |
+ &sysfork_index); |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
395 |
+ cpustats_p->sysvfork = kstat_safe_datalookup(cpu_sys_stat_p, "sysvfork", |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
396 |
+ &sysvfork_index); |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
397 |
+ cpustats_p->pfault = kstat_safe_datalookup(cpu_vm_stat_p, "hat_fault", |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
398 |
+ &hat_fault_index) + |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
399 |
+ kstat_safe_datalookup(cpu_vm_stat_p, "as_fault", |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
400 |
+ &as_fault_index); |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
401 |
+ cpustats_p->pgin = kstat_safe_datalookup(cpu_vm_stat_p, "pgin", |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
402 |
+ &pgin_index); |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
403 |
+ cpustats_p->pgout = kstat_safe_datalookup(cpu_vm_stat_p, "pgout", |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
404 |
+ &pgout_index); |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
405 |
+#else |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
406 |
+ if ((cpu_kcid = kstat_read(kc, cpu_ks[i], &cpu_stat)) != kcid) |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
407 |
+ goto reload; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
408 |
+ |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
409 |
+ dprintf("cpu %d %08x: idle %u, user %u, syscall %u\n", i, cpu_stat, |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
410 |
+ cpu_stat.cpu_sysinfo.cpu[CPUSTATE_IDLE], |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
411 |
+ cpu_stat.cpu_sysinfo.cpu[CPUSTATE_USER], |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
412 |
+ cpu_stat.cpu_sysinfo.syscall); |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
413 |
+ |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
414 |
+ cpustats_p->states[CPUSTATE_IDLE] = |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
415 |
+ (uint64_t)cpu_stat.cpu_sysinfo.cpu[CPU_IDLE]; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
416 |
+ cpustats_p->states[CPUSTATE_USER] = |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
417 |
+ (uint64_t)cpu_stat.cpu_sysinfo.cpu[CPU_USER]; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
418 |
+ cpustats_p->states[CPUSTATE_KERNEL] = |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
419 |
+ (uint64_t)cpu_stat.cpu_sysinfo.cpu[CPU_KERNEL]; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
420 |
+ cpustats_p->states[CPUSTATE_STOLEN] = 0; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
421 |
+ cpustats_p->states[CPUSTATE_SWAP] = |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
422 |
+ (uint64_t)cpu_stat.cpu_sysinfo.wait[W_SWAP]; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
423 |
+ cpustats_p->pswitch = (uint64_t)cpu_stat.cpu_sysinfo.pswitch; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
424 |
+ cpustats_p->trap = (uint64_t)cpu_stat.cpu_sysinfo.trap; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
425 |
+ cpustats_p->intr = (uint64_t)cpu_stat.cpu_sysinfo.intr; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
426 |
+ cpustats_p->syscall = (uint64_t)cpu_stat.cpu_sysinfo.syscall; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
427 |
+ cpustats_p->sysfork = (uint64_t)cpu_stat.cpu_sysinfo.sysfork; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
428 |
+ cpustats_p->sysvfork = (uint64_t)cpu_stat.cpu_sysinfo.sysvfork; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
429 |
+ cpustats_p->pfault = (uint64_t)cpu_stat.cpu_vminfo.hat_fault + |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
430 |
+ (uint64_t)cpu_stat.cpu_vminfo.as_fault; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
431 |
+ cpustats_p->pgin = (uint64_t)cpu_stat.cpu_vminfo.pgin; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
432 |
+ cpustats_p->pgout = (uint64_t)cpu_stat.cpu_vminfo.pgout; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
433 |
+#endif |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
434 |
cpustats_p++; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
435 |
- cpu_stat_p++; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
436 |
} |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
437 |
|
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
438 |
cpucount = cpu_num; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
439 |
@@ -1035,11 +1187,10 @@ |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
440 |
/* get struct cpu for this processor */ |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
441 |
(void) getkval (cpu_offset[i], (int *)(&cpu), sizeof (struct cpu), "cpu"); |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
442 |
|
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
443 |
- (*cp_stats_p)[CPU_IDLE] = cpu.cpu_stat.cpu_sysinfo.cpu[CPU_IDLE]; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
444 |
- (*cp_stats_p)[CPU_USER] = cpu.cpu_stat.cpu_sysinfo.cpu[CPU_USER]; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
445 |
- (*cp_stats_p)[CPU_KERNEL] = cpu.cpu_stat.cpu_sysinfo.cpu[CPU_KERNEL]; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
446 |
- (*cp_stats_p)[CPUSTATE_IOWAIT] = cpu.cpu_stat.cpu_sysinfo.wait[W_IO] + |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
447 |
- cpu.cpu_stat.cpu_sysinfo.wait[W_PIO]; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
448 |
+ (*cp_stats_p)[CPUSTATE_IDLE] = cpu.cpu_stat.cpu_sysinfo.cpu[CPU_IDLE]; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
449 |
+ (*cp_stats_p)[CPUSTATE_USER] = cpu.cpu_stat.cpu_sysinfo.cpu[CPU_USER]; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
450 |
+ (*cp_stats_p)[CPUSTATE_KERNEL] = cpu.cpu_stat.cpu_sysinfo.cpu[CPU_KERNEL]; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
451 |
+ (*cp_stats_p)[CPUSTATE_STOLEN] = 0; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
452 |
(*cp_stats_p)[CPUSTATE_SWAP] = cpu.cpu_stat.cpu_sysinfo.wait[W_SWAP]; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
453 |
cp_stats_p++; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
454 |
} |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
455 |
@@ -1394,14 +1545,55 @@ |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
456 |
return (0); |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
457 |
} |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
458 |
|
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
459 |
+static void |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
460 |
+percentages64(int cnt, int *out, uint64_t *new, uint64_t *old, uint64_t *diffs) |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
461 |
+{ |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
462 |
+ int i; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
463 |
+ uint64_t change; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
464 |
+ uint64_t total_change; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
465 |
+ uint64_t *dp; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
466 |
+ uint64_t half_total; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
467 |
+ |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
468 |
+ /* initialization */ |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
469 |
+ total_change = 0; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
470 |
+ dp = diffs; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
471 |
+ |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
472 |
+ /* calculate changes for each state and the overall change */ |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
473 |
+ for (i = 0; i < cnt; i++) { |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
474 |
+ /* |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
475 |
+ * Don't worry about wrapping - even at hz=1GHz, a |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
476 |
+ * u_int64_t will last at least 544 years. |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
477 |
+ */ |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
478 |
+ change = *new - *old; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
479 |
+ total_change += (*dp++ = change); |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
480 |
+ *old++ = *new++; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
481 |
+ } |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
482 |
+ |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
483 |
+ /* avoid divide by zero potential */ |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
484 |
+ if (total_change == 0) |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
485 |
+ total_change = 1; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
486 |
+ |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
487 |
+ /* calculate percentages based on overall change, rounding up */ |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
488 |
+ half_total = total_change / 2; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
489 |
+ for (i = 0; i < cnt; i++) |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
490 |
+ *out++ = (int)((*diffs++ * 1000 + half_total) / total_change); |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
491 |
+} |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
492 |
+ |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
493 |
+static uint_t |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
494 |
+diff_per_second64(uint64_t x, uint64_t y) |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
495 |
+{ |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
496 |
+ uint64_t diff = y > x ? UINT64_MAX - y + x + 1 : x - y; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
497 |
+ return ((uint_t)(diff * 1000 / time_elapsed())); |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
498 |
+} |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
499 |
+ |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
500 |
void |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
501 |
get_system_info (struct system_info *si) |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
502 |
{ |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
503 |
int avenrun[3]; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
504 |
|
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
505 |
- static long cp_time[CPUSTATES]; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
506 |
- static long cp_old[CPUSTATES]; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
507 |
- static long cp_diff[CPUSTATES]; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
508 |
+ static uint64_t cp_time[CPUSTATES]; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
509 |
+ static uint64_t cp_old[CPUSTATES]; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
510 |
+ static uint64_t cp_diff[CPUSTATES]; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
511 |
static struct cpustats *cpustats = NULL; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
512 |
static struct cpustats sum_current; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
513 |
static struct cpustats sum_old; |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
514 |
@@ -1440,7 +1632,7 @@ |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
515 |
} |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
516 |
|
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
517 |
/* convert cp_time counts to percentages */ |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
518 |
- (void) percentages (CPUSTATES, cpu_states, cp_time, cp_old, cp_diff); |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
519 |
+ (void) percentages64 (CPUSTATES, cpu_states, cp_time, cp_old, cp_diff); |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
520 |
|
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
521 |
/* get mpid -- process id of last process */ |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
522 |
if (kd) |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
523 |
@@ -1467,15 +1659,15 @@ |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
524 |
} |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
525 |
|
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
526 |
/* get kernel data */ |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
527 |
- kernel_stats[KERNEL_CSWITCH] = diff_per_second(sum_current.pswitch, sum_old.pswitch); |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
528 |
- kernel_stats[KERNEL_TRAP] = diff_per_second(sum_current.trap, sum_old.trap); |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
529 |
- kernel_stats[KERNEL_INTR] = diff_per_second(sum_current.intr, sum_old.intr); |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
530 |
- kernel_stats[KERNEL_SYSCALL] = diff_per_second(sum_current.syscall, sum_old.syscall); |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
531 |
- kernel_stats[KERNEL_FORK] = diff_per_second(sum_current.sysfork + sum_current.sysvfork, |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
532 |
+ kernel_stats[KERNEL_CSWITCH] = diff_per_second64(sum_current.pswitch, sum_old.pswitch); |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
533 |
+ kernel_stats[KERNEL_TRAP] = diff_per_second64(sum_current.trap, sum_old.trap); |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
534 |
+ kernel_stats[KERNEL_INTR] = diff_per_second64(sum_current.intr, sum_old.intr); |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
535 |
+ kernel_stats[KERNEL_SYSCALL] = diff_per_second64(sum_current.syscall, sum_old.syscall); |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
536 |
+ kernel_stats[KERNEL_FORK] = diff_per_second64(sum_current.sysfork + sum_current.sysvfork, |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
537 |
sum_old.sysfork + sum_old.sysvfork); |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
538 |
- kernel_stats[KERNEL_PFAULT] = diff_per_second(sum_current.pfault, sum_old.pfault); |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
539 |
- kernel_stats[KERNEL_PGIN] = pagetok(diff_per_second(sum_current.pgin, sum_old.pgin)); |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
540 |
- kernel_stats[KERNEL_PGOUT] = pagetok(diff_per_second(sum_current.pgout, sum_old.pgout)); |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
541 |
+ kernel_stats[KERNEL_PFAULT] = diff_per_second64(sum_current.pfault, sum_old.pfault); |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
542 |
+ kernel_stats[KERNEL_PGIN] = pagetok(diff_per_second64(sum_current.pgin, sum_old.pgin)); |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
543 |
+ kernel_stats[KERNEL_PGOUT] = pagetok(diff_per_second64(sum_current.pgout, sum_old.pgout)); |
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
544 |
|
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
545 |
|
31cdcfd53b4b
16988337 Stolen time should be visible in output of top(1)
Stanislav Kozina <stanislav.kozina@oracle.com>
parents:
diff
changeset
|
546 |
/* set arrays and strings */ |