components/net-snmp-57/patches/052.16824703.dyn_cpu.patch
author David Hollister <david.hollister@oracle.com>
Wed, 12 Oct 2016 14:01:13 -0600
changeset 7094 61352b4e5af5
parent 5867 445e2cf1c845
permissions -rw-r--r--
24797203 OpenStack RBAC profiles allow reading too many files 24797238 keystone RBAC and SMF should point at Apache log files 24797256 cinder RBAC and SMF should point at Apache log files 24830959 horizon RBAC and SMF should point at Apache log files
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
5867
445e2cf1c845 PSARC/2014/169 Net-snmp upgrade to version 5.7.2.1
Gowtham Thommandra <Gowtham.Thommandra@Oracle.COM>
parents: 2114
diff changeset
     1
#
445e2cf1c845 PSARC/2014/169 Net-snmp upgrade to version 5.7.2.1
Gowtham Thommandra <Gowtham.Thommandra@Oracle.COM>
parents: 2114
diff changeset
     2
# net-snmp can't get "hrProcessorLoad" dynamically after change the no. of CPUs.
445e2cf1c845 PSARC/2014/169 Net-snmp upgrade to version 5.7.2.1
Gowtham Thommandra <Gowtham.Thommandra@Oracle.COM>
parents: 2114
diff changeset
     3
#
445e2cf1c845 PSARC/2014/169 Net-snmp upgrade to version 5.7.2.1
Gowtham Thommandra <Gowtham.Thommandra@Oracle.COM>
parents: 2114
diff changeset
     4
# Developed in-house. Patch submitted to community
445e2cf1c845 PSARC/2014/169 Net-snmp upgrade to version 5.7.2.1
Gowtham Thommandra <Gowtham.Thommandra@Oracle.COM>
parents: 2114
diff changeset
     5
# http://sourceforge.net/p/net-snmp/patches/1284/
2107
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
     6
--- a/include/net-snmp/agent/hardware/cpu.h	2014-06-09 04:44:56.766491669 -0700
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
     7
+++ b/include/net-snmp/agent/hardware/cpu.h	2014-06-09 04:45:47.845551969 -0700
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
     8
@@ -52,6 +52,11 @@
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
     9
      netsnmp_cpu_info *next;
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
    10
 };
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
    11
 
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
    12
+    /* Auxilary structure used for updating the new cpu list */
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
    13
+struct cpu_idx {
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
    14
+	int idx;
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
    15
+	struct cpu_idx *next;
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
    16
+};
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
    17
 
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
    18
     /*
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
    19
      * Possibly not all needed ??
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
    20
@@ -60,6 +65,7 @@
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
    21
 netsnmp_cpu_info *netsnmp_cpu_get_next( netsnmp_cpu_info* );
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
    22
 netsnmp_cpu_info *netsnmp_cpu_get_byIdx(  int,   int );
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
    23
 netsnmp_cpu_info *netsnmp_cpu_get_byName( char*, int );
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
    24
+int netsnmp_update_cpu_list( struct cpu_idx * ); /* returns the number of deleted cpus */
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
    25
 
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
    26
 netsnmp_cache *netsnmp_cpu_get_cache( void );
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
    27
 int netsnmp_cpu_load( void );
5867
445e2cf1c845 PSARC/2014/169 Net-snmp upgrade to version 5.7.2.1
Gowtham Thommandra <Gowtham.Thommandra@Oracle.COM>
parents: 2114
diff changeset
    28
--- net-snmp-5.7.2.1/agent/mibgroup/hardware/cpu/cpu.c	Wed Feb 19 16:36:42 2014
445e2cf1c845 PSARC/2014/169 Net-snmp upgrade to version 5.7.2.1
Gowtham Thommandra <Gowtham.Thommandra@Oracle.COM>
parents: 2114
diff changeset
    29
+++ cpu.c	Thu Oct 30 03:00:29 2014
445e2cf1c845 PSARC/2014/169 Net-snmp upgrade to version 5.7.2.1
Gowtham Thommandra <Gowtham.Thommandra@Oracle.COM>
parents: 2114
diff changeset
    30
@@ -271,4 +271,60 @@
2107
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
    31
     cpu2->pageIn     = cpu->pageIn;
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
    32
     cpu2->pageOut    = cpu->pageOut;
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
    33
 }
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
    34
+
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
    35
+    /*
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
    36
+     * Updates the cpu list, keeping the cpus whose indices are passed
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
    37
+     * assumes the passed linked list of indices is sorted in ascending order
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
    38
+     * returns the number of deleted cpus
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
    39
+     */
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
    40
+int netsnmp_update_cpu_list( struct cpu_idx *new_cpu_list )
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
    41
+{
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
    42
+    netsnmp_cpu_info *prev, *current, *temp1, *temp2;
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
    43
+    int n=0;
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
    44
+    netsnmp_cpu_info *cpu;
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
    45
+
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
    46
+    for( prev=current=_cpu_head; current && new_cpu_list ;
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
    47
+        current=current->next, new_cpu_list=new_cpu_list->next ) {
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
    48
+        if ( current->idx == new_cpu_list->idx ) {
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
    49
+            prev=current;
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
    50
+        } else {
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
    51
+            current=current->next;
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
    52
+            while ( current && (current->idx != new_cpu_list->idx) )
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
    53
+                current = current->next;
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
    54
+            if ( !current ) {
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
    55
+                /*This shouldn't happen. Something went really wrong */
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
    56
+                return -1;
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
    57
+            }
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
    58
+
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
    59
+            temp1 = prev->next;
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
    60
+            prev->next = current;
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
    61
+            prev = current;
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
    62
+                /* remove the unassigned cpus */
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
    63
+            while ( temp1 != current ) {
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
    64
+                temp2 = temp1;
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
    65
+                temp1 = temp1->next;
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
    66
+                n++;
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
    67
+                SNMP_FREE(temp2->history);
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
    68
+                SNMP_FREE(temp2);
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
    69
+            }
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
    70
+        }
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
    71
+    } /*end of for */
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
    72
+
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
    73
+    if ( !current && new_cpu_list ) {
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
    74
+        /* This shouldn't happen. */
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
    75
+        return -1;
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
    76
+    }
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
    77
+
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
    78
+    /* Delete the unassigned trailing cpus from the list */
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
    79
+    while ( current ) {
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
    80
+        temp2 = current;
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
    81
+        current = current->next;
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
    82
+        n++;
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
    83
+        SNMP_FREE(temp2->history);
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
    84
+        SNMP_FREE(temp2);
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
    85
+     }
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
    86
+     prev->next = NULL;
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
    87
+     return n;
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
    88
+}
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
    89
+
5867
445e2cf1c845 PSARC/2014/169 Net-snmp upgrade to version 5.7.2.1
Gowtham Thommandra <Gowtham.Thommandra@Oracle.COM>
parents: 2114
diff changeset
    90
 #endif /* NETSNMP_FEATURE_REMOVE_HARDWARE_CPU_COPY_STATS */
445e2cf1c845 PSARC/2014/169 Net-snmp upgrade to version 5.7.2.1
Gowtham Thommandra <Gowtham.Thommandra@Oracle.COM>
parents: 2114
diff changeset
    91
--- net-snmp-5.7.2.1/agent/mibgroup/hardware/cpu/cpu_kstat.c	Wed Feb 19 16:36:42 2014
445e2cf1c845 PSARC/2014/169 Net-snmp upgrade to version 5.7.2.1
Gowtham Thommandra <Gowtham.Thommandra@Oracle.COM>
parents: 2114
diff changeset
    92
+++ cpu_kstat.c	Thu Oct 30 03:00:19 2014
445e2cf1c845 PSARC/2014/169 Net-snmp upgrade to version 5.7.2.1
Gowtham Thommandra <Gowtham.Thommandra@Oracle.COM>
parents: 2114
diff changeset
    93
@@ -17,6 +17,8 @@
2107
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
    94
 extern kstat_ctl_t  *kstat_fd;
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
    95
 extern int           cpu_num;
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
    96
 int _cpu_status(char *state);
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
    97
+static void add_new_kstat_cpu_entry(kstat_t *ksp);
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
    98
+static struct cpu_idx * add_cpu_idx(struct cpu_idx * head, int idx);
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
    99
 
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   100
     /*
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   101
      * Initialise the list of CPUs on the system
5867
445e2cf1c845 PSARC/2014/169 Net-snmp upgrade to version 5.7.2.1
Gowtham Thommandra <Gowtham.Thommandra@Oracle.COM>
parents: 2114
diff changeset
   102
@@ -23,10 +25,8 @@
2107
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   103
      *   (including descriptions)
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   104
      */
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   105
 void init_cpu_kstat( void ) {
5867
445e2cf1c845 PSARC/2014/169 Net-snmp upgrade to version 5.7.2.1
Gowtham Thommandra <Gowtham.Thommandra@Oracle.COM>
parents: 2114
diff changeset
   106
-    int               i = 0, n = 0, clock, state_begin;
2107
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   107
-    char              ctype[15], ftype[15], state[10];
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   108
+    int               n=0;
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   109
     kstat_t          *ksp;
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   110
-    kstat_named_t    *ks_data;
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   111
     netsnmp_cpu_info *cpu = netsnmp_cpu_get_byIdx( -1, 1 );
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   112
     strcpy(cpu->name, "Overall CPU statistics");
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   113
 
5867
445e2cf1c845 PSARC/2014/169 Net-snmp upgrade to version 5.7.2.1
Gowtham Thommandra <Gowtham.Thommandra@Oracle.COM>
parents: 2114
diff changeset
   114
@@ -41,45 +41,63 @@
2107
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   115
         if ((strcmp(ksp->ks_module, "cpu_info") == 0) &&
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   116
             (strcmp(ksp->ks_class,  "misc"    ) == 0)) {
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   117
             kstat_read(kstat_fd, ksp, NULL );
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   118
+            add_new_kstat_cpu_entry(ksp);
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   119
             n++;
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   120
-            clock = 999999;
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   121
-            memset(ctype, 0, sizeof(ctype));
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   122
-            memset(ftype, 0, sizeof(ftype));
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   123
-            memset(state, 0, sizeof(state));
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   124
-            for (i=0, ks_data = ksp->ks_data; i < ksp->ks_ndata; i++, ks_data++) {
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   125
-                if ( strcmp( ks_data->name, "state" ) == 0 ) {
5867
445e2cf1c845 PSARC/2014/169 Net-snmp upgrade to version 5.7.2.1
Gowtham Thommandra <Gowtham.Thommandra@Oracle.COM>
parents: 2114
diff changeset
   126
-                    strlcpy(state, ks_data->value.c, sizeof(state));
2107
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   127
-                } else if ( strcmp( ks_data->name, "state_begin" ) == 0 ) {
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   128
-                    state_begin = ks_data->value.i32;
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   129
-                } else if ( strcmp( ks_data->name, "cpu_type" ) == 0 ) {
5867
445e2cf1c845 PSARC/2014/169 Net-snmp upgrade to version 5.7.2.1
Gowtham Thommandra <Gowtham.Thommandra@Oracle.COM>
parents: 2114
diff changeset
   130
-                    strlcpy(ctype, ks_data->value.c, sizeof(ctype));
2107
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   131
-                } else if ( strcmp( ks_data->name, "fpu_type" ) == 0 ) {
5867
445e2cf1c845 PSARC/2014/169 Net-snmp upgrade to version 5.7.2.1
Gowtham Thommandra <Gowtham.Thommandra@Oracle.COM>
parents: 2114
diff changeset
   132
-                    strlcpy(ftype, ks_data->value.c, sizeof(ftype));
2107
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   133
-                } else if ( strcmp( ks_data->name, "clock_MHz" ) == 0 ) {
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   134
-                    clock = ks_data->value.i32;
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   135
-                }
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   136
-            }
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   137
-            i   = ksp->ks_instance;
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   138
-            cpu = netsnmp_cpu_get_byIdx( i, 1 );
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   139
-            sprintf( cpu->name,  "cpu%d", i );
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   140
-            sprintf( cpu->descr, "CPU %d Sun %d MHz %s with %s FPU %s",
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   141
-                                 i, clock, ctype, ftype, state  );
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   142
-            cpu->status = _cpu_status(state); /* XXX - or in 'n_c_a_load' ? */
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   143
         }
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   144
     }
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   145
-    cpu_num = i;
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   146
+    cpu_num = n;
5867
445e2cf1c845 PSARC/2014/169 Net-snmp upgrade to version 5.7.2.1
Gowtham Thommandra <Gowtham.Thommandra@Oracle.COM>
parents: 2114
diff changeset
   147
 }
445e2cf1c845 PSARC/2014/169 Net-snmp upgrade to version 5.7.2.1
Gowtham Thommandra <Gowtham.Thommandra@Oracle.COM>
parents: 2114
diff changeset
   148
 
445e2cf1c845 PSARC/2014/169 Net-snmp upgrade to version 5.7.2.1
Gowtham Thommandra <Gowtham.Thommandra@Oracle.COM>
parents: 2114
diff changeset
   149
 
445e2cf1c845 PSARC/2014/169 Net-snmp upgrade to version 5.7.2.1
Gowtham Thommandra <Gowtham.Thommandra@Oracle.COM>
parents: 2114
diff changeset
   150
     /*
2107
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   151
+     * adds the new cpu entry to the exisitng list
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   152
+     */
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   153
+static void
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   154
+add_new_kstat_cpu_entry( kstat_t *ksp ) {
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   155
+    int i, clock, state_begin;
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   156
+    char ctype[15], ftype[15], state[10];
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   157
+    kstat_named_t    *ks_data;
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   158
+    netsnmp_cpu_info *cpu;
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   159
+
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   160
+    clock = 999999;
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   161
+    memset(ctype, 0, sizeof(ctype));
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   162
+    memset(ftype, 0, sizeof(ftype));
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   163
+    memset(state, 0, sizeof(state));
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   164
+
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   165
+    for (i=0, ks_data = ksp->ks_data; i < ksp->ks_ndata; i++, ks_data++) {
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   166
+        if ( strcmp( ks_data->name, "state" ) == 0 ) {
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   167
+            strncpy( state, ks_data->value.c, sizeof(state));
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   168
+            state[sizeof(state)-1] = '\0';
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   169
+        } else if ( strcmp( ks_data->name, "state_begin" ) == 0 ) {
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   170
+            state_begin = ks_data->value.i32;
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   171
+        } else if ( strcmp( ks_data->name, "cpu_type" ) == 0 ) {
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   172
+            strncpy( ctype, ks_data->value.c, sizeof(ctype));
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   173
+            ctype[sizeof(ctype)-1] = '\0';
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   174
+        } else if ( strcmp( ks_data->name, "fpu_type" ) == 0 ) {
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   175
+            strncpy( ftype, ks_data->value.c, sizeof(ftype));
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   176
+            ftype[sizeof(ftype)-1] = '\0';
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   177
+        } else if ( strcmp( ks_data->name, "clock_MHz" ) == 0 ) {
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   178
+            clock = ks_data->value.i32;
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   179
+        }
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   180
+    }
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   181
+    i   = ksp->ks_instance;
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   182
+    cpu = netsnmp_cpu_get_byIdx( i, 1 );
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   183
+    sprintf( cpu->name,  "cpu%d", i );
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   184
+    sprintf( cpu->descr, "CPU %d Sun %d MHz %s with %s FPU %s", i, clock, ctype, ftype, state  );
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   185
+    cpu->status = _cpu_status(state);
5867
445e2cf1c845 PSARC/2014/169 Net-snmp upgrade to version 5.7.2.1
Gowtham Thommandra <Gowtham.Thommandra@Oracle.COM>
parents: 2114
diff changeset
   186
+}
445e2cf1c845 PSARC/2014/169 Net-snmp upgrade to version 5.7.2.1
Gowtham Thommandra <Gowtham.Thommandra@Oracle.COM>
parents: 2114
diff changeset
   187
+
445e2cf1c845 PSARC/2014/169 Net-snmp upgrade to version 5.7.2.1
Gowtham Thommandra <Gowtham.Thommandra@Oracle.COM>
parents: 2114
diff changeset
   188
+
445e2cf1c845 PSARC/2014/169 Net-snmp upgrade to version 5.7.2.1
Gowtham Thommandra <Gowtham.Thommandra@Oracle.COM>
parents: 2114
diff changeset
   189
+    /*
2107
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   190
      * Load the latest CPU usage statistics
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   191
      */
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   192
 int netsnmp_cpu_arch_load( netsnmp_cache *cache, void *magic ) {
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   193
-    int               i=1;
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   194
+    int               i=1, n=0;
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   195
     kstat_t          *ksp;
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   196
     cpu_stat_t        cs;
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   197
     netsnmp_cpu_info *cpu = netsnmp_cpu_get_byIdx( -1, 0 );
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   198
     netsnmp_cpu_info *cpu2;
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   199
+    struct cpu_idx *new_cpu_list = NULL, *temp_cpu_idx;
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   200
 
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   201
         /* Clear overall stats, ready for summing individual CPUs */
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   202
     cpu->user_ticks = 0;
5867
445e2cf1c845 PSARC/2014/169 Net-snmp upgrade to version 5.7.2.1
Gowtham Thommandra <Gowtham.Thommandra@Oracle.COM>
parents: 2114
diff changeset
   203
@@ -94,14 +112,40 @@
2107
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   204
 
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   205
     kstat_chain_update( kstat_fd );
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   206
     DEBUGMSGTL(("cpu", "cpu_kstat load\n "));
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   207
+
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   208
+    /*
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   209
+     * The stats update is three step.
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   210
+     * First - add in the new cpus' info to the linked list
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   211
+     */
5867
445e2cf1c845 PSARC/2014/169 Net-snmp upgrade to version 5.7.2.1
Gowtham Thommandra <Gowtham.Thommandra@Oracle.COM>
parents: 2114
diff changeset
   212
     for (ksp = kstat_fd->kc_chain; ksp != NULL; ksp = ksp->ks_next) {
445e2cf1c845 PSARC/2014/169 Net-snmp upgrade to version 5.7.2.1
Gowtham Thommandra <Gowtham.Thommandra@Oracle.COM>
parents: 2114
diff changeset
   213
         if (ksp->ks_flags & KSTAT_FLAG_INVALID)
445e2cf1c845 PSARC/2014/169 Net-snmp upgrade to version 5.7.2.1
Gowtham Thommandra <Gowtham.Thommandra@Oracle.COM>
parents: 2114
diff changeset
   214
             continue;
2107
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   215
+        if ((strcmp(ksp->ks_module, "cpu_info") == 0) &&
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   216
+            (strcmp(ksp->ks_class,  "misc"    ) == 0)) {
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   217
+            kstat_read(kstat_fd, ksp, NULL );
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   218
+            i = ksp->ks_instance;
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   219
+            new_cpu_list = add_cpu_idx( new_cpu_list, i);
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   220
+            cpu2 = netsnmp_cpu_get_byIdx( i, 0 );
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   221
+            if ( !cpu2 ) {
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   222
+                add_new_kstat_cpu_entry(ksp);
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   223
+                n++;
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   224
+            }
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   225
+        }
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   226
+    }
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   227
+
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   228
+
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   229
+    /* Second - update the CPU list to reflect new kernel structures */
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   230
+    n -= netsnmp_update_cpu_list( new_cpu_list );
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   231
+
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   232
+    /* Third - for updating stats for the new CPU set */
5867
445e2cf1c845 PSARC/2014/169 Net-snmp upgrade to version 5.7.2.1
Gowtham Thommandra <Gowtham.Thommandra@Oracle.COM>
parents: 2114
diff changeset
   233
+    for (ksp = kstat_fd->kc_chain; ksp != NULL; ksp = ksp->ks_next) {
445e2cf1c845 PSARC/2014/169 Net-snmp upgrade to version 5.7.2.1
Gowtham Thommandra <Gowtham.Thommandra@Oracle.COM>
parents: 2114
diff changeset
   234
+        if (ksp->ks_flags & KSTAT_FLAG_INVALID)
445e2cf1c845 PSARC/2014/169 Net-snmp upgrade to version 5.7.2.1
Gowtham Thommandra <Gowtham.Thommandra@Oracle.COM>
parents: 2114
diff changeset
   235
+            continue;
445e2cf1c845 PSARC/2014/169 Net-snmp upgrade to version 5.7.2.1
Gowtham Thommandra <Gowtham.Thommandra@Oracle.COM>
parents: 2114
diff changeset
   236
         if (strcmp(ksp->ks_module, "cpu_stat") == 0) {
2107
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   237
             i    = ksp->ks_instance;
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   238
             cpu2 = netsnmp_cpu_get_byIdx( i, 0 );
5867
445e2cf1c845 PSARC/2014/169 Net-snmp upgrade to version 5.7.2.1
Gowtham Thommandra <Gowtham.Thommandra@Oracle.COM>
parents: 2114
diff changeset
   239
             if ( !cpu2 )  
445e2cf1c845 PSARC/2014/169 Net-snmp upgrade to version 5.7.2.1
Gowtham Thommandra <Gowtham.Thommandra@Oracle.COM>
parents: 2114
diff changeset
   240
-                break;   /* or continue ? */  /* Skip new CPUs */
2107
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   241
+                    continue;  /* This shouldn't happen. Inconsistency in kstat CPU data */
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   242
             if ((ksp->ks_type != KSTAT_TYPE_RAW) ||
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   243
                 (ksp->ks_data_size != sizeof(cs))||
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   244
                 (kstat_read(kstat_fd, ksp, &cs) == -1)) {
5867
445e2cf1c845 PSARC/2014/169 Net-snmp upgrade to version 5.7.2.1
Gowtham Thommandra <Gowtham.Thommandra@Oracle.COM>
parents: 2114
diff changeset
   245
@@ -135,9 +179,43 @@
445e2cf1c845 PSARC/2014/169 Net-snmp upgrade to version 5.7.2.1
Gowtham Thommandra <Gowtham.Thommandra@Oracle.COM>
parents: 2114
diff changeset
   246
             cpu->nCtxSwitches += (unsigned long long)cs.cpu_sysinfo.pswitch;
2107
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   247
         }
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   248
     }
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   249
+    cpu_num += n;
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   250
+    /* Clean up the temporary CPU index list */
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   251
+    while(new_cpu_list) {
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   252
+        temp_cpu_idx = new_cpu_list;
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   253
+        new_cpu_list = new_cpu_list->next;
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   254
+        SNMP_FREE(temp_cpu_idx);
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   255
+    }
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   256
     return 0;
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   257
 }
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   258
 
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   259
+    /* returns the new head */
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   260
+static struct cpu_idx *
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   261
+add_cpu_idx(struct cpu_idx * head, int idx)
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   262
+{
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   263
+    struct cpu_idx *cpu_idx, *current;
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   264
+    cpu_idx = SNMP_MALLOC_TYPEDEF( struct cpu_idx );
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   265
+    if ( !cpu_idx ) {
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   266
+        DEBUGMSG(("cpu", "(cpu_idx creation failed)\n"));
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   267
+        return head;
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   268
+    }
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   269
+
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   270
+    cpu_idx->idx = idx;
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   271
+    if ( !head || head->idx > idx ) {
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   272
+        cpu_idx->next = head;
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   273
+        return cpu_idx;
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   274
+    }
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   275
+
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   276
+    for ( current=head; current; current=current->next ) {
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   277
+        if ( !current->next || current->next->idx > idx ) {
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   278
+            cpu_idx->next = current->next;
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   279
+            current->next = cpu_idx;
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   280
+            return head;
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   281
+        }
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   282
+    }
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   283
+
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   284
+}
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   285
+
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   286
 int
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   287
 _cpu_status( char *state)
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   288
 {