You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							81 lines
						
					
					
						
							2.9 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							81 lines
						
					
					
						
							2.9 KiB
						
					
					
				| dnl -*- Autoconf -*- | |
| dnl Copyright (C) 1993-2003 Free Software Foundation, Inc. | |
| dnl This file is free software, distributed under the terms of the GNU | |
| dnl General Public License.  As a special exception to the GNU General | |
| dnl Public License, this file may be distributed as part of a program | |
| dnl that contains a configuration script generated by Autoconf, under | |
| dnl the same distribution terms as the rest of that program. | |
| 
 | |
| dnl From Bruno Haible, Marcus Daniels, Sam Steingold, Peter Burwood, Sam Steingold. | |
| 
 | |
| AC_PREREQ(2.57) | |
| 
 | |
| AC_DEFUN([CL_RUSAGE], | |
| [AC_CHECK_HEADERS(sys/resource.h sys/times.h)dnl | |
| if test $ac_cv_header_sys_resource_h = yes; then | |
|   dnl HAVE_SYS_RESOURCE_H defined | |
|   CL_LINK_CHECK([getrusage], cl_cv_func_getrusage, | |
| [#include <sys/types.h> /* NetBSD 1.0 needs this */ | |
| #include <sys/time.h> | |
| #include <sys/resource.h>], | |
|     [struct rusage x; int y = RUSAGE_SELF; getrusage(y,&x); x.ru_utime.tv_sec;])dnl | |
|   if test $cl_cv_func_getrusage = yes; then | |
|     CL_PROTO([getrusage], [ | |
|     CL_PROTO_TRY([ | |
| #include <stdlib.h> | |
| #ifdef HAVE_UNISTD_H | |
| #include <unistd.h> | |
| #endif | |
| #include <sys/types.h> /* NetBSD 1.0 needs this */ | |
| #include <sys/time.h> | |
| #include <sys/resource.h> | |
| ], | |
| [int getrusage (int who, struct rusage * rusage);], | |
| [int getrusage();], | |
| [cl_cv_proto_getrusage_arg1="int"], | |
| [cl_cv_proto_getrusage_arg1="enum __rusage_who"]) | |
| ], [extern int getrusage ($cl_cv_proto_getrusage_arg1, struct rusage *);])dnl | |
|     AC_CACHE_CHECK(whether getrusage works, cl_cv_func_getrusage_works, [ | |
|     AC_TRY_RUN([ | |
| #include <stdio.h> | |
| #include <sys/types.h> /* NetBSD 1.0 needs this */ | |
| #include <sys/time.h> | |
| #include <time.h> /* for time(2) */ | |
| #include <sys/resource.h> | |
| int main () | |
| { | |
|   struct rusage used, prev; | |
|   time_t end = time(NULL)+2; | |
|   int count = 0; | |
| 
 | |
|   if ((count = getrusage(RUSAGE_SELF, &prev))) { | |
|     /* getrusage is defined but does not do anything. */ | |
|     /*fprintf(stderr,"getrusage failed: return=%d\n",count);*/ | |
|     return 1; | |
|   } | |
|   while (time(NULL) < end) { | |
|     count++; | |
|     getrusage(RUSAGE_SELF, &used); | |
|     if ((used.ru_utime.tv_usec != prev.ru_utime.tv_usec) | |
|         || (used.ru_utime.tv_sec != prev.ru_utime.tv_sec) | |
|         || (used.ru_stime.tv_usec != prev.ru_stime.tv_usec) | |
|         || (used.ru_stime.tv_sec != prev.ru_stime.tv_sec)) { | |
|       /*fprintf(stderr,"success after %d runs\n",count);*/ | |
|       return 0; | |
|     } | |
|   } | |
|   /* getrusage is defined but does not work. */ | |
|   /*fprintf(stderr,"failure after %d runs\n",count);*/ | |
|   return 1; | |
| }], | |
| cl_cv_func_getrusage_works=yes, | |
| cl_cv_func_getrusage_works=no, | |
| dnl When cross-compiling, don't assume anything. | |
| cl_cv_func_getrusage_works="guessing no")]) | |
|   fi | |
|   if test "$cl_cv_func_getrusage_works" = yes; then | |
|     AC_DEFINE(HAVE_GETRUSAGE,,[have <sys/time.h>, the getrusage() function, the struct rusage type, and <sys/resource.h> defines RUSAGE_SELF]) | |
|     AC_DEFINE_UNQUOTED(RUSAGE_WHO_T,$cl_cv_proto_getrusage_arg1,[type of `who' in getrusage() declaration]) | |
|   fi | |
| fi | |
| ])
 |