postgres.git / summary / log / commit / refs
commit d25d392e89440f97bfafc0e80dc7737872659d76
Author: Tom Lane <tgl@sss.pgh.pa.us>
Date: Tue Jul 01 16:40:35 2025 +0000
First released in: 16.10, 17.6, 18.0
Make sure IOV_MAX is defined.
We stopped defining IOV_MAX on non-Windows systems in 75357ab94, on
the assumption that every non-Windows system defines it in <limits.h>
as required by X/Open. GNU Hurd, however, doesn't follow that
standard either. Put back the old logic to assume 16 if it's
not defined.
Author: Michael Banck <mbanck@gmx.net>
Co-authored-by: Christoph Berg <myon@debian.org>
Reviewed-by: Tom Lane <tgl@sss.pgh.pa.us>
Discussion: https://postgr.es/m/6862e8d1.050a0220.194b8d.76fa@mx.google.com
Discussion: https://postgr.es/m/6846e0c3.df0a0220.39ef9b.c60e@mx.google.com
Backpatch-through: 16
src/include/port/pg_iovec.h | 12 +++++++++---
1 file changed, 9 insertions(+), 3 deletions(-)
diff --git a/src/include/port/pg_iovec.h b/src/include/port/pg_iovec.h
index 689799c4258..5882c5b20f0 100644
--- a/src/include/port/pg_iovec.h
+++ b/src/include/port/pg_iovec.h
@@ -20,9 +20,6 @@
#else
-/* POSIX requires at least 16 as a maximum iovcnt. */
-#define IOV_MAX 16
-
/* Define our own POSIX-compatible iovec struct. */
struct iovec
{
@@ -32,6 +29,15 @@ struct iovec
#endif
+/*
+ * If <limits.h> didn't define IOV_MAX, define our own. X/Open requires at
+ * least 16. (GNU Hurd apparently feel that they're not bound by X/Open,
+ * because they don't define this symbol at all.)
+ */
+#ifndef IOV_MAX
+#define IOV_MAX 16
+#endif
+
/* Define a reasonable maximum that is safe to use on the stack. */
#define PG_IOV_MAX Min(IOV_MAX, 32)
[parent: 3a2617e4f0be]