Author: rjung
Date: Fri May 12 16:11:02 2006
New Revision: 405932

URL: http://svn.apache.org/viewcvs?rev=405932&view=rev
Log:
Changes for Solaris:
- proper casting to allow bigger counters, especially for memory
- prepare for the case, that the number of system ticks per second
  gets bigger than 1000.

Modified:
    tomcat/connectors/trunk/jni/native/os/unix/system.c

Modified: tomcat/connectors/trunk/jni/native/os/unix/system.c
URL: 
http://svn.apache.org/viewcvs/tomcat/connectors/trunk/jni/native/os/unix/system.c?rev=405932&r1=405931&r2=405932&view=diff
==============================================================================
--- tomcat/connectors/trunk/jni/native/os/unix/system.c (original)
+++ tomcat/connectors/trunk/jni/native/os/unix/system.c Fri May 12 16:11:02 2006
@@ -172,23 +172,23 @@
         else {
             ret_sysconf = sysconf(_SC_PHYS_PAGES);
             if (ret_sysconf >= 0) {
-                pvals[0] = (jlong)(sys_pagesize * ret_sysconf);
+                pvals[0] = (jlong)((jlong)sys_pagesize * ret_sysconf);
             }
             else {
                 rv = apr_get_os_error();
             }
             ret_sysconf = sysconf(_SC_AVPHYS_PAGES);
             if (ret_sysconf >= 0) {
-                pvals[1] = (jlong)(sys_pagesize*ret_sysconf);
+                pvals[1] = (jlong)((jlong)sys_pagesize * ret_sysconf);
             }
             else {
                 rv = apr_get_os_error();
             }
             res=swapctl(SC_AINFO, &info);
             if (res >= 0) {
-                pvals[2] = (jlong)(sys_pagesize*info.ani_max);
-                pvals[3] = (jlong)(sys_pagesize*info.ani_free);
-                pvals[6] = (jlong)(100 - (info.ani_free * 100 / info.ani_max));
+                pvals[2] = (jlong)((jlong)sys_pagesize * info.ani_max);
+                pvals[3] = (jlong)((jlong)sys_pagesize * info.ani_free);
+                pvals[6] = (jlong)(100 - (jlong)info.ani_free * 100 / 
info.ani_max);
             }
             else {
                 rv = apr_get_os_error();
@@ -222,9 +222,9 @@
                                          prusg.pr_create.tv_sec));
             }
             pvals[10] = (jlong)(creation);
-            pvals[11] = (jlong)(prusg.pr_stime.tv_sec * 1000 +
+            pvals[11] = (jlong)((jlong)prusg.pr_stime.tv_sec * 1000 +
                                 (prusg.pr_stime.tv_nsec / 1000000));
-            pvals[12] = (jlong)(prusg.pr_utime.tv_sec * 1000 +
+            pvals[12] = (jlong)((jlong)prusg.pr_utime.tv_sec * 1000 +
                                 (prusg.pr_utime.tv_nsec / 1000000));
             pvals[15] = (jlong)(prusg.pr_majf);
         }
@@ -278,10 +278,17 @@
                 if (new_kid >= 0) {
                     long tck_r = tck_dividend / tck_divisor;
                     cpu = ((cpu_stat_t *)kstat_cpu[i]->ks_data)->cpu_sysinfo;
-                    pvals[7] += (jlong)(((long)cpu.cpu[CPU_IDLE]) * tck_r);
-                    pvals[7] += (jlong)(((long)cpu.cpu[CPU_WAIT]) * tck_r);
-                    pvals[8] += (jlong)(((long)cpu.cpu[CPU_KERNEL]) * tck_r);
-                    pvals[9] += (jlong)(((long)cpu.cpu[CPU_USER]) * tck_r);
+                    if ( tck_divisor == 1 ) {
+                        pvals[7] += (jlong)(((jlong)cpu.cpu[CPU_IDLE]) * 
tck_dividend);
+                        pvals[7] += (jlong)(((jlong)cpu.cpu[CPU_WAIT]) * 
tck_dividend);
+                        pvals[8] += (jlong)(((jlong)cpu.cpu[CPU_KERNEL]) * 
tck_dividend);
+                        pvals[9] += (jlong)(((jlong)cpu.cpu[CPU_USER]) * 
tck_dividend);
+                    } else {
+                        pvals[7] += (jlong)(((jlong)cpu.cpu[CPU_IDLE]) * 
tck_dividend / tck_divisor);
+                        pvals[7] += (jlong)(((jlong)cpu.cpu[CPU_WAIT]) * 
tck_dividend / tck_divisor);
+                        pvals[8] += (jlong)(((jlong)cpu.cpu[CPU_KERNEL]) * 
tck_dividend / tck_divisor);
+                        pvals[9] += (jlong)(((jlong)cpu.cpu[CPU_USER]) * 
tck_dividend / tck_divisor);
+                    }
                 }
             }
         }



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to