MCPcopy Create free account
hub / github.com/axboe/liburing / recv_prep

Function recv_prep

test/socket.c:28–82  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

26static __be32 g_port;
27
28static int recv_prep(struct io_uring *ring, struct iovec *iov, int *sock,
29 int registerfiles)
30{
31 struct sockaddr_in saddr;
32 struct io_uring_sqe *sqe;
33 int sockfd, ret, val, use_fd;
34
35 memset(&saddr, 0, sizeof(saddr));
36 saddr.sin_family = AF_INET;
37 saddr.sin_addr.s_addr = htonl(INADDR_ANY);
38
39 sockfd = socket(AF_INET, SOCK_DGRAM, 0);
40 if (sockfd < 0) {
41 perror("socket");
42 return 1;
43 }
44
45 val = 1;
46 setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, &val, sizeof(val));
47
48 if (t_bind_ephemeral_port(sockfd, &saddr)) {
49 perror("bind");
50 goto err;
51 }
52 g_port = saddr.sin_port;
53
54 if (registerfiles) {
55 ret = io_uring_register_files(ring, &sockfd, 1);
56 if (ret) {
57 fprintf(stderr, "file reg failed\n");
58 goto err;
59 }
60 use_fd = 0;
61 } else {
62 use_fd = sockfd;
63 }
64
65 sqe = io_uring_get_sqe(ring);
66 io_uring_prep_recv(sqe, use_fd, iov->iov_base, iov->iov_len, 0);
67 if (registerfiles)
68 sqe->flags |= IOSQE_FIXED_FILE;
69 sqe->user_data = 2;
70
71 ret = io_uring_submit(ring);
72 if (ret <= 0) {
73 fprintf(stderr, "submit failed: %d\n", ret);
74 goto err;
75 }
76
77 *sock = sockfd;
78 return 0;
79err:
80 close(sockfd);
81 return 1;
82}
83
84static int do_recv(struct io_uring *ring, struct iovec *iov)
85{

Callers 1

recv_fnFunction · 0.70

Calls 4

t_bind_ephemeral_portFunction · 0.85
io_uring_register_filesFunction · 0.85
io_uring_submitFunction · 0.85
io_uring_get_sqeFunction · 0.50

Tested by

no test coverage detected