Skip to content
Snippets Groups Projects
Commit 76aa1f9c authored by Fredrik Hübinette (Hubbe)'s avatar Fredrik Hübinette (Hubbe)
Browse files

RUSAGE_THROUGH_PROCFS should now work on Tru64

Rev: src/acconfig.h:1.55
Rev: src/configure.in:1.351
Rev: src/rusage.c:1.12
parent 26ab0a03
Branches
Tags
No related merge requests found
/* /*
* $Id: acconfig.h,v 1.54 2000/03/04 16:24:37 grubba Exp $ * $Id: acconfig.h,v 1.55 2000/03/25 23:43:25 hubbe Exp $
*/ */
#ifndef MACHINE_H #ifndef MACHINE_H
#define MACHINE_H #define MACHINE_H
...@@ -110,6 +110,9 @@ ...@@ -110,6 +110,9 @@
/* Solaris has rusage as an ioctl on procfs */ /* Solaris has rusage as an ioctl on procfs */
#undef GETRUSAGE_THROUGH_PROCFS #undef GETRUSAGE_THROUGH_PROCFS
/* So has True64, but no useful information in prstatus_t */
#undef GETRUSAGE_THROUGH_PROCFS_PRS
/* Define if you have fork */ /* Define if you have fork */
#undef HAVE_FORK #undef HAVE_FORK
......
AC_REVISION("$Id: configure.in,v 1.350 2000/03/22 00:55:36 hubbe Exp $") AC_REVISION("$Id: configure.in,v 1.351 2000/03/25 23:43:25 hubbe Exp $")
AC_INIT(interpret.c) AC_INIT(interpret.c)
AC_CONFIG_HEADER(machine.h) AC_CONFIG_HEADER(machine.h)
...@@ -2898,12 +2898,10 @@ int proc_fd; ...@@ -2898,12 +2898,10 @@ int proc_fd;
long tmp; long tmp;
char proc_name[20]; char proc_name[20];
prusage_t pru; prusage_t pru;
prstatus_t prs;
],[ ],[
sprintf(proc_name, "/proc/%05d", getpid()); sprintf(proc_name, "/proc/%05d", getpid());
proc_fd = open(proc_name, O_RDONLY); proc_fd = open(proc_name, O_RDONLY);
ioctl(proc_fd, PIOCUSAGE, &pru); ioctl(proc_fd, PIOCUSAGE, &pru);
ioctl(proc_fd, PIOCSTATUS, &prs);
tmp=pru.pr_utime.tv_sec; tmp=pru.pr_utime.tv_sec;
], ],
pike_cv_getrusage_procfs=yes pike_cv_getrusage_procfs=yes
...@@ -2922,6 +2920,43 @@ fi ...@@ -2922,6 +2920,43 @@ fi
############################################################################# #############################################################################
if test "$ac_cv_getrusage_procfs" = "yes"; then
AC_MSG_CHECKING(prstatus_t contains pr_brksize and pr_stksize)
AC_CACHE_VAL(pike_cv_getrusage_procfs_prs, [
AC_TRY_COMPILE([
#ifndef _LARGEFILE_SOURCE
# define _FILE_OFFSET_BITS 64
# define _LARGEFILE_SOURCE
# define _LARGEFILE64_SOURCE 1
#endif
#include <sys/procfs.h>
#include <sys/fcntl.h>
int proc_fd;
long tmp;
char proc_name[20];
prstatus_t prs;
],[
sprintf(proc_name, "/proc/%05d", getpid());
proc_fd = open(proc_name, O_RDONLY);
ioctl(proc_fd, PIOCSTATUS, &prs);
tmp=prs.pr_brksize + prs.pr_stksize;
],
pike_cv_getrusage_procfs_prs=yes
,
pike_cv_getrusage_procfs_prs=no
)
])
if test "$pike_cv_getrusage_procfs_prs" = yes; then
AC_MSG_RESULT(yes)
AC_DEFINE(GETRUSAGE_THROUGH_PROCFS_PRS)
else
AC_MSG_RESULT(no)
fi
fi
#############################################################################
AC_MSG_CHECKING(for isgraph) AC_MSG_CHECKING(for isgraph)
AC_CACHE_VAL(pike_cv_func_isgraph, [ AC_TRY_LINK([ AC_CACHE_VAL(pike_cv_func_isgraph, [ AC_TRY_LINK([
#include <ctype.h> #include <ctype.h>
......
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
#include <errno.h> #include <errno.h>
#include "rusage.h" #include "rusage.h"
RCSID("$Id: rusage.c,v 1.11 1998/06/10 19:23:30 hubbe Exp $"); RCSID("$Id: rusage.c,v 1.12 2000/03/25 23:43:25 hubbe Exp $");
#ifdef HAVE_SYS_TIMES_H #ifdef HAVE_SYS_TIMES_H
#include <sys/times.h> #include <sys/times.h>
...@@ -45,7 +45,9 @@ int proc_fd = -1; ...@@ -45,7 +45,9 @@ int proc_fd = -1;
INT32 *low_rusage(void) INT32 *low_rusage(void)
{ {
prusage_t pru; prusage_t pru;
#ifdef GETRUSAGE_THROUGH_PROCFS_PRS
prstatus_t prs; prstatus_t prs;
#endif
while(proc_fd < 0) while(proc_fd < 0)
{ {
...@@ -67,6 +69,7 @@ INT32 *low_rusage(void) ...@@ -67,6 +69,7 @@ INT32 *low_rusage(void)
return 0; return 0;
} }
#ifdef GETRUSAGE_THROUGH_PROCFS_PRS
while(ioctl(proc_fd, PIOCSTATUS, &prs) < 0) while(ioctl(proc_fd, PIOCSTATUS, &prs) < 0)
{ {
if(errno == EINTR) if(errno == EINTR)
...@@ -74,6 +77,7 @@ INT32 *low_rusage(void) ...@@ -74,6 +77,7 @@ INT32 *low_rusage(void)
return 0; return 0;
} }
#endif
rusage_values[0] = get_time_int(&pru.pr_utime); /* user time */ rusage_values[0] = get_time_int(&pru.pr_utime); /* user time */
rusage_values[1] = get_time_int(&pru.pr_stime); /* system time */ rusage_values[1] = get_time_int(&pru.pr_stime); /* system time */
...@@ -102,8 +106,13 @@ INT32 *low_rusage(void) ...@@ -102,8 +106,13 @@ INT32 *low_rusage(void)
rusage_values[24] = get_time_int(&pru.pr_slptime); rusage_values[24] = get_time_int(&pru.pr_slptime);
rusage_values[25] = get_time_int(&pru.pr_wtime); rusage_values[25] = get_time_int(&pru.pr_wtime);
rusage_values[26] = get_time_int(&pru.pr_stoptime); rusage_values[26] = get_time_int(&pru.pr_stoptime);
#ifdef GETRUSAGE_THROUGH_PROCFS_PRS
rusage_values[27] = prs.pr_brksize; rusage_values[27] = prs.pr_brksize;
rusage_values[28] = prs.pr_stksize; rusage_values[28] = prs.pr_stksize;
#else
rusage_values[27] = 0;
rusage_values[28] = 0;
#endif
return & rusage_values[0]; return & rusage_values[0];
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment