diff --git a/src/acconfig.h b/src/acconfig.h index e2a924e152262214c5387a461142dd6ebd9c33ff..0257e9540fd41234ff8b90721f0773f485b4a394 100644 --- a/src/acconfig.h +++ b/src/acconfig.h @@ -235,15 +235,6 @@ /* If so, is it restricted to user and system time? */ #undef GETRUSAGE_RESTRICTED -/* Solaris has rusage as an ioctl on procfs */ -#undef GETRUSAGE_THROUGH_PROCFS - -/* So has True64, but no useful information in prstatus_t */ -#undef GETRUSAGE_THROUGH_PROCFS_PRS - -/* Define if you have infnan */ -#undef HAVE_INFNAN - /* Define if you have _isnan */ #undef HAVE__ISNAN diff --git a/src/configure.in b/src/configure.in index 422689804bbf630941c14914d63f63ca734463f2..fbfa6c032e2054d088c4c759201549a8dff591cf 100644 --- a/src/configure.in +++ b/src/configure.in @@ -6379,84 +6379,6 @@ else AC_DEFINE(GETRUSAGE_RESTRICTED) fi -######################################################################## -# -# IRIX also has procfs support, but it it different, a separate test -# should be made. /Hubbe -# - -if test "$ac_cv_header_sys_procfs_h" = "yes"; then - AC_MSG_CHECKING(getrusage() through procfs) - AC_CACHE_VAL(pike_cv_getrusage_procfs, [ - 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]; -prusage_t pru; - ],[ - sprintf(proc_name, "/proc/%05d", getpid()); - proc_fd = open(proc_name, O_RDONLY); - ioctl(proc_fd, PIOCUSAGE, &pru); - tmp=pru.pr_utime.tv_sec; - ], - pike_cv_getrusage_procfs=yes - , - pike_cv_getrusage_procfs=no - ) - ]) - - if test "$pike_cv_getrusage_procfs" = yes; then - AC_MSG_RESULT(yes) - AC_DEFINE(GETRUSAGE_THROUGH_PROCFS) - else - AC_MSG_RESULT(no) - fi -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 - ############################################################################# # # __func__ is new in ISO C 9x diff --git a/src/rusage.c b/src/rusage.c index d0e8b873ed0d0740ad506f2f1003a67f6d415bc7..6de75936647ecd62043b2711e058afdde6926b32 100644 --- a/src/rusage.c +++ b/src/rusage.c @@ -137,99 +137,6 @@ PMOD_EXPORT int pike_get_rusage(pike_rusage_t rusage_values) } #else /* __NT__ */ -#ifdef GETRUSAGE_THROUGH_PROCFS -#include <sys/procfs.h> -#ifndef CONFIGURE_TEST -#include "fd_control.h" -#endif - -static INLINE long get_time_int(timestruc_t * val) -{ - return val->tv_sec * 1000L + val->tv_nsec / 1000000; -} - -static int proc_fd = -1; - -static int open_proc_fd() -{ - do { - char proc_name[30]; - sprintf(proc_name, "/proc/%05ld", (long)getpid()); - proc_fd = open(proc_name, O_RDONLY); - if(proc_fd >= 0) break; - if(errno != EINTR) return 0; - } while(proc_fd < 0); - -#ifndef CONFIGURE_TEST - set_close_on_exec(proc_fd, 1); -#endif - - return 1; -} - -PMOD_EXPORT int pike_get_rusage(pike_rusage_t rusage_values) -{ - prusage_t pru; -#ifdef GETRUSAGE_THROUGH_PROCFS_PRS - prstatus_t prs; -#endif - memset(rusage_values, 0, sizeof(pike_rusage_t)); - - if (proc_fd < 0 && !open_proc_fd()) return 0; - while(ioctl(proc_fd, PIOCUSAGE, &pru) < 0) - { - if(errno == EINTR) - continue; - - return 0; - } - -#ifdef GETRUSAGE_THROUGH_PROCFS_PRS - while(ioctl(proc_fd, PIOCSTATUS, &prs) < 0) - { - if(errno == EINTR) - continue; - - return 0; - } -#endif - - rusage_values[0] = get_time_int(&pru.pr_utime); /* user time */ - rusage_values[1] = get_time_int(&pru.pr_stime); /* system time */ - rusage_values[2] = 0; /* maxrss */ - rusage_values[3] = 0; /* ixrss */ - rusage_values[4] = 0; /* idrss */ - rusage_values[5] = 0; /* isrss */ - rusage_values[6] = pru.pr_minf; /* minor pagefaults */ - rusage_values[7] = pru.pr_majf; /* major pagefaults */ - rusage_values[8] = pru.pr_nswap; /* swaps */ - rusage_values[9] = pru.pr_inblk; /* block input op. */ - rusage_values[10] = pru.pr_oublk; /* block outout op. */ - rusage_values[11] = pru.pr_msnd; /* messages sent */ - rusage_values[12] = pru.pr_mrcv; /* messages received */ - rusage_values[13] = pru.pr_sigs; /* signals received */ - rusage_values[14] = pru.pr_vctx; /* voluntary context switches */ - rusage_values[15] = pru.pr_ictx; /* involuntary " " */ - rusage_values[16] = pru.pr_sysc; /* system calls */ - rusage_values[17] = pru.pr_ioch; /* chars read and written */ - rusage_values[18] = get_time_int(&pru.pr_rtime); /* total lwp real (elapsed) time */ - rusage_values[19] = get_time_int(&pru.pr_ttime); /* other system trap CPU time */ - rusage_values[20] = get_time_int(&pru.pr_tftime); /* text page fault sleep time */ - rusage_values[21] = get_time_int(&pru.pr_dftime); /* data page fault sleep time */ - rusage_values[22] = get_time_int(&pru.pr_kftime); /* kernel page fault sleep time */ - rusage_values[23] = get_time_int(&pru.pr_ltime); /* user lock wait sleep time */ - rusage_values[24] = get_time_int(&pru.pr_slptime); /* all other sleep time */ - rusage_values[25] = get_time_int(&pru.pr_wtime); /* wait-cpu (latency) time */ - rusage_values[26] = get_time_int(&pru.pr_stoptime); /* stopped time */ -#ifdef GETRUSAGE_THROUGH_PROCFS_PRS - rusage_values[27] = prs.pr_brksize; - rusage_values[28] = prs.pr_stksize; -#endif - - return 1; -} - -#else /* GETRUSAGE_THROUGH_PROCFS */ #ifdef HAVE_GETRUSAGE #include <sys/resource.h> #ifdef HAVE_SYS_RUSAGE @@ -319,7 +226,6 @@ PMOD_EXPORT int pike_get_rusage(pike_rusage_t rusage_values) #endif /* HAVE_TIMES */ #endif /* HAVE_GETRUSAGE */ -#endif /* GETRUSAGE_THROUGH_PROCFS */ #endif /* __NT__ */ /* @@ -584,31 +490,7 @@ PMOD_EXPORT cpu_time_t fallback_grt (void) #else /* !__NT__ && !HAVE_WORKING_GETHRVTIME */ #ifdef DEFINE_FALLBACK_GCT -#if defined (GETRUSAGE_THROUGH_PROCFS) - -PMOD_EXPORT const char fallback_gct_impl[] = "/proc/"; - -PMOD_EXPORT cpu_time_t fallback_gct (void) -{ - prstatus_t prs; - - if (proc_fd < 0 && !open_proc_fd()) return (cpu_time_t) -1; - while(ioctl(proc_fd, PIOCSTATUS, &prs) < 0) - { - if(errno == EINTR) - continue; - - return (cpu_time_t) -1; - } - - return - prs.pr_utime.tv_sec * CPU_TIME_TICKS + - NSEC_TO_CPU_TIME_T (prs.pr_utime.tv_nsec) + - prs.pr_stime.tv_sec * CPU_TIME_TICKS + - NSEC_TO_CPU_TIME_T (prs.pr_stime.tv_nsec); -} - -#elif defined (HAVE_THREAD_INFO) +#ifdef HAVE_THREAD_INFO /* Mach */