| /linux/Documentation/translations/zh_CN/networking/ |
| H A D | msg_zerocopy.rst | 17 MSG_ZEROCOPY title 23 MSG_ZEROCOPY 标志用于启用套接字发送调用的免拷贝功能。该功能目前适用于 TCP、UDP 和 VSOCK 30 和 splice。MSG_ZEROCOPY 标志将底层的拷贝避免机制扩展到了常见的套接字发送调用中。 33 (page accounting)和完成通知的开销。因此,MSG_ZEROCOPY 通常仅在写入量超过大约 10 KB 时 41 MSG_ZEROCOPY 并非总是像简单地传递该标志那样容易。 56 [PATCH net-next v4 0/9] socket sendmsg MSG_ZEROCOPY 62 传递 MSG_ZEROCOPY 标志是启用免拷贝功能的最明显步骤,但并非唯一的步骤。 83 ret = send(fd, buf, sizeof(buf), MSG_ZEROCOPY); 101 MSG_ZEROCOPY 标志的 send 调用成功发送数据时,计数器都会增加。如果调用失败或长度为零, 185 传递标志 MSG_ZEROCOPY 是向内核发出的一个提示,让内核采用免拷贝的策略,同时也是一种约 [all …]
|
| /linux/tools/testing/selftests/net/packetdrill/ |
| H A D | tcp_zerocopy_epoll_edge.pkt | 7 // fire two sends with MSG_ZEROCOPY and receive the acks. confirm that EPOLLERR 9 // MSG_ZEROCOPY. confirm that EPOLLERR is correctly fired again only once. 32 +0 send(4, ..., 4000, MSG_ZEROCOPY) = 4000 36 +0 send(4, ..., 4000, MSG_ZEROCOPY) = 4000 44 +0 send(4, ..., 4000, MSG_ZEROCOPY) = 4000
|
| H A D | tcp_zerocopy_epoll_exclusive.pkt | 8 // fire two sends with MSG_ZEROCOPY and receive the acks. confirm that EPOLLERR 10 // MSG_ZEROCOPY. confirm that EPOLLERR is correctly fired again only once. 34 +0 send(4, ..., 4000, MSG_ZEROCOPY) = 4000 38 +0 send(4, ..., 4000, MSG_ZEROCOPY) = 4000 46 +0 send(4, ..., 4000, MSG_ZEROCOPY) = 4000
|
| H A D | tcp_zerocopy_epoll_oneshot.pkt | 7 // fire two sends with MSG_ZEROCOPY and receive the acks. confirm that EPOLLERR 9 // with MSG_ZEROCOPY. confirm that EPOLLERR is not fired. Rearm the FD and 33 +0 send(4, ..., 4000, MSG_ZEROCOPY) = 4000 37 +0 send(4, ..., 4000, MSG_ZEROCOPY) = 4000 45 +0 send(4, ..., 4000, MSG_ZEROCOPY) = 4000
|
| H A D | tcp_zerocopy_basic.pkt | 4 // send a packet with MSG_ZEROCOPY and receive the notification ID 23 +0 send(4, ..., 4000, MSG_ZEROCOPY) = 4000 41 +0 send(4, ..., 4000, MSG_ZEROCOPY) = 4000
|
| H A D | tcp_zerocopy_closed.pkt | 2 // send with MSG_ZEROCOPY on a non-established socket 17 +0 send(4, ..., 4000, MSG_ZEROCOPY) = -1 EPIPE (Broken pipe) 30 +0 send(4, ..., 4000, MSG_ZEROCOPY) = 4000
|
| H A D | tcp_zerocopy_fastopen-client.pkt | 4 // send data with MSG_FASTOPEN | MSG_ZEROCOPY and verify that the 19 +0 sendto(3, ..., 500, MSG_FASTOPEN|MSG_ZEROCOPY, ..., ...) = -1 EINPROGRESS (Operation now in progress) 40 +0 sendto(5, ..., 500, MSG_FASTOPEN|MSG_ZEROCOPY, ..., ...) = 500
|
| H A D | tcp_zerocopy_batch.pkt | 23 +0 send(4, ..., 4000, MSG_ZEROCOPY) = 4000 27 +0 send(4, ..., 4000, MSG_ZEROCOPY) = 4000
|
| H A D | tcp_zerocopy_small.pkt | 24 +0 send(4, ..., 1, MSG_ZEROCOPY) = 1 43 +0 send(4, ..., 1, MSG_ZEROCOPY) = 1
|
| H A D | tcp_zerocopy_fastopen-server.pkt | 4 // send data with MSG_FASTOPEN | MSG_ZEROCOPY and verify that the 27 +0 sendto(4, ..., 1000, MSG_ZEROCOPY, ..., ...) = 1000
|
| H A D | tcp_zerocopy_maxfrags.pkt | 51 msg_flags=0}, MSG_ZEROCOPY) = 18 93 msg_flags=0}, MSG_ZEROCOPY) = 64
|
| H A D | tcp_zerocopy_client.pkt | 16 +0 send(4, ..., 4000, MSG_ZEROCOPY) = 4000
|
| /linux/Documentation/networking/ |
| H A D | msg_zerocopy.rst | 3 MSG_ZEROCOPY title 9 The MSG_ZEROCOPY flag enables copy avoidance for socket send calls. 19 such as sendfile and splice. The MSG_ZEROCOPY flag extends the 24 notification overhead. As a result, MSG_ZEROCOPY is generally only 35 Converting an existing application to MSG_ZEROCOPY is not always as 53 [PATCH net-next v4 0/9] socket sendmsg MSG_ZEROCOPY 60 Passing the MSG_ZEROCOPY flag is the most obvious step to enable copy 84 ret = send(fd, buf, sizeof(buf), MSG_ZEROCOPY); 109 MSG_ZEROCOPY that successfully sends data increments the counter. The 211 Passing flag MSG_ZEROCOPY is a hint to the kernel to apply copy [all …]
|
| /linux/tools/perf/trace/beauty/ |
| H A D | msg_flags.c | 17 #ifndef MSG_ZEROCOPY 18 #define MSG_ZEROCOPY 0x4000000 macro
|
| /linux/tools/testing/selftests/net/ |
| H A D | udpgso_bench_tx.c | 46 #ifndef MSG_ZEROCOPY 47 #define MSG_ZEROCOPY 0x4000000 macro 279 cfg_zerocopy ? MSG_ZEROCOPY : 0); in send_tcp() 299 ret = sendto(fd, data, len, cfg_zerocopy ? MSG_ZEROCOPY : 0, in send_udp() 371 ret = sendmmsg(fd, mmsgs, i, cfg_zerocopy ? MSG_ZEROCOPY : 0); in send_udp_sendmmsg() 420 ret = sendmsg(fd, &msg, cfg_zerocopy ? MSG_ZEROCOPY : 0); in send_udp_segment()
|
| H A D | tcp_mmap.c | 71 #ifndef MSG_ZEROCOPY 72 #define MSG_ZEROCOPY 0x4000000 macro 598 (size_t)wr, zflg ? MSG_ZEROCOPY : 0); in main()
|
| H A D | msg_zerocopy.c | 73 #ifndef MSG_ZEROCOPY 74 #define MSG_ZEROCOPY 0x4000000 macro 198 flags |= MSG_ZEROCOPY; in do_sendmsg()
|
| /linux/tools/testing/vsock/ |
| H A D | vsock_test_zerocopy.c | 178 sendmsg_res = sendmsg(fd, &msg, MSG_ZEROCOPY); in test_client() 387 send_buf(fd, sbuf2, sizeof(sbuf2), MSG_ZEROCOPY, sizeof(sbuf2)); in test_stream_msgzcopy_mangle_client()
|
| H A D | vsock_perf.c | 320 zerocopy ? MSG_ZEROCOPY : 0); in run_sender()
|
| H A D | vsock_test.c | 1649 send_byte(fd, 1, MSG_ZEROCOPY); in test_stream_msgzcopy_leak_errq_server() 1719 * send(s, &(char){ 0 }, 1, MSG_ZEROCOPY); 1799 res = sendmsg(fd, &msg, MSG_ZEROCOPY); in test_stream_msgzcopy_leak_zcskb_server() 2441 .name = "SOCK_STREAM MSG_ZEROCOPY", 2446 .name = "SOCK_SEQPACKET MSG_ZEROCOPY", 2451 .name = "SOCK_STREAM MSG_ZEROCOPY empty MSG_ERRQUEUE", 2486 .name = "SOCK_STREAM MSG_ZEROCOPY leak MSG_ERRQUEUE", 2491 .name = "SOCK_STREAM MSG_ZEROCOPY leak completion skb", 2535 .name = "SOCK_STREAM virtio MSG_ZEROCOPY coalescence corruption",
|
| /linux/net/rds/ |
| H A D | send.c | 1018 if ((msg->msg_flags & MSG_ZEROCOPY) && !zcopy_cookie) in rds_rm_size() 1144 bool zcopy = ((msg->msg_flags & MSG_ZEROCOPY) && in rds_sendmsg() 1158 if (msg->msg_flags & ~(MSG_DONTWAIT | MSG_CMSG_COMPAT | MSG_ZEROCOPY)) { in rds_sendmsg()
|
| /linux/tools/perf/trace/beauty/include/linux/ |
| H A D | socket.h | 345 #define MSG_ZEROCOPY 0x4000000 /* Use user data in kernel path */ 346 #define MSG_ZEROCOPY global() macro
|
| /linux/net/vmw_vsock/ |
| H A D | virtio_transport_common.c | 333 * there is no MSG_ZEROCOPY flag set. in virtio_transport_send_pkt_info() 336 info->msg->msg_flags &= ~MSG_ZEROCOPY; in virtio_transport_send_pkt_info() 338 if (info->msg->msg_flags & MSG_ZEROCOPY) in virtio_transport_send_pkt_info() 345 if (info->msg->msg_flags & MSG_ZEROCOPY && in virtio_transport_send_pkt_info()
|
| /linux/net/ipv4/ |
| H A D | tcp.c | 1140 if ((flags & MSG_ZEROCOPY) && size) { in tcp_sendmsg_locked() 1144 zc = MSG_ZEROCOPY; in tcp_sendmsg_locked() 1154 zc = MSG_ZEROCOPY; in tcp_sendmsg_locked() 1173 (!(flags & MSG_ZEROCOPY) || !sock_flag(sk, SOCK_ZEROCOPY))) { in tcp_sendmsg_locked() 1326 } else if (zc == MSG_ZEROCOPY) { in tcp_sendmsg_locked()
|
| /linux/tools/testing/selftests/drivers/net/hw/ |
| H A D | ncdevmem.c | 1378 ret = sendmsg(socket_fd, &msg, MSG_ZEROCOPY); in do_client()
|