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]