[libc-commits] [libc] [libc] Implement recvmmsg (on linux) (PR #202328)

Pavel Labath via libc-commits libc-commits at lists.llvm.org
Wed Jun 10 04:57:01 PDT 2026


================
@@ -0,0 +1,32 @@
+//===----------------------------------------------------------------------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+///
+/// \file
+/// Linux implementation of recvmmsg.
+///
+//===----------------------------------------------------------------------===//
+
+#include "src/sys/socket/recvmmsg.h"
+#include "src/__support/OSUtil/linux/syscall_wrappers/recvmmsg.h"
+#include "src/__support/common.h"
+#include "src/__support/libc_errno.h"
+
+namespace LIBC_NAMESPACE_DECL {
+
+LLVM_LIBC_FUNCTION(int, recvmmsg,
+                   (int sockfd, struct mmsghdr *msgvec, unsigned int vlen,
+                    int flags, struct timespec *timeout)) {
+  auto result = linux_syscalls::recvmmsg(sockfd, msgvec, vlen, flags, timeout);
+  if (!result.has_value()) {
+    libc_errno = result.error();
+    return -1;
+  }
+  return result.value();
----------------
labath wrote:

I asked around, and it seems that we aren't using the msan annotations and there's no upstream testing for them (there's an asan postsubmit bot, but no msan). Given that, and the fact that the recvmsg implementation is subtly broken (it unpoisons more than it should, leading to false negatives), I'd like to avoid adding more untested code (and maybe even consider removing the existing stuff).

https://github.com/llvm/llvm-project/pull/202328


More information about the libc-commits mailing list