mirror of
https://passt.top/passt
synced 2025-05-19 07:55:34 +02:00
util: Rename and make global vu_remove_watch()
vu_remove_watch() is used in vhost_user.c to remove an fd from the global epoll set. There's nothing really vhost user specific about it though, so rename, move to util.c and use it in a bunch of places outside vhost_user.c where it makes things marginally more readable. Signed-off-by: David Gibson <david@gibson.dropbear.id.au> Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
This commit is contained in:
parent
10c4a9e1b3
commit
0349cf637f
9 changed files with 25 additions and 27 deletions
2
icmp.c
2
icmp.c
|
@ -150,7 +150,7 @@ unexpected:
|
|||
static void icmp_ping_close(const struct ctx *c,
|
||||
const struct icmp_ping_flow *pingf)
|
||||
{
|
||||
epoll_ctl(c->epollfd, EPOLL_CTL_DEL, pingf->sock, NULL);
|
||||
epoll_del(c, pingf->sock);
|
||||
close(pingf->sock);
|
||||
flow_hash_remove(c, FLOW_SIDX(pingf, INISIDE));
|
||||
}
|
||||
|
|
2
tap.c
2
tap.c
|
@ -1005,7 +1005,7 @@ void tap_sock_reset(struct ctx *c)
|
|||
exit(EXIT_SUCCESS);
|
||||
|
||||
/* Close the connected socket, wait for a new connection */
|
||||
epoll_ctl(c->epollfd, EPOLL_CTL_DEL, c->fd_tap, NULL);
|
||||
epoll_del(c, c->fd_tap);
|
||||
close(c->fd_tap);
|
||||
c->fd_tap = -1;
|
||||
if (c->mode == MODE_VU)
|
||||
|
|
4
tcp.c
4
tcp.c
|
@ -468,9 +468,9 @@ static int tcp_epoll_ctl(const struct ctx *c, struct tcp_tap_conn *conn)
|
|||
|
||||
if (conn->events == CLOSED) {
|
||||
if (conn->in_epoll)
|
||||
epoll_ctl(c->epollfd, EPOLL_CTL_DEL, conn->sock, NULL);
|
||||
epoll_del(c, conn->sock);
|
||||
if (conn->timer != -1)
|
||||
epoll_ctl(c->epollfd, EPOLL_CTL_DEL, conn->timer, NULL);
|
||||
epoll_del(c, conn->timer);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -200,8 +200,8 @@ static void conn_flag_do(const struct ctx *c, struct tcp_splice_conn *conn,
|
|||
}
|
||||
|
||||
if (flag == CLOSING) {
|
||||
epoll_ctl(c->epollfd, EPOLL_CTL_DEL, conn->s[0], NULL);
|
||||
epoll_ctl(c->epollfd, EPOLL_CTL_DEL, conn->s[1], NULL);
|
||||
epoll_del(c, conn->s[0]);
|
||||
epoll_del(c, conn->s[1]);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -52,7 +52,7 @@ void udp_flow_close(const struct ctx *c, struct udp_flow *uflow)
|
|||
|
||||
if (uflow->s[TGTSIDE] >= 0) {
|
||||
/* But the flow specific one needs to be removed */
|
||||
epoll_ctl(c->epollfd, EPOLL_CTL_DEL, uflow->s[TGTSIDE], NULL);
|
||||
epoll_del(c, uflow->s[TGTSIDE]);
|
||||
close(uflow->s[TGTSIDE]);
|
||||
uflow->s[TGTSIDE] = -1;
|
||||
}
|
||||
|
|
10
util.c
10
util.c
|
@ -837,3 +837,13 @@ void raw_random(void *buf, size_t buflen)
|
|||
if (random_read < buflen)
|
||||
die("Unexpected EOF on random data source");
|
||||
}
|
||||
|
||||
/**
|
||||
* epoll_del() - Remove a file descriptor from our passt epoll
|
||||
* @c: Execution context
|
||||
* @fd: File descriptor to remove
|
||||
*/
|
||||
void epoll_del(const struct ctx *c, int fd)
|
||||
{
|
||||
epoll_ctl(c->epollfd, EPOLL_CTL_DEL, fd, NULL);
|
||||
}
|
||||
|
|
1
util.h
1
util.h
|
@ -276,6 +276,7 @@ static inline bool mod_between(unsigned x, unsigned i, unsigned j, unsigned m)
|
|||
#define FPRINTF(f, ...) (void)fprintf(f, __VA_ARGS__)
|
||||
|
||||
void raw_random(void *buf, size_t buflen);
|
||||
void epoll_del(const struct ctx *c, int fd);
|
||||
|
||||
/*
|
||||
* Starting from glibc 2.40.9000 and commit 25a5eb4010df ("string: strerror,
|
||||
|
|
21
vhost_user.c
21
vhost_user.c
|
@ -162,17 +162,6 @@ static void vmsg_close_fds(const struct vhost_user_msg *vmsg)
|
|||
close(vmsg->fds[i]);
|
||||
}
|
||||
|
||||
/**
|
||||
* vu_remove_watch() - Remove a file descriptor from our passt epoll
|
||||
* file descriptor
|
||||
* @vdev: vhost-user device
|
||||
* @fd: file descriptor to remove
|
||||
*/
|
||||
static void vu_remove_watch(const struct vu_dev *vdev, int fd)
|
||||
{
|
||||
epoll_ctl(vdev->context->epollfd, EPOLL_CTL_DEL, fd, NULL);
|
||||
}
|
||||
|
||||
/**
|
||||
* vmsg_set_reply_u64() - Set reply payload.u64 and clear request flags
|
||||
* and fd_num
|
||||
|
@ -748,7 +737,7 @@ static bool vu_get_vring_base_exec(struct vu_dev *vdev,
|
|||
vdev->vq[idx].call_fd = -1;
|
||||
}
|
||||
if (vdev->vq[idx].kick_fd != -1) {
|
||||
vu_remove_watch(vdev, vdev->vq[idx].kick_fd);
|
||||
epoll_del(vdev->context, vdev->vq[idx].kick_fd);
|
||||
close(vdev->vq[idx].kick_fd);
|
||||
vdev->vq[idx].kick_fd = -1;
|
||||
}
|
||||
|
@ -816,7 +805,7 @@ static bool vu_set_vring_kick_exec(struct vu_dev *vdev,
|
|||
vu_check_queue_msg_file(msg);
|
||||
|
||||
if (vdev->vq[idx].kick_fd != -1) {
|
||||
vu_remove_watch(vdev, vdev->vq[idx].kick_fd);
|
||||
epoll_del(vdev->context, vdev->vq[idx].kick_fd);
|
||||
close(vdev->vq[idx].kick_fd);
|
||||
vdev->vq[idx].kick_fd = -1;
|
||||
}
|
||||
|
@ -1063,7 +1052,7 @@ static bool vu_set_device_state_fd_exec(struct vu_dev *vdev,
|
|||
die("Invalide device_state_fd direction: %d", direction);
|
||||
|
||||
if (vdev->device_state_fd != -1) {
|
||||
vu_remove_watch(vdev, vdev->device_state_fd);
|
||||
epoll_del(vdev->context, vdev->device_state_fd);
|
||||
close(vdev->device_state_fd);
|
||||
}
|
||||
|
||||
|
@ -1145,7 +1134,7 @@ void vu_cleanup(struct vu_dev *vdev)
|
|||
vq->err_fd = -1;
|
||||
}
|
||||
if (vq->kick_fd != -1) {
|
||||
vu_remove_watch(vdev, vq->kick_fd);
|
||||
epoll_del(vdev->context, vq->kick_fd);
|
||||
close(vq->kick_fd);
|
||||
vq->kick_fd = -1;
|
||||
}
|
||||
|
@ -1169,7 +1158,7 @@ void vu_cleanup(struct vu_dev *vdev)
|
|||
vu_close_log(vdev);
|
||||
|
||||
if (vdev->device_state_fd != -1) {
|
||||
vu_remove_watch(vdev, vdev->device_state_fd);
|
||||
epoll_del(vdev->context, vdev->device_state_fd);
|
||||
close(vdev->device_state_fd);
|
||||
vdev->device_state_fd = -1;
|
||||
vdev->device_state_result = -1;
|
||||
|
|
|
@ -325,8 +325,7 @@ void vu_migrate(struct vu_dev *vdev, uint32_t events)
|
|||
/* value to be returned by VHOST_USER_CHECK_DEVICE_STATE */
|
||||
vdev->device_state_result = ret == -1 ? -1 : 0;
|
||||
/* Closing the file descriptor signals the end of transfer */
|
||||
epoll_ctl(vdev->context->epollfd, EPOLL_CTL_DEL,
|
||||
vdev->device_state_fd, NULL);
|
||||
epoll_del(vdev->context, vdev->device_state_fd);
|
||||
close(vdev->device_state_fd);
|
||||
vdev->device_state_fd = -1;
|
||||
} else if (events & EPOLLIN) {
|
||||
|
@ -346,8 +345,7 @@ void vu_migrate(struct vu_dev *vdev, uint32_t events)
|
|||
debug("Closing migration channel");
|
||||
|
||||
/* The end of file signals the end of the transfer. */
|
||||
epoll_ctl(vdev->context->epollfd, EPOLL_CTL_DEL,
|
||||
vdev->device_state_fd, NULL);
|
||||
epoll_del(vdev->context, vdev->device_state_fd);
|
||||
close(vdev->device_state_fd);
|
||||
vdev->device_state_fd = -1;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue