| 28 | static void memif_intr_handler(void *arg); |
| 29 | |
| 30 | static ssize_t |
| 31 | memif_msg_send(int fd, memif_msg_t *msg, int afd) |
| 32 | { |
| 33 | struct msghdr mh = { 0 }; |
| 34 | struct iovec iov[1]; |
| 35 | struct cmsghdr *cmsg; |
| 36 | char ctl[CMSG_SPACE(sizeof(int))]; |
| 37 | |
| 38 | iov[0].iov_base = msg; |
| 39 | iov[0].iov_len = sizeof(memif_msg_t); |
| 40 | mh.msg_iov = iov; |
| 41 | mh.msg_iovlen = 1; |
| 42 | |
| 43 | if (afd > 0) { |
| 44 | memset(&ctl, 0, sizeof(ctl)); |
| 45 | mh.msg_control = ctl; |
| 46 | mh.msg_controllen = sizeof(ctl); |
| 47 | cmsg = CMSG_FIRSTHDR(&mh); |
| 48 | cmsg->cmsg_len = CMSG_LEN(sizeof(int)); |
| 49 | cmsg->cmsg_level = SOL_SOCKET; |
| 50 | cmsg->cmsg_type = SCM_RIGHTS; |
| 51 | rte_memcpy(CMSG_DATA(cmsg), &afd, sizeof(int)); |
| 52 | } |
| 53 | |
| 54 | return sendmsg(fd, &mh, 0); |
| 55 | } |
| 56 | |
| 57 | static int |
| 58 | memif_msg_send_from_queue(struct memif_control_channel *cc) |
no test coverage detected