components/net-snmp-57/patches/052.16824703.dyn_cpu.patch
author Geoffrey Gardella <geoffrey.gardella@oracle.com>
Tue, 03 May 2016 15:56:45 -0700
changeset 5910 93ac80235738
parent 5867 445e2cf1c845
permissions -rw-r--r--
23176903 Update SMF configuration for Puppet 3.8.6
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
 {