From f7bf28deacf0bae7c8b6103d4ddca2c44294ce1b Mon Sep 17 00:00:00 2001 From: "chao.an" Date: Mon, 7 Feb 2022 11:24:38 +0800 Subject: [PATCH] net/usrsock: replace the common connect prologue Signed-off-by: chao.an --- net/usrsock/usrsock.h | 9 +-------- net/usrsock/usrsock_conn.c | 18 ++++++++++-------- net/usrsock/usrsock_event.c | 2 +- net/usrsock/usrsock_poll.c | 6 +++--- 4 files changed, 15 insertions(+), 20 deletions(-) diff --git a/net/usrsock/usrsock.h b/net/usrsock/usrsock.h index bb717f91ed..4cecbc0dc6 100644 --- a/net/usrsock/usrsock.h +++ b/net/usrsock/usrsock.h @@ -83,14 +83,7 @@ struct usrsock_conn_s { /* Common prologue of all connection structures. */ - dq_entry_t node; /* Supports a doubly linked list */ - - /* This is a list of usrsock callbacks. Each callback represents a thread - * that is stalled, waiting for a specific event. - */ - - FAR struct devif_callback_s *list; /* Usersock callbacks */ - FAR struct devif_callback_s *list_tail; + struct socket_conn_s sconn; /* usrsock-specific content follows */ diff --git a/net/usrsock/usrsock_conn.c b/net/usrsock/usrsock_conn.c index 209914f27c..d6daac973a 100644 --- a/net/usrsock/usrsock_conn.c +++ b/net/usrsock/usrsock_conn.c @@ -112,7 +112,7 @@ FAR struct usrsock_conn_s *usrsock_alloc(void) { for (i = 0; i < CONFIG_NET_USRSOCK_CONNS; i++) { - dq_addlast(&conn[i].node, &g_free_usrsock_connections); + dq_addlast(&conn[i].sconn.node, &g_free_usrsock_connections); } } } @@ -130,7 +130,7 @@ FAR struct usrsock_conn_s *usrsock_alloc(void) /* Enqueue the connection into the active list */ - dq_addlast(&conn->node, &g_active_usrsock_connections); + dq_addlast(&conn->sconn.node, &g_active_usrsock_connections); } _usrsock_semgive(&g_free_sem); @@ -156,7 +156,7 @@ void usrsock_free(FAR struct usrsock_conn_s *conn) /* Remove the connection from the active list */ - dq_rem(&conn->node, &g_active_usrsock_connections); + dq_rem(&conn->sconn.node, &g_active_usrsock_connections); /* Reset structure */ @@ -165,7 +165,7 @@ void usrsock_free(FAR struct usrsock_conn_s *conn) /* Free the connection */ - dq_addlast(&conn->node, &g_free_usrsock_connections); + dq_addlast(&conn->sconn.node, &g_free_usrsock_connections); _usrsock_semgive(&g_free_sem); } @@ -188,7 +188,7 @@ FAR struct usrsock_conn_s *usrsock_nextconn(FAR struct usrsock_conn_s *conn) } else { - return (FAR struct usrsock_conn_s *)conn->node.flink; + return (FAR struct usrsock_conn_s *)conn->sconn.node.flink; } } @@ -237,7 +237,8 @@ int usrsock_setup_request_callback(FAR struct usrsock_conn_s *conn, /* Set up the callback in the connection */ - pstate->cb = devif_callback_alloc(NULL, &conn->list, &conn->list_tail); + pstate->cb = devif_callback_alloc(NULL, &conn->sconn.list, + &conn->sconn.list_tail); if (pstate->cb) { /* Take a lock since only one outstanding request is allowed */ @@ -291,7 +292,8 @@ void usrsock_teardown_request_callback(FAR struct usrsock_reqstate_s *pstate) /* Make sure that no further events are processed */ - devif_conn_callback_free(NULL, pstate->cb, &conn->list, &conn->list_tail); + devif_conn_callback_free(NULL, pstate->cb, &conn->sconn.list, + &conn->sconn.list_tail); nxsem_destroy(&pstate->recvsem); pstate->cb = NULL; @@ -348,7 +350,7 @@ void usrsock_initialize(void) conn->usockid = -1; conn->state = USRSOCK_CONN_STATE_UNINITIALIZED; - dq_addlast(&conn->node, &g_free_usrsock_connections); + dq_addlast(&conn->sconn.node, &g_free_usrsock_connections); } #endif diff --git a/net/usrsock/usrsock_event.c b/net/usrsock/usrsock_event.c index b55b886d8e..b7475a3f6d 100644 --- a/net/usrsock/usrsock_event.c +++ b/net/usrsock/usrsock_event.c @@ -110,7 +110,7 @@ int usrsock_event(FAR struct usrsock_conn_s *conn, uint16_t events) /* Send events to callbacks */ - devif_conn_event(NULL, conn, events, conn->list); + devif_conn_event(NULL, conn, events, conn->sconn.list); net_unlock(); return OK; diff --git a/net/usrsock/usrsock_poll.c b/net/usrsock/usrsock_poll.c index 78e9cbaa1a..2dd4364415 100644 --- a/net/usrsock/usrsock_poll.c +++ b/net/usrsock/usrsock_poll.c @@ -172,7 +172,7 @@ static int usrsock_pollsetup(FAR struct socket *psock, /* Allocate a usrsock callback structure */ - cb = devif_callback_alloc(NULL, &conn->list, &conn->list_tail); + cb = devif_callback_alloc(NULL, &conn->sconn.list, &conn->sconn.list_tail); if (cb == NULL) { ret = -EBUSY; @@ -318,8 +318,8 @@ static int usrsock_pollteardown(FAR struct socket *psock, devif_conn_callback_free(NULL, info->cb, - &conn->list, - &conn->list_tail); + &conn->sconn.list, + &conn->sconn.list_tail); /* Release the poll/select data slot */