mirror of https://github.com/xzeldon/htop.git
Merge branch 'fix_mach_timebase' of benbe/htop
This commit is contained in:
commit
4b1a4a4ebd
|
@ -240,6 +240,11 @@ else
|
|||
AC_SEARCH_LIBS([keypad], [tinfo])
|
||||
fi
|
||||
|
||||
if test "$my_htop_platform" = "darwin"; then
|
||||
AC_CHECK_HEADERS([mach/mach_time.h])
|
||||
AC_CHECK_FUNCS([mach_timebase_info])
|
||||
fi
|
||||
|
||||
if test "$my_htop_platform" = "freebsd"; then
|
||||
AC_CHECK_LIB([kvm], [kvm_open], [], [missing_libraries="$missing_libraries libkvm"])
|
||||
fi
|
||||
|
|
|
@ -14,6 +14,7 @@ in the source distribution for its full text.
|
|||
#include <mach/mach.h>
|
||||
|
||||
#include "CRT.h"
|
||||
#include "Platform.h"
|
||||
#include "Process.h"
|
||||
|
||||
|
||||
|
@ -308,7 +309,7 @@ void DarwinProcess_setFromLibprocPidinfo(DarwinProcess* proc, DarwinProcessList*
|
|||
uint64_t diff = (pti.pti_total_system - proc->stime)
|
||||
+ (pti.pti_total_user - proc->utime);
|
||||
|
||||
proc->super.percent_cpu = (double)diff * (double)dpl->super.cpuCount
|
||||
proc->super.percent_cpu = (double)diff * (double)dpl->super.cpuCount * Platform_timebaseToNS
|
||||
/ ((double)dpl->global_diff * 100000.0);
|
||||
|
||||
// fprintf(stderr, "%f %llu %llu %llu %llu %llu\n", proc->super.percent_cpu,
|
||||
|
|
|
@ -6,22 +6,9 @@ Released under the GNU GPLv2, see the COPYING file
|
|||
in the source distribution for its full text.
|
||||
*/
|
||||
|
||||
#include "config.h" // IWYU pragma: keep
|
||||
|
||||
#include "Platform.h"
|
||||
#include "Macros.h"
|
||||
#include "CPUMeter.h"
|
||||
#include "MemoryMeter.h"
|
||||
#include "SwapMeter.h"
|
||||
#include "TasksMeter.h"
|
||||
#include "LoadAverageMeter.h"
|
||||
#include "ClockMeter.h"
|
||||
#include "DateMeter.h"
|
||||
#include "DateTimeMeter.h"
|
||||
#include "HostnameMeter.h"
|
||||
#include "ProcessLocksScreen.h"
|
||||
#include "UptimeMeter.h"
|
||||
#include "zfs/ZfsArcMeter.h"
|
||||
#include "zfs/ZfsCompressedArcMeter.h"
|
||||
#include "DarwinProcessList.h"
|
||||
|
||||
#include <math.h>
|
||||
#include <stdlib.h>
|
||||
|
@ -31,6 +18,27 @@ in the source distribution for its full text.
|
|||
#include <IOKit/ps/IOPowerSources.h>
|
||||
#include <IOKit/ps/IOPSKeys.h>
|
||||
|
||||
#include "ClockMeter.h"
|
||||
#include "CPUMeter.h"
|
||||
#include "DarwinProcessList.h"
|
||||
#include "DateMeter.h"
|
||||
#include "DateTimeMeter.h"
|
||||
#include "HostnameMeter.h"
|
||||
#include "LoadAverageMeter.h"
|
||||
#include "Macros.h"
|
||||
#include "MemoryMeter.h"
|
||||
#include "ProcessLocksScreen.h"
|
||||
#include "SwapMeter.h"
|
||||
#include "TasksMeter.h"
|
||||
#include "UptimeMeter.h"
|
||||
#include "zfs/ZfsArcMeter.h"
|
||||
#include "zfs/ZfsCompressedArcMeter.h"
|
||||
|
||||
#ifdef HAVE_MACH_MACH_TIME_H
|
||||
#include <mach/mach_time.h>
|
||||
#endif
|
||||
|
||||
|
||||
ProcessField Platform_defaultFields[] = { PID, USER, PRIORITY, NICE, M_VIRT, M_RESIDENT, STATE, PERCENT_CPU, PERCENT_MEM, TIME, COMM, 0 };
|
||||
|
||||
const SignalItem Platform_signals[] = {
|
||||
|
@ -104,8 +112,18 @@ const MeterClass* const Platform_meterTypes[] = {
|
|||
|
||||
int Platform_numberOfFields = LAST_PROCESSFIELD;
|
||||
|
||||
double Platform_timebaseToNS = 1.0;
|
||||
|
||||
void Platform_init(void) {
|
||||
/* no platform-specific setup needed */
|
||||
// Check if we can determine the timebase used on this system.
|
||||
// If the API is unavailable assume we get our timebase in nanoseconds.
|
||||
#ifdef HAVE_MACH_TIMEBASE_INFO
|
||||
mach_timebase_info_data_t info;
|
||||
mach_timebase_info(&info);
|
||||
Platform_timebaseToNS = (double)info.numer / (double)info.denom;
|
||||
#else
|
||||
Platform_timebaseToNS = 1.0;
|
||||
#endif
|
||||
}
|
||||
|
||||
void Platform_done(void) {
|
||||
|
|
|
@ -19,10 +19,14 @@ in the source distribution for its full text.
|
|||
#include "ProcessLocksScreen.h"
|
||||
#include "SignalsPanel.h"
|
||||
|
||||
extern ProcessFieldData Process_fields[];
|
||||
|
||||
extern ProcessField Platform_defaultFields[];
|
||||
|
||||
extern int Platform_numberOfFields;
|
||||
|
||||
extern double Platform_timebaseToNS;
|
||||
|
||||
extern const SignalItem Platform_signals[];
|
||||
|
||||
extern const unsigned int Platform_numberOfSignals;
|
||||
|
|
Loading…
Reference in New Issue