diff --git a/configure b/configure index 9ea343c9a1..3306741cfc 100755 --- a/configure +++ b/configure @@ -13874,7 +13874,7 @@ $as_echo "#define HAVE_STDBOOL_H 1" >>confdefs.h fi -for ac_header in atomic.h copyfile.h execinfo.h getopt.h ifaddrs.h langinfo.h mbarrier.h net/if.h netinet/tcp.h sys/epoll.h sys/event.h sys/personality.h sys/prctl.h sys/procctl.h sys/resource.h sys/signalfd.h sys/sockio.h sys/ucred.h termios.h ucred.h +for ac_header in atomic.h copyfile.h execinfo.h getopt.h ifaddrs.h langinfo.h mbarrier.h net/if.h netinet/tcp.h sys/epoll.h sys/event.h sys/personality.h sys/prctl.h sys/procctl.h sys/signalfd.h sys/sockio.h sys/ucred.h termios.h ucred.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" @@ -16734,12 +16734,6 @@ done ;; esac - case " $LIBOBJS " in - *" getrusage.$ac_objext "* ) ;; - *) LIBOBJS="$LIBOBJS getrusage.$ac_objext" - ;; -esac - case " $LIBOBJS " in *" kill.$ac_objext "* ) ;; *) LIBOBJS="$LIBOBJS kill.$ac_objext" @@ -16782,6 +16776,12 @@ esac ;; esac + case " $LIBOBJS " in + *" win32getrusage.$ac_objext "* ) ;; + *) LIBOBJS="$LIBOBJS win32getrusage.$ac_objext" + ;; +esac + case " $LIBOBJS " in *" win32link.$ac_objext "* ) ;; *) LIBOBJS="$LIBOBJS win32link.$ac_objext" diff --git a/configure.ac b/configure.ac index 8da9fc614d..19fe78339c 100644 --- a/configure.ac +++ b/configure.ac @@ -1459,7 +1459,6 @@ AC_CHECK_HEADERS(m4_normalize([ sys/personality.h sys/prctl.h sys/procctl.h - sys/resource.h sys/signalfd.h sys/sockio.h sys/ucred.h @@ -1897,7 +1896,6 @@ fi if test "$PORTNAME" = "win32"; then AC_CHECK_FUNCS(_configthreadlocale) AC_LIBOBJ(dirmod) - AC_LIBOBJ(getrusage) AC_LIBOBJ(kill) AC_LIBOBJ(open) AC_LIBOBJ(system) @@ -1905,6 +1903,7 @@ if test "$PORTNAME" = "win32"; then AC_LIBOBJ(win32env) AC_LIBOBJ(win32error) AC_LIBOBJ(win32fdatasync) + AC_LIBOBJ(win32getrusage) AC_LIBOBJ(win32link) AC_LIBOBJ(win32ntdll) AC_LIBOBJ(win32pread) diff --git a/src/backend/storage/file/fd.c b/src/backend/storage/file/fd.c index efb34d4dcb..e3b19ca1ed 100644 --- a/src/backend/storage/file/fd.c +++ b/src/backend/storage/file/fd.c @@ -75,6 +75,7 @@ #include #include #include +#include /* for getrlimit */ #include #include #ifndef WIN32 @@ -83,9 +84,6 @@ #include #include #include -#ifdef HAVE_SYS_RESOURCE_H -#include /* for getrlimit */ -#endif #include "access/xact.h" #include "access/xlog.h" diff --git a/src/backend/tcop/postgres.c b/src/backend/tcop/postgres.c index 671edcb3c7..7bec4e4ff5 100644 --- a/src/backend/tcop/postgres.c +++ b/src/backend/tcop/postgres.c @@ -23,16 +23,10 @@ #include #include #include +#include #include #include -#ifdef HAVE_SYS_RESOURCE_H #include -#include -#endif - -#ifdef WIN32 -#include "rusagestub.h" -#endif #include "access/parallel.h" #include "access/printtup.h" @@ -4860,7 +4854,7 @@ ShowUsage(const char *title) * The following rusage fields are not defined by POSIX, but they're * present on all current Unix-like systems so we use them without any * special checks. Some of these could be provided in our Windows - * emulation in src/port/getrusage.c with more work. + * emulation in src/port/win32getrusage.c with more work. */ appendStringInfo(&str, "!\t%ld kB max resident size\n", diff --git a/src/bin/pg_ctl/pg_ctl.c b/src/bin/pg_ctl/pg_ctl.c index 2762e8590d..73e20081d1 100644 --- a/src/bin/pg_ctl/pg_ctl.c +++ b/src/bin/pg_ctl/pg_ctl.c @@ -14,14 +14,12 @@ #include #include #include +#include #include +#include #include #include -#ifdef HAVE_SYS_RESOURCE_H -#include -#include -#endif #include "catalog/pg_control.h" #include "common/controldata_utils.h" diff --git a/src/bin/pgbench/pgbench.c b/src/bin/pgbench/pgbench.c index 45606e944d..c0e907d437 100644 --- a/src/bin/pgbench/pgbench.c +++ b/src/bin/pgbench/pgbench.c @@ -40,9 +40,7 @@ #include #include #include -#ifdef HAVE_SYS_RESOURCE_H #include /* for getrlimit */ -#endif /* For testing, PGBENCH_USE_SELECT can be defined to force use of that code */ #if defined(HAVE_PPOLL) && !defined(PGBENCH_USE_SELECT) diff --git a/src/include/pg_config.h.in b/src/include/pg_config.h.in index 5f96f71896..45faf05121 100644 --- a/src/include/pg_config.h.in +++ b/src/include/pg_config.h.in @@ -505,9 +505,6 @@ /* Define to 1 if you have the header file. */ #undef HAVE_SYS_PROCCTL_H -/* Define to 1 if you have the header file. */ -#undef HAVE_SYS_RESOURCE_H - /* Define to 1 if you have the header file. */ #undef HAVE_SYS_SIGNALFD_H diff --git a/src/include/port/win32/sys/resource.h b/src/include/port/win32/sys/resource.h new file mode 100644 index 0000000000..a14feeb584 --- /dev/null +++ b/src/include/port/win32/sys/resource.h @@ -0,0 +1,20 @@ +/* + * Replacement for for Windows. + */ +#ifndef WIN32_SYS_RESOURCE_H +#define WIN32_SYS_RESOURCE_H + +#include /* for struct timeval */ + +#define RUSAGE_SELF 0 +#define RUSAGE_CHILDREN (-1) + +struct rusage +{ + struct timeval ru_utime; /* user time used */ + struct timeval ru_stime; /* system time used */ +}; + +extern int getrusage(int who, struct rusage *rusage); + +#endif /* WIN32_SYS_RESOURCE_H */ diff --git a/src/include/rusagestub.h b/src/include/rusagestub.h deleted file mode 100644 index be26f849a5..0000000000 --- a/src/include/rusagestub.h +++ /dev/null @@ -1,31 +0,0 @@ -/*------------------------------------------------------------------------- - * - * rusagestub.h - * Stubs for getrusage(3). - * - * - * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group - * Portions Copyright (c) 1994, Regents of the University of California - * - * src/include/rusagestub.h - * - *------------------------------------------------------------------------- - */ -#ifndef RUSAGESTUB_H -#define RUSAGESTUB_H - -#include /* for struct timeval */ -#include /* for CLK_TCK */ - -#define RUSAGE_SELF 0 -#define RUSAGE_CHILDREN (-1) - -struct rusage -{ - struct timeval ru_utime; /* user time used */ - struct timeval ru_stime; /* system time used */ -}; - -extern int getrusage(int who, struct rusage *rusage); - -#endif /* RUSAGESTUB_H */ diff --git a/src/include/utils/pg_rusage.h b/src/include/utils/pg_rusage.h index a6344abd10..b2c4d36ced 100644 --- a/src/include/utils/pg_rusage.h +++ b/src/include/utils/pg_rusage.h @@ -14,13 +14,8 @@ #ifndef PG_RUSAGE_H #define PG_RUSAGE_H -#include - -#ifdef HAVE_SYS_RESOURCE_H #include -#else -#include "rusagestub.h" -#endif +#include /* State structure for pg_rusage_init/pg_rusage_show */ diff --git a/src/port/getrusage.c b/src/port/win32getrusage.c similarity index 88% rename from src/port/getrusage.c rename to src/port/win32getrusage.c index 2ba59ade2c..8f3556f63b 100644 --- a/src/port/getrusage.c +++ b/src/port/win32getrusage.c @@ -1,6 +1,6 @@ /*------------------------------------------------------------------------- * - * getrusage.c + * win32getrusage.c * get information about resource utilisation * * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group @@ -8,19 +8,14 @@ * * * IDENTIFICATION - * src/port/getrusage.c + * src/port/win32getrusage.c * *------------------------------------------------------------------------- */ #include "c.h" -#include "rusagestub.h" - -/* - * This code works on Windows, which is the only supported platform without a - * native version of getrusage(). - */ +#include int getrusage(int who, struct rusage *rusage) diff --git a/src/test/regress/pg_regress.c b/src/test/regress/pg_regress.c index 04ab513b7c..e015a11c21 100644 --- a/src/test/regress/pg_regress.c +++ b/src/test/regress/pg_regress.c @@ -19,16 +19,13 @@ #include "postgres_fe.h" #include +#include #include +#include #include #include #include -#ifdef HAVE_SYS_RESOURCE_H -#include -#include -#endif - #include "common/logging.h" #include "common/restricted_token.h" #include "common/string.h" diff --git a/src/tools/msvc/Mkvcbuild.pm b/src/tools/msvc/Mkvcbuild.pm index bacc920758..0a4f0d2eaa 100644 --- a/src/tools/msvc/Mkvcbuild.pm +++ b/src/tools/msvc/Mkvcbuild.pm @@ -100,7 +100,7 @@ sub mkvcbuild our @pgportfiles = qw( chklocale.c explicit_bzero.c - getpeereid.c getrusage.c inet_aton.c + getpeereid.c inet_aton.c getaddrinfo.c inet_net_ntop.c kill.c open.c snprintf.c strlcat.c strlcpy.c dirmod.c noblock.c path.c dirent.c getopt.c getopt_long.c @@ -111,6 +111,7 @@ sub mkvcbuild win32dlopen.c win32env.c win32error.c win32fdatasync.c + win32getrusage.c win32gettimeofday.c win32link.c win32pread.c diff --git a/src/tools/msvc/Solution.pm b/src/tools/msvc/Solution.pm index 3f69618c4a..df594b2fe7 100644 --- a/src/tools/msvc/Solution.pm +++ b/src/tools/msvc/Solution.pm @@ -364,7 +364,6 @@ sub GenerateFiles HAVE_SYS_PERSONALITY_H => undef, HAVE_SYS_PRCTL_H => undef, HAVE_SYS_PROCCTL_H => undef, - HAVE_SYS_RESOURCE_H => undef, HAVE_SYS_SIGNALFD_H => undef, HAVE_SYS_SOCKIO_H => undef, HAVE_SYS_STAT_H => 1, diff --git a/src/tools/pginclude/cpluspluscheck b/src/tools/pginclude/cpluspluscheck index 6f336deae8..a212059480 100755 --- a/src/tools/pginclude/cpluspluscheck +++ b/src/tools/pginclude/cpluspluscheck @@ -71,6 +71,7 @@ do # Additional Windows-specific headers. test "$f" = src/include/port/win32_port.h && continue + test "$f" = src/include/port/win32/sys/resource.h && continue test "$f" = src/include/port/win32/sys/socket.h && continue test "$f" = src/include/port/win32_msvc/dirent.h && continue test "$f" = src/include/port/win32_msvc/utime.h && continue @@ -90,10 +91,6 @@ do test "$f" = src/include/port/atomics/generic-msvc.h && continue test "$f" = src/include/port/atomics/generic-sunpro.h && continue - # rusagestub.h is also platform-specific, and will be included - # by utils/pg_rusage.h if necessary. - test "$f" = src/include/rusagestub.h && continue - # sepgsql.h depends on headers that aren't there on most platforms. test "$f" = contrib/sepgsql/sepgsql.h && continue diff --git a/src/tools/pginclude/headerscheck b/src/tools/pginclude/headerscheck index ae60ef09e6..bbe89dd1a0 100755 --- a/src/tools/pginclude/headerscheck +++ b/src/tools/pginclude/headerscheck @@ -86,10 +86,6 @@ do test "$f" = src/include/port/atomics/generic-msvc.h && continue test "$f" = src/include/port/atomics/generic-sunpro.h && continue - # rusagestub.h is also platform-specific, and will be included - # by utils/pg_rusage.h if necessary. - test "$f" = src/include/rusagestub.h && continue - # sepgsql.h depends on headers that aren't there on most platforms. test "$f" = contrib/sepgsql/sepgsql.h && continue