Made some checks solaris only.

* configure.in: Made some checks solaris only.
This commit is contained in:
Benoît Dejean
2005-07-05 23:05:20 +00:00
parent efeca4a865
commit b6a10fd8f7
5 changed files with 52 additions and 31 deletions

View File

@@ -195,28 +195,33 @@ AH_TEMPLATE(HAVE_VMGETINFO, [Define to 1 if you have the 'vmgetinfo' function in
AC_CHECK_LIB(perfstat, vmgetinfo, AC_DEFINE(HAVE_VMGETINFO)) AC_CHECK_LIB(perfstat, vmgetinfo, AC_DEFINE(HAVE_VMGETINFO))
dnl Solaris dnl Solaris
AC_CHECK_LIB(kstat, kstat_open) case "$host_os" in
AC_CHECK_FUNCS(getloadavg swapctl) solaris*)
AC_CHECK_HEADERS(procfs.h sys/procfs.h, break) AC_CHECK_LIB(kstat, kstat_open)
AC_CHECK_FUNCS(getloadavg swapctl)
AC_CHECK_HEADERS(procfs.h sys/procfs.h, break)
dnl Some versions of Solaris require -lelf for -lkvm
AC_CHECK_LIB(kvm, kvm_open,[ dnl Some versions of Solaris require -lelf for -lkvm
LIBS="-lkvm $LIBS" AC_CHECK_LIB(kvm, kvm_open,[
],[AC_MSG_CHECKING(for kvm_open in -lkvm with -lelf) LIBS="-lkvm $LIBS"
AC_CACHE_VAL(ac_cv_lib_kvm_with_elf, ],[AC_MSG_CHECKING(for kvm_open in -lkvm with -lelf)
[ac_save_LIBS="$LIBS" AC_CACHE_VAL(ac_cv_lib_kvm_with_elf,
LIBS="-lkvm -lelf $LIBS" [ac_save_LIBS="$LIBS"
AC_TRY_LINK([char kvm_open();], [kvm_open()], LIBS="-lkvm -lelf $LIBS"
ac_cv_lib_kvm_with_elf=yes, ac_cv_lib_kvm_with_elf=no) AC_TRY_LINK([char kvm_open();], [kvm_open()],
LIBS="$ac_save_LIBS" ac_cv_lib_kvm_with_elf=yes, ac_cv_lib_kvm_with_elf=no)
]) LIBS="$ac_save_LIBS"
if test "$ac_cv_lib_kvm_with_elf" = "yes"; then ])
AC_MSG_RESULT(yes) if test "$ac_cv_lib_kvm_with_elf" = "yes"; then
LIBS="-lkvm -lelf $LIBS" AC_MSG_RESULT(yes)
else LIBS="-lkvm -lelf $LIBS"
AC_MSG_RESULT(no) else
fi AC_MSG_RESULT(no)
]) fi
])
;;
esac
dnl For DEC OSF1 dnl For DEC OSF1
AC_CHECK_LIB(mach, vm_statistics) AC_CHECK_LIB(mach, vm_statistics)

View File

@@ -96,3 +96,20 @@ file_to_buffer(glibtop *server, char *buffer, const char *filename)
} }
unsigned long
get_boot_time(glibtop *server)
{
char buffer[BUFSIZ];
char *btime;
file_to_buffer(server, buffer, "/proc/stat");
btime = strstr(buffer, "btime");
g_return_val_if_fail(btime != NULL, 0UL);
btime = skip_token(btime);
return strtoul(btime, NULL, 10);
}

View File

@@ -111,6 +111,12 @@ proc_stat_after_cmd (char *p)
*p++ = '\0'; *p++ = '\0';
return p; return p;
} }
unsigned long
get_boot_time(glibtop *server) G_GNUC_INTERNAL;
G_END_DECLS G_END_DECLS
#endif /* __LINUX__GLIBTOP_PRIVATE_H__ */ #endif /* __LINUX__GLIBTOP_PRIVATE_H__ */

View File

@@ -87,11 +87,7 @@ glibtop_get_proc_time_s (glibtop *server, glibtop_proc_time *buf, pid_t pid)
/* seconds since epoch */ /* seconds since epoch */
{ {
/* Linux provides start_time as clock_t representing /*
the start of <pid> after boot_time.
Let's use glibtop_get_uptime to get boot_time.
But i'm not sure if this is safe
See libgtop documentation. See libgtop documentation.
#ifdef __KERNEL__ #ifdef __KERNEL__
@@ -109,10 +105,7 @@ glibtop_get_proc_time_s (glibtop *server, glibtop_proc_time *buf, pid_t pid)
system clock is not synchronised with you hardware clock. system clock is not synchronised with you hardware clock.
'man hwclock' 'man hwclock'
*/ */
glibtop_uptime up; buf->start_time = get_boot_time(server) + strtoull (p, &p, 0) / 100;
glibtop_get_uptime_s(server, &up);
buf->start_time = up.boot_time + strtoull (p, &p, 0) / 100;
} }
buf->frequency = 100; buf->frequency = 100;

View File

@@ -57,7 +57,7 @@ glibtop_get_uptime_s (glibtop *server, glibtop_uptime *buf)
buf->uptime = g_ascii_strtod (buffer, &p); buf->uptime = g_ascii_strtod (buffer, &p);
buf->idletime = g_ascii_strtod (p, &p); buf->idletime = g_ascii_strtod (p, &p);
buf->boot_time = (guint64) time(NULL) - (guint64) buf->uptime; buf->boot_time = get_boot_time(server);
buf->flags = _glibtop_sysdeps_uptime; buf->flags = _glibtop_sysdeps_uptime;
} }