Index: libcfa/src/concurrency/io.cfa
===================================================================
--- libcfa/src/concurrency/io.cfa	(revision 05cfa4db51185682042d80b5c991924da251e96a)
+++ libcfa/src/concurrency/io.cfa	(revision 4385e8b2686d2ed630baceffe83c33adcccf4b41)
@@ -724,7 +724,13 @@
 	#include <sys/socket.h>
 	#include <sys/syscall.h>
+
+#if defined(HAVE_PREADV2)
 	struct iovec;
 	extern ssize_t preadv2 (int fd, const struct iovec *iov, int iovcnt, off_t offset, int flags);
+#endif
+#if defined(HAVE_PWRITEV2)
+	struct iovec;
 	extern ssize_t pwritev2(int fd, const struct iovec *iov, int iovcnt, off_t offset, int flags);
+#endif
 
 	extern int fsync(int fd);
@@ -752,27 +758,31 @@
 //-----------------------------------------------------------------------------
 // Asynchronous operations
-ssize_t cfa_preadv2(int fd, const struct iovec *iov, int iovcnt, off_t offset, int flags) {
-	#if !defined(HAVE_LINUX_IO_URING_H) || !defined(IORING_OP_READV)
-		return preadv2(fd, iov, iovcnt, offset, flags);
-	#else
-		__submit_prelude
-
-		(*sqe){ IORING_OP_READV, fd, iov, iovcnt, offset };
-
-		__submit_wait
-	#endif
-}
-
-ssize_t cfa_pwritev2(int fd, const struct iovec *iov, int iovcnt, off_t offset, int flags) {
-	#if !defined(HAVE_LINUX_IO_URING_H) || !defined(IORING_OP_WRITEV)
-		return pwritev2(fd, iov, iovcnt, offset, flags);
-	#else
-		__submit_prelude
-
-		(*sqe){ IORING_OP_WRITEV, fd, iov, iovcnt, offset };
-
-		__submit_wait
-	#endif
-}
+#if defined(HAVE_PREADV2)
+	ssize_t cfa_preadv2(int fd, const struct iovec *iov, int iovcnt, off_t offset, int flags) {
+		#if !defined(HAVE_LINUX_IO_URING_H) || !defined(IORING_OP_READV)
+			return preadv2(fd, iov, iovcnt, offset, flags);
+		#else
+			__submit_prelude
+
+			(*sqe){ IORING_OP_READV, fd, iov, iovcnt, offset };
+
+			__submit_wait
+		#endif
+	}
+#endif
+
+#if defined(HAVE_PWRITEV2)
+	ssize_t cfa_pwritev2(int fd, const struct iovec *iov, int iovcnt, off_t offset, int flags) {
+		#if !defined(HAVE_LINUX_IO_URING_H) || !defined(IORING_OP_WRITEV)
+			return pwritev2(fd, iov, iovcnt, offset, flags);
+		#else
+			__submit_prelude
+
+			(*sqe){ IORING_OP_WRITEV, fd, iov, iovcnt, offset };
+
+			__submit_wait
+		#endif
+	}
+#endif
 
 int cfa_fsync(int fd) {
@@ -1002,13 +1012,17 @@
 			return IS_DEFINED(IORING_OP_READV);
 
-		if( /*func == (fptr_t)pwritev2 || */
-			func == (fptr_t)cfa_pwritev2 )
-			#define _CFA_IO_FEATURE_IORING_OP_WRITEV ,
-			return IS_DEFINED(IORING_OP_WRITEV);
-
-		if( /*func == (fptr_t)fsync || */
-			func == (fptr_t)cfa_fsync )
-			#define _CFA_IO_FEATURE_IORING_OP_FSYNC ,
-			return IS_DEFINED(IORING_OP_FSYNC);
+		#if defined(HAVE_PREADV2)
+			if( /*func == (fptr_t)pwritev2 || */
+				func == (fptr_t)cfa_pwritev2 )
+				#define _CFA_IO_FEATURE_IORING_OP_WRITEV ,
+				return IS_DEFINED(IORING_OP_WRITEV);
+		#endif
+
+		#if defined(HAVE_PWRITEV2)
+			if( /*func == (fptr_t)fsync || */
+				func == (fptr_t)cfa_fsync )
+				#define _CFA_IO_FEATURE_IORING_OP_FSYNC ,
+				return IS_DEFINED(IORING_OP_FSYNC);
+		#endif
 
 		if( /*func == (fptr_t)ync_file_range || */
