Remove configure probe and related tests for getrlimit.
authorThomas Munro <[email protected]>
Thu, 4 Aug 2022 21:18:34 +0000 (09:18 +1200)
committerThomas Munro <[email protected]>
Thu, 4 Aug 2022 21:18:34 +0000 (09:18 +1200)
getrlimit() is in SUSv2 and all targeted systems have it.

Windows doesn't have it.  We could just use #ifndef WIN32, but for a
little more explanation about why we're making things conditional, let's
retain the HAVE_GETRLIMIT macro.  It's defined in port.h for Unix systems.

On systems that have it, it's not necessary to test for RLIMIT_CORE,
RLIMIT_STACK or RLIMIT_NOFILE macros, since SUSv2 requires those and all
targeted systems have them.  Also remove references to a pre-historic
alternative spelling of RLIMIT_NOFILE, and coding that seemed to believe
that Cygwin didn't have it.

Reviewed-by: Tom Lane <[email protected]>
Reviewed-by: Andres Freund <[email protected]>
Discussion: https://postgr.es/m/CA+hUKGJ3LHeP9w5Fgzdr4G8AnEtJ=z=p6hGDEm4qYGEUX5B6fQ@mail.gmail.com

configure
configure.ac
src/backend/storage/file/fd.c
src/backend/tcop/postgres.c
src/bin/pg_ctl/pg_ctl.c
src/bin/pgbench/pgbench.c
src/include/pg_config.h.in
src/include/port.h
src/test/regress/pg_regress.c
src/tools/msvc/Solution.pm

index 2583a04a876209c2e85a33fa0660484c96e929ff..691cdd9d616d47518813ae4d83dfdf66e3945f2c 100755 (executable)
--- a/configure
+++ b/configure
@@ -16039,7 +16039,7 @@ fi
 LIBS_including_readline="$LIBS"
 LIBS=`echo "$LIBS" | sed -e 's/-ledit//g' -e 's/-lreadline//g'`
 
-for ac_func in backtrace_symbols clock_gettime copyfile fdatasync getifaddrs getpeerucred getrlimit inet_pton kqueue mbstowcs_l memset_s poll posix_fallocate ppoll pthread_is_threaded_np readlink readv setproctitle setproctitle_fast setsid shm_open strchrnul strsignal symlink syncfs sync_file_range uselocale wcstombs_l writev
+for ac_func in backtrace_symbols clock_gettime copyfile fdatasync getifaddrs getpeerucred inet_pton kqueue mbstowcs_l memset_s poll posix_fallocate ppoll pthread_is_threaded_np readlink readv setproctitle setproctitle_fast setsid shm_open strchrnul strsignal symlink syncfs sync_file_range uselocale wcstombs_l writev
 do :
   as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
 ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
index 84bdaeb46c51cb87c580c6a965a716f94d9636f6..39a55f6264dc76c849c102c3906bbf387b0173b4 100644 (file)
@@ -1797,7 +1797,6 @@ AC_CHECK_FUNCS(m4_normalize([
    fdatasync
    getifaddrs
    getpeerucred
-   getrlimit
    inet_pton
    kqueue
    mbstowcs_l
index f904f60c086b342f6bb0f70940f4a4ac3b56f5dd..447d5a86c302dd36849b5644adaf2e15705eed4f 100644 (file)
@@ -895,11 +895,7 @@ count_usable_fds(int max_to_probe, int *usable_fds, int *already_open)
    fd = (int *) palloc(size * sizeof(int));
 
 #ifdef HAVE_GETRLIMIT
-#ifdef RLIMIT_NOFILE           /* most platforms use RLIMIT_NOFILE */
    getrlimit_status = getrlimit(RLIMIT_NOFILE, &rlim);
-#else                          /* but BSD doesn't ... */
-   getrlimit_status = getrlimit(RLIMIT_OFILE, &rlim);
-#endif                         /* RLIMIT_NOFILE */
    if (getrlimit_status != 0)
        ereport(WARNING, (errmsg("getrlimit failed: %m")));
 #endif                         /* HAVE_GETRLIMIT */
index 078fbdb5a0c3357b92db98bd4c82b218db9b2a76..11e802eba98de9b17b9137399b231080712c9cd2 100644 (file)
@@ -4770,7 +4770,7 @@ forbidden_in_wal_sender(char firstchar)
 long
 get_stack_depth_rlimit(void)
 {
-#if defined(HAVE_GETRLIMIT) && defined(RLIMIT_STACK)
+#if defined(HAVE_GETRLIMIT)
    static long val = 0;
 
    /* This won't change after process launch, so check just once */
@@ -4789,13 +4789,9 @@ get_stack_depth_rlimit(void)
            val = rlim.rlim_cur;
    }
    return val;
-#else                          /* no getrlimit */
-#if defined(WIN32) || defined(__CYGWIN__)
+#else
    /* On Windows we set the backend stack size in src/backend/Makefile */
    return WIN32_STACK_RLIMIT;
-#else                          /* not windows ... give up */
-   return -1;
-#endif
 #endif
 }
 
index ef58883a5c2121ffd3969e8698e4f1df0a3092b8..2762e8590d0a77a2379ee7ada5ec25e3c9692203 100644 (file)
@@ -160,7 +160,7 @@ static bool wait_for_postmaster_stop(void);
 static bool wait_for_postmaster_promote(void);
 static bool postmaster_is_alive(pid_t pid);
 
-#if defined(HAVE_GETRLIMIT) && defined(RLIMIT_CORE)
+#if defined(HAVE_GETRLIMIT)
 static void unlimit_core_size(void);
 #endif
 
@@ -776,7 +776,7 @@ wait_for_postmaster_promote(void)
 }
 
 
-#if defined(HAVE_GETRLIMIT) && defined(RLIMIT_CORE)
+#if defined(HAVE_GETRLIMIT)
 static void
 unlimit_core_size(void)
 {
@@ -949,7 +949,7 @@ do_start(void)
    if (exec_path == NULL)
        exec_path = find_other_exec_or_die(argv0, "postgres", PG_BACKEND_VERSIONSTR);
 
-#if defined(HAVE_GETRLIMIT) && defined(RLIMIT_CORE)
+#if defined(HAVE_GETRLIMIT)
    if (allow_core_files)
        unlimit_core_size();
 #endif
@@ -2069,7 +2069,7 @@ do_help(void)
    printf(_("If the -D option is omitted, the environment variable PGDATA is used.\n"));
 
    printf(_("\nOptions for start or restart:\n"));
-#if defined(HAVE_GETRLIMIT) && defined(RLIMIT_CORE)
+#if defined(HAVE_GETRLIMIT)
    printf(_("  -c, --core-files       allow postgres to produce core files\n"));
 #else
    printf(_("  -c, --core-files       not applicable on this platform\n"));
index bcaea8f5ea2148f35853ca2df32c31b6b174f826..0778656794a064e9b760dbf5fd7f9426ab55d456 100644 (file)
@@ -6662,11 +6662,7 @@ main(int argc, char **argv)
                    exit(1);
                }
 #ifdef HAVE_GETRLIMIT
-#ifdef RLIMIT_NOFILE           /* most platforms use RLIMIT_NOFILE */
                if (getrlimit(RLIMIT_NOFILE, &rlim) == -1)
-#else                          /* but BSD doesn't ... */
-               if (getrlimit(RLIMIT_OFILE, &rlim) == -1)
-#endif                         /* RLIMIT_NOFILE */
                    pg_fatal("getrlimit failed: %m");
                if (rlim.rlim_cur < nclients + 3)
                {
index ab812bca8913c5918de5b73d14d87fe90b4a45fa..93173d67c0baaefe2811938944477cb8a48ab3bf 100644 (file)
 /* Define to 1 if you have the `getpeerucred' function. */
 #undef HAVE_GETPEERUCRED
 
-/* Define to 1 if you have the `getrlimit' function. */
-#undef HAVE_GETRLIMIT
-
 /* Define to 1 if you have the `gettimeofday' function. */
 #undef HAVE_GETTIMEOFDAY
 
index 323df8f9eded01ff2857c6cb1e9ce8c98658f986..2c25498add5095893401889e9ea72efde42d2f40 100644 (file)
@@ -519,4 +519,12 @@ extern char *wait_result_to_str(int exit_status);
 extern bool wait_result_is_signal(int exit_status, int signum);
 extern bool wait_result_is_any_signal(int exit_status, bool include_command_not_found);
 
+/*
+ * Interfaces that we assume all Unix system have.  We retain individual macros
+ * for better documentation.
+ */
+#ifndef WIN32
+#define HAVE_GETRLIMIT 1
+#endif
+
 #endif                         /* PG_PORT_H */
index 982801e029d585ef92e59b93240a01287934c9d8..04ab513b7cb36aa813dc8c2900b441152ab9ac95 100644 (file)
@@ -129,7 +129,7 @@ static void psql_end_command(StringInfo buf, const char *database);
 /*
  * allow core files if possible.
  */
-#if defined(HAVE_GETRLIMIT) && defined(RLIMIT_CORE)
+#if defined(HAVE_GETRLIMIT)
 static void
 unlimit_core_size(void)
 {
@@ -2229,7 +2229,7 @@ regression_main(int argc, char *argv[],
 
    initialize_environment();
 
-#if defined(HAVE_GETRLIMIT) && defined(RLIMIT_CORE)
+#if defined(HAVE_GETRLIMIT)
    unlimit_core_size();
 #endif
 
index a7a5c31a5b63c46081a6216f38b692af7f7a92e6..c703708b50b13b7f9185fa5a5a10c5955801d37e 100644 (file)
@@ -271,7 +271,6 @@ sub GenerateFiles
        HAVE_GETOPT_LONG                            => undef,
        HAVE_GETPEEREID                             => undef,
        HAVE_GETPEERUCRED                           => undef,
-       HAVE_GETRLIMIT                              => undef,
        HAVE_GETTIMEOFDAY                           => undef,
        HAVE_GSSAPI_GSSAPI_H                        => undef,
        HAVE_GSSAPI_H                               => undef,