bool DT_Mdep_GetCpuStat(DT_CpuStat * cpu_stat) { unsigned long i, nice = 0; unsigned long jif = jiffies; int cpu, num_of_cpus; cpu_stat->user = 0; cpu_stat->system = 0; cpu_stat->idle = 0; num_of_cpus = 0; cpu = 0; // code for vanila 2.4 kernel #if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0)) && !defined RHAS3 for (i = 0; i < smp_num_cpus; i++) { cpu = cpu_logical_map(i); cpu_stat->user += (unsigned long)kstat.per_cpu_user[cpu]; nice += (unsigned long)kstat.per_cpu_nice[cpu]; cpu_stat->system += (unsigned long)kstat.per_cpu_system[cpu]; } // kernel 2.4 AS3.0 #elif (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0)) && defined RHAS3 cpu_stat->user = kstat_sum(accumulated_time.u_usec); cpu_stat->system = kstat_sum(accumulated_time.s_usec); nice = kstat_sum(accumulated_time.n_usec); // kernel 2.6 #elif LINUX_VERSION_CODE > KERNEL_VERSION(2,6,0) for (i = 0; i < NR_CPUS; i++) { if (cpu_possible(i)) { cpu_stat->system += kstat_cpu(i).cpustat.system; cpu_stat->user += kstat_cpu(i).cpustat.user; nice += kstat_cpu(i).cpustat.nice; num_of_cpus = +1; } } #endif cpu_stat->idle = (unsigned long)(jif * num_of_cpus - (cpu_stat->user + nice + cpu_stat->system)); return true; }
static void cn_print(int zflag, int vflag) { int field_width; field_width = getstats_nfs(); if (field_width == 0) return; if (vflag == 0) { kstat_sum(nfs_client_kstat, nfs4_client_kstat, ksum_kstat); stat_print("\nClient nfs:", ksum_kstat, &old_ksum_kstat.kst, field_width, zflag); } if (vflag == 2 || vflag == 3) { stat_print("\nClient nfs:", nfs_client_kstat, &old_nfs_client_kstat.kst, field_width, zflag); } if (vflag == 4) { stat_print("\nClient nfs:", nfs4_client_kstat, &old_nfs4_client_kstat.kst, field_width, zflag); } if (vflag == 2 || vflag == 0) { field_width = getstats_rfsreq(2); req_print(rfsreqcnt_v2_kstat, &old_rfsreqcnt_v2_kstat.kst, 2, field_width, zflag); } if (vflag == 3 || vflag == 0) { field_width = getstats_rfsreq(3); req_print(rfsreqcnt_v3_kstat, &old_rfsreqcnt_v3_kstat.kst, 3, field_width, zflag); } if (vflag == 4 || vflag == 0) { field_width = getstats_rfsreq(4); req_print_v4(rfsreqcnt_v4_kstat, &old_rfsreqcnt_v4_kstat.kst, field_width, zflag); } }