[CRIU] [PATCH 2/5] util-net: Add declaration of scm_fdset structure
Cyrill Gorcunov
gorcunov at openvz.org
Wed Mar 21 07:47:39 EDT 2012
This structure will serve for multiple fds
transmission/receive.
Signed-off-by: Cyrill Gorcunov <gorcunov at openvz.org>
---
include/util-net.h | 21 +++++++++++++++++++++
1 files changed, 21 insertions(+), 0 deletions(-)
diff --git a/include/util-net.h b/include/util-net.h
index c5a8c46..5993778 100644
--- a/include/util-net.h
+++ b/include/util-net.h
@@ -1,6 +1,9 @@
#ifndef UTIL_NET_H_
#define UTIL_NET_H_
+#include <sys/socket.h>
+#include <sys/un.h>
+
#define UNIX_PATH_MAX (sizeof(struct sockaddr_un) - \
(size_t)((struct sockaddr_un *) 0)->sun_path)
@@ -8,6 +11,24 @@
#define SO_PEEK_OFF 42
#endif
+/*
+ * Because kernel do kmalloc for user data passed
+ * in SCM messages, and there is SCM_MAX_FD as a limit
+ * for descriptors passed at once -- we're trying to
+ * eliminate pressue on kernel memory manager and use
+ * predefined known to work well size of the message buffer.
+ */
+#define CR_SCM_MSG_SIZE (1024)
+#define CR_SCM_MAX_FD (252)
+
+struct scm_fdset {
+ struct msghdr hdr;
+ struct iovec iov;
+ char msg_buf[CR_SCM_MSG_SIZE];
+ int msg; /* We are to send at least one byte */
+ int nr_fds;
+};
+
extern int send_fd(int sock, struct sockaddr_un *saddr, int len, int fd);
extern int recv_fd(int sock);
#endif
--
1.7.7.6
More information about the CRIU
mailing list