net: move common close code out of posix_sock functions
Parts of the close code (for both sock and sock_group) is generic and will apply to every net implementation (POSIX, VPP, etc.) - so move that generic code now. Signed-off-by: Jim Harris <james.r.harris@intel.com> Change-Id: I50b5b272b6af219a516c18c41eee5a2e00bf034d Reviewed-on: https://review.gerrithub.io/400330 Tested-by: SPDK Automated Test System <sys_sgsw@intel.com> Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com> Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com> Reviewed-by: Daniel Verkamp <daniel.verkamp@intel.com>
This commit is contained in:
parent
c44dd70a58
commit
121b21f4dd
@ -315,29 +315,9 @@ spdk_posix_sock_accept(struct spdk_sock *sock)
|
||||
}
|
||||
|
||||
static int
|
||||
spdk_posix_sock_close(struct spdk_sock **sock)
|
||||
spdk_posix_sock_close(struct spdk_sock *sock)
|
||||
{
|
||||
int rc;
|
||||
|
||||
if (*sock == NULL) {
|
||||
errno = EBADF;
|
||||
return -1;
|
||||
}
|
||||
|
||||
if ((*sock)->cb_fn != NULL) {
|
||||
/* This sock is still part of a sock_group. */
|
||||
errno = EBUSY;
|
||||
return -1;
|
||||
}
|
||||
|
||||
rc = close((*sock)->fd);
|
||||
|
||||
if (rc == 0) {
|
||||
free(*sock);
|
||||
*sock = NULL;
|
||||
}
|
||||
|
||||
return rc;
|
||||
return close(sock->fd);
|
||||
}
|
||||
|
||||
static ssize_t
|
||||
@ -587,28 +567,9 @@ spdk_posix_sock_group_poll_count(struct spdk_sock_group *group, int max_events)
|
||||
}
|
||||
|
||||
static int
|
||||
spdk_posix_sock_group_close(struct spdk_sock_group **group)
|
||||
spdk_posix_sock_group_close(struct spdk_sock_group *group)
|
||||
{
|
||||
int rc;
|
||||
|
||||
if (*group == NULL) {
|
||||
errno = EBADF;
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (!TAILQ_EMPTY(&(*group)->socks)) {
|
||||
errno = EBUSY;
|
||||
return -1;
|
||||
}
|
||||
|
||||
rc = close((*group)->fd);
|
||||
|
||||
if (rc == 0) {
|
||||
free(*group);
|
||||
*group = NULL;
|
||||
}
|
||||
|
||||
return rc;
|
||||
return close(group->fd);
|
||||
}
|
||||
|
||||
int
|
||||
@ -638,7 +599,26 @@ spdk_sock_accept(struct spdk_sock *sock)
|
||||
int
|
||||
spdk_sock_close(struct spdk_sock **sock)
|
||||
{
|
||||
return spdk_posix_sock_close(sock);
|
||||
int rc;
|
||||
|
||||
if (*sock == NULL) {
|
||||
errno = EBADF;
|
||||
return -1;
|
||||
}
|
||||
|
||||
if ((*sock)->cb_fn != NULL) {
|
||||
/* This sock is still part of a sock_group. */
|
||||
errno = EBUSY;
|
||||
return -1;
|
||||
}
|
||||
|
||||
rc = spdk_posix_sock_close(*sock);
|
||||
if (rc == 0) {
|
||||
free(*sock);
|
||||
*sock = NULL;
|
||||
}
|
||||
|
||||
return rc;
|
||||
}
|
||||
|
||||
ssize_t
|
||||
@ -718,5 +698,23 @@ spdk_sock_group_poll_count(struct spdk_sock_group *group, int max_events)
|
||||
int
|
||||
spdk_sock_group_close(struct spdk_sock_group **group)
|
||||
{
|
||||
return spdk_posix_sock_group_close(group);
|
||||
int rc;
|
||||
|
||||
if (*group == NULL) {
|
||||
errno = EBADF;
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (!TAILQ_EMPTY(&(*group)->socks)) {
|
||||
errno = EBUSY;
|
||||
return -1;
|
||||
}
|
||||
|
||||
rc = spdk_posix_sock_group_close(*group);
|
||||
if (rc == 0) {
|
||||
free(*group);
|
||||
*group = NULL;
|
||||
}
|
||||
|
||||
return rc;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user