]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib: Make pagesize-retrieval portable
authorKarl Fleischmann <karl.fleischmann@open-xchange.com>
Tue, 21 Jun 2022 12:50:11 +0000 (14:50 +0200)
committerKarl Fleischmann <karl.fleischmann@open-xchange.com>
Mon, 4 Jul 2022 09:53:48 +0000 (11:53 +0200)
The getpagesize() function has been deprecated in POSIX.1-2001. This
commit replaces the function call with the portable way to retrieve this
value at runtime. All callsites now use mmap_get_page_size() as the
canonical way to retrieve this value in this project.

src/lib/mmap-anon.c
src/lib/mmap-util.c
src/lib/test-file-cache.c

index fbb2c47f4cb672b345f108c5b86027449838940d..872aa3384313f1d017c626f4f7339ebe7b5cee7a 100644 (file)
@@ -43,7 +43,7 @@ static void movable_mmap_init(void)
        fd_close_on_exec(zero_fd, TRUE);
 #endif
 
-       page_size = getpagesize();
+       page_size = mmap_get_page_size();
        header_size = page_size;
 }
 
index 87542266fd67956e1c4389c383a38b6c2ada45ee..15011c0b11e67f78f10676abcd1e6ad3f7dcfbe4 100644 (file)
@@ -58,6 +58,6 @@ size_t mmap_get_page_size(void)
 
        if (size != 0)
                return size;
-       size = getpagesize();
+       size = sysconf(_SC_PAGESIZE);
        return size;
 }
index 03b6e63bb900c77f5cf21c5a8cae3f2cab1a3982..0fc70d62088e4fe5361b80d99ffdd2c324cbcbbe 100644 (file)
@@ -4,6 +4,7 @@
 #include "istream.h"
 #include "ostream.h"
 #include "file-cache.h"
+#include "mmap-util.h"
 
 #include <sys/resource.h>
 #include <sys/types.h>
@@ -129,7 +130,7 @@ static void test_file_cache_multipage(void)
 {
        test_begin("file_cache_multipage");
 
-       size_t page_size = getpagesize();
+       size_t page_size = mmap_get_page_size();
        struct ostream *os = o_stream_create_file(TEST_FILENAME, 0, 0600, 0);
        size_t total_size = 0;
        for (size_t i = 0; i < page_size * 3 + 100; i += 12) {
@@ -250,7 +251,7 @@ static void test_file_cache_errors(void)
        test_assert(map == NULL);
 
 #ifdef HAVE_RLIMIT_AS
-       size_t page_size = getpagesize();
+       size_t page_size = mmap_get_page_size();
        /* temporarily set a small memory limit to make mmap attempt fail */
        struct rlimit rl_cur;
        test_assert(getrlimit(RLIMIT_AS, &rl_cur) == 0);