components/net-snmp/patches/052.16824703.dyn_cpu.patch
author Mohana Rao Gorai <mohana.gorai@oracle.com>
Fri, 26 Sep 2014 04:07:35 -0700
changeset 2114 5a98d3204048
parent 2107 components/net-snmp/patches/049.16824703.dyn_cpu.patch@1cda4e19a209
permissions -rw-r--r--
16824703 net-snmp can't get hrProcessorLoad dynamically after change the No. of CPUs. (rename patch)
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
     1
--- 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
     2
+++ 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
     3
@@ -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
     4
      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
     5
 };
1cda4e19a209 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
 
1cda4e19a209 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
+    /* 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
     8
+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
     9
+	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
    10
+	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
    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
 
1cda4e19a209 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
     /*
1cda4e19a209 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
      * 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
    15
@@ -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
    16
 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
    17
 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
    18
 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
    19
+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
    20
 
1cda4e19a209 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_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
    22
 int netsnmp_cpu_load( 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
    23
--- a/agent/mibgroup/hardware/cpu/cpu.c	2014-06-09 04:44:56.766855758 -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
    24
+++ b/agent/mibgroup/hardware/cpu/cpu.c	2014-06-19 05:07:54.648759853 -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
    25
@@ -244,3 +244,59 @@
1cda4e19a209 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
     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
    27
     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
    28
 }
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
    29
+
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
    30
+    /*
1cda4e19a209 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
+     * 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
    32
+     * 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
    33
+     * 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
    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
+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
    36
+{
1cda4e19a209 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
+    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
    38
+    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
    39
+    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
    40
+
1cda4e19a209 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
+    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
    42
+        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
    43
+        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
    44
+            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
    45
+        } 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
    46
+            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
    47
+            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
    48
+                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
    49
+            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
    50
+                /*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
    51
+                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
    52
+            }
1cda4e19a209 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
+
1cda4e19a209 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
+            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
    55
+            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
    56
+            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
    57
+                /* 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
    58
+            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
    59
+                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
    60
+                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
    61
+                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
    62
+                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
    63
+                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
    64
+            }
1cda4e19a209 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
+        }
1cda4e19a209 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
+    } /*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
    67
+
1cda4e19a209 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
+    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
    69
+        /* 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
    70
+        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
    71
+    }
1cda4e19a209 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
+    /* 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
    74
+    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
    75
+        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
    76
+        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
    77
+        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
    78
+        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
    79
+        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
    80
+     }
1cda4e19a209 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
+     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
    82
+     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
    83
+}
1cda4e19a209 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
+
1cda4e19a209 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
--- a/agent/mibgroup/hardware/cpu/cpu_kstat.c	2014-06-09 04:44:56.766680662 -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
    86
+++ b/agent/mibgroup/hardware/cpu/cpu_kstat.c	2014-06-19 04:53:47.176189429 -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
    87
@@ -17,16 +17,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
    88
 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
    89
 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
    90
 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
    91
+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
    92
+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
    93
 
1cda4e19a209 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
     /*
1cda4e19a209 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
      * Initialise the list of CPUs on the system
1cda4e19a209 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
      *   (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
    97
      */
1cda4e19a209 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
 void init_cpu_kstat( 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
    99
-    int               i, n=0, 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
   100
-    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
   101
+    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
   102
     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
   103
-    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
   104
     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
   105
     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
   106
 
1cda4e19a209 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
@@ -41,36 +41,50 @@
1cda4e19a209 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
         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
   109
             (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
   110
             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
   111
+            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
   112
             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
   113
-            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
   114
-            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
   115
-            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
   116
-            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
   117
-            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
   118
-                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
   119
-                    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
   120
-                    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
   121
-                } 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
   122
-                    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
   123
-                } 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
   124
-                    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
   125
-                    state[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
   126
-                } 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
   127
-                    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
   128
-                    state[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
   129
-                } 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
   130
-                    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
   131
-                }
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   132
-            }
1cda4e19a209 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
-            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
   134
-            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
   135
-            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
   136
-            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
   137
-                                 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
   138
-            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
   139
         }
1cda4e19a209 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
     }
1cda4e19a209 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
-    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
   142
+    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
   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
+
1cda4e19a209 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
+    /*
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   147
+     * 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
   148
+     */
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   149
+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
   150
+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
   151
+    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
   152
+    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
   153
+    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
   154
+    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
   155
+
1cda4e19a209 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
+    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
   157
+    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
   158
+    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
   159
+    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
   160
+
1cda4e19a209 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
+    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
   162
+        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
   163
+            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
   164
+            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
   165
+        } 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
   166
+            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
   167
+        } 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
   168
+            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
   169
+            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
   170
+        } 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
   171
+            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
   172
+            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
   173
+        } 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
   174
+            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
   175
+        }
1cda4e19a209 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
+    }
1cda4e19a209 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
+    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
   178
+    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
   179
+    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
   180
+    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
   181
+    cpu->status = _cpu_status(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
   182
 }
1cda4e19a209 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
 
1cda4e19a209 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
 
1cda4e19a209 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
@@ -78,11 +92,12 @@
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   186
      * 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
   187
      */
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   188
 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
   189
-    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
   190
+    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
   191
     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
   192
     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
   193
     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
   194
     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
   195
+    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
   196
 
1cda4e19a209 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
         /* 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
   198
     cpu->user_ticks = 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
   199
@@ -97,6 +112,32 @@
1cda4e19a209 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
     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
   202
     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
   203
+
1cda4e19a209 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
+     * 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
   206
+     * 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
   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
+    for (ksp = kstat_fd->kc_chain; ksp != NULL; ksp = ksp->ks_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
   209
+        if (ksp->ks_flags & KSTAT_FLAG_INVALID)
1cda4e19a209 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
+            continue;
1cda4e19a209 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
+        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
   212
+            (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
   213
+            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
   214
+            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
   215
+            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
   216
+            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
   217
+            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
   218
+                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
   219
+                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
   220
+            }
1cda4e19a209 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
+        }
1cda4e19a209 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
+    }
1cda4e19a209 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
+
1cda4e19a209 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
+    /* 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
   226
+    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
   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
+    /* Third - for updating stats for the new CPU set */
1cda4e19a209 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
     for (ksp = kstat_fd->kc_chain; ksp != NULL; ksp = ksp->ks_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
   230
         if (ksp->ks_flags & KSTAT_FLAG_INVALID)
1cda4e19a209 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
             continue;
1cda4e19a209 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
@@ -104,7 +145,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
   233
             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
   234
             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
   235
             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
   236
-                    break;  /* or continue ?*/ /*Skip new 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
   237
+                    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
   238
             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
   239
                 (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
   240
                 (kstat_read(kstat_fd, ksp, &cs) == -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
   241
@@ -138,9 +179,43 @@
1cda4e19a209 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
             cpu->nCtxSwitches += (unsigned long)cs.cpu_sysinfo.pswitch;
1cda4e19a209 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
         }
1cda4e19a209 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
     }
1cda4e19a209 16824703 net-snmp can't get "hrProcessorLoad" dynamically after change the No. of CPUs.
Mohana Rao Gorai <mohana.gorai@oracle.com>
parents:
diff changeset
   245
+    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
   246
+    /* 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
   247
+    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
   248
+        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
   249
+        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
   250
+        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
   251
+    }
1cda4e19a209 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
     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
   253
 }
1cda4e19a209 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
 
1cda4e19a209 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
+    /* 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
   256
+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
   257
+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
   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
+    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
   260
+    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
   261
+    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
   262
+        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
   263
+        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
   264
+    }
1cda4e19a209 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
+
1cda4e19a209 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
+    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
   267
+    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
   268
+        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
   269
+        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
   270
+    }
1cda4e19a209 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
+
1cda4e19a209 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
+    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
   273
+        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
   274
+            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
   275
+            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
   276
+            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
   277
+        }
1cda4e19a209 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
+    }
1cda4e19a209 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
+
1cda4e19a209 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
+}
1cda4e19a209 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
 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
   283
 _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
   284
 {