0005-Remove-configure-probe-for-sys-resource.h-and-refact.patch
application/octet-stream
Filename: 0005-Remove-configure-probe-for-sys-resource.h-and-refact.patch
Type: application/octet-stream
Part: 4
Patch
Format: format-patch
Series: patch 0005
Subject: Remove configure probe for sys/resource.h and refactor.
| File | + | − |
|---|---|---|
| configure | 7 | 7 |
| configure.ac | 1 | 2 |
| src/backend/storage/file/fd.c | 1 | 3 |
| src/backend/tcop/postgres.c | 2 | 8 |
| src/bin/pgbench/pgbench.c | 0 | 2 |
| src/bin/pg_ctl/pg_ctl.c | 2 | 4 |
| src/include/pg_config.h.in | 0 | 3 |
| src/include/port/win32/sys/resource.h | 21 | 0 |
| src/include/rusagestub.h | 0 | 31 |
| src/include/utils/pg_rusage.h | 1 | 6 |
| src/port/win32getrusage.c | 3 | 8 |
| src/test/regress/pg_regress.c | 2 | 5 |
| src/tools/msvc/Mkvcbuild.pm | 2 | 1 |
| src/tools/msvc/Solution.pm | 0 | 1 |
| src/tools/pginclude/cpluspluscheck | 1 | 4 |
From ebc039c010ee0b47f0c0c2216dbb4bca5e2c96c3 Mon Sep 17 00:00:00 2001
From: Thomas Munro <thomas.munro@gmail.com>
Date: Thu, 11 Aug 2022 16:23:55 +1200
Subject: [PATCH 5/7] Remove configure probe for sys/resource.h and refactor.
<sys/resource.h> is in SUSv2 and is on all targeted Unix systems. We
have a replacement implementation for just getrusage() on Windows, so
let's just move its declarations into
src/include/port/win32/sys/resource.h so that we can use a
standard-looking #include. Also rename src/port/getrusage.c to
win32getrusage.c following the convention for Windows-only fallback
code.
---
configure | 14 +++++-----
configure.ac | 3 +--
src/backend/storage/file/fd.c | 4 +--
src/backend/tcop/postgres.c | 10 ++-----
src/bin/pg_ctl/pg_ctl.c | 6 ++---
src/bin/pgbench/pgbench.c | 2 --
src/include/pg_config.h.in | 3 ---
src/include/port/win32/sys/resource.h | 21 +++++++++++++++
src/include/rusagestub.h | 31 ----------------------
src/include/utils/pg_rusage.h | 7 +----
src/port/{getrusage.c => win32getrusage.c} | 11 +++-----
src/test/regress/pg_regress.c | 7 ++---
src/tools/msvc/Mkvcbuild.pm | 3 ++-
src/tools/msvc/Solution.pm | 1 -
src/tools/pginclude/cpluspluscheck | 5 +---
15 files changed, 43 insertions(+), 85 deletions(-)
create mode 100644 src/include/port/win32/sys/resource.h
delete mode 100644 src/include/rusagestub.h
rename src/port/{getrusage.c => win32getrusage.c} (88%)
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 <dirent.h>
#include <sys/file.h>
#include <sys/param.h>
+#include <sys/resource.h> /* for getrlimit */
#include <sys/stat.h>
#include <sys/types.h>
#ifndef WIN32
@@ -83,9 +84,6 @@
#include <limits.h>
#include <unistd.h>
#include <fcntl.h>
-#ifdef HAVE_SYS_RESOURCE_H
-#include <sys/resource.h> /* 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 <limits.h>
#include <signal.h>
#include <unistd.h>
+#include <sys/resource.h>
#include <sys/select.h>
#include <sys/socket.h>
-#ifdef HAVE_SYS_RESOURCE_H
#include <sys/time.h>
-#include <sys/resource.h>
-#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 <fcntl.h>
#include <signal.h>
#include <time.h>
+#include <sys/resource.h>
#include <sys/stat.h>
+#include <sys/time.h>
#include <sys/wait.h>
#include <unistd.h>
-#ifdef HAVE_SYS_RESOURCE_H
-#include <sys/time.h>
-#include <sys/resource.h>
-#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 <signal.h>
#include <time.h>
#include <sys/time.h>
-#ifdef HAVE_SYS_RESOURCE_H
#include <sys/resource.h> /* 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 <sys/procctl.h> header file. */
#undef HAVE_SYS_PROCCTL_H
-/* Define to 1 if you have the <sys/resource.h> header file. */
-#undef HAVE_SYS_RESOURCE_H
-
/* Define to 1 if you have the <sys/signalfd.h> 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..53a6e7eea0
--- /dev/null
+++ b/src/include/port/win32/sys/resource.h
@@ -0,0 +1,21 @@
+/*
+ * Replacement for <sys/resource.h> for Windows.
+ */
+#ifndef WIN32_SYS_RESOURCE_H
+#define WIN32_SYS_RESOURCE_H
+
+#include <sys/time.h> /* for struct timeval */
+#include <limits.h> /* 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 /* 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 <sys/time.h> /* for struct timeval */
-#include <limits.h> /* 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 <sys/time.h>
-
-#ifdef HAVE_SYS_RESOURCE_H
#include <sys/resource.h>
-#else
-#include "rusagestub.h"
-#endif
+#include <sys/time.h>
/* 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 <sys/resource.h>
int
getrusage(int who, struct rusage *rusage)
diff --git a/src/test/regress/pg_regress.c b/src/test/regress/pg_regress.c
index b7aa5752f4..cd5a5fd5dd 100644
--- a/src/test/regress/pg_regress.c
+++ b/src/test/regress/pg_regress.c
@@ -19,16 +19,13 @@
#include "postgres_fe.h"
#include <ctype.h>
+#include <sys/resource.h>
#include <sys/stat.h>
+#include <sys/time.h>
#include <sys/wait.h>
#include <signal.h>
#include <unistd.h>
-#ifdef HAVE_SYS_RESOURCE_H
-#include <sys/time.h>
-#include <sys/resource.h>
-#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
--
2.32.1 (Apple Git-133)