This is an automated email from the ASF dual-hosted git repository.

xiaoxiang781216 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/nuttx.git

commit d80a59e373c85bf1c306a1f66a629ada1a8e39b1
Author: Yongrong Wang <[email protected]>
AuthorDate: Thu Oct 9 19:37:06 2025 +0800

    vsock: inline some simple functions to improve performance
    
    The vhost tx rate increased by 6%.
    The virtio tx rate did not increase significantly.
    
    Signed-off-by: Yongrong Wang <[email protected]>
---
 net/vsock/vsock.h        | 32 +++++++++++++++++++++----
 net/vsock/vsock_addr.c   | 16 -------------
 net/vsock/vsock_sockif.c | 62 ++++++++++++++++++++----------------------------
 net/vsock/vsock_vhost.c  |  2 +-
 4 files changed, 55 insertions(+), 57 deletions(-)

diff --git a/net/vsock/vsock.h b/net/vsock/vsock.h
index 60b8896128e..082cb81bb9a 100644
--- a/net/vsock/vsock.h
+++ b/net/vsock/vsock.h
@@ -98,6 +98,17 @@ vsock_pkt2hdr(FAR struct vsock_pkt_s *pkt)
   return (FAR struct vsock_hdr_s *)pkt->vb[0].buf;
 }
 
+static inline_function void vsock_post(FAR sem_t *sem)
+{
+  int semcount = 0;
+
+  nxsem_get_value(sem, &semcount);
+  if (semcount < 1)
+    {
+      nxsem_post(sem);
+    }
+}
+
 void vsock_recv_pkt(FAR struct vsock_transport_s *t,
                     FAR struct vsock_pkt_s *pkt);
 
@@ -114,6 +125,23 @@ void vsock_transport_register(FAR struct vsock_transport_s 
*t);
  * vsock_addr.c
  */
 
+static inline_function void vsock_addr_init(FAR struct sockaddr_vm *addr,
+                                            uint64_t cid, uint32_t port)
+{
+  memset(addr, 0, sizeof(*addr));
+  addr->svm_family = AF_VSOCK;
+  addr->svm_cid    = cid;
+  addr->svm_port   = port;
+}
+
+static inline_function bool
+vsock_addr_equal(FAR const struct sockaddr_vm *addr1,
+                 FAR const struct sockaddr_vm *addr2)
+{
+  return addr1->svm_cid == addr2->svm_cid &&
+         addr1->svm_port == addr2->svm_port;
+}
+
 int vsock_addr_is_valid(FAR const struct sockaddr *addr, socklen_t addrlen);
 int vsock_addr_set(FAR struct sockaddr_vm *vmaddr,
                    FAR const struct sockaddr *addr,
@@ -121,10 +149,6 @@ int vsock_addr_set(FAR struct sockaddr_vm *vmaddr,
 int vsock_addr_get(FAR const struct sockaddr_vm *vmaddr,
                    FAR struct sockaddr *addr,
                    FAR socklen_t *addrlen);
-void vsock_addr_init(FAR struct sockaddr_vm *addr, uint64_t cid,
-                     uint32_t port);
-bool vsock_addr_equal(FAR const struct sockaddr_vm *addr1,
-                      FAR const struct sockaddr_vm *addr2);
 
 /* Virtual socket initialize */
 
diff --git a/net/vsock/vsock_addr.c b/net/vsock/vsock_addr.c
index 159fd2a1c78..a0b843e3cff 100644
--- a/net/vsock/vsock_addr.c
+++ b/net/vsock/vsock_addr.c
@@ -89,19 +89,3 @@ int vsock_addr_get(FAR const struct sockaddr_vm *vmaddr,
   *addrlen = sizeof(struct sockaddr_vm);
   return 0;
 }
-
-void vsock_addr_init(FAR struct sockaddr_vm *addr, uint64_t cid,
-                     uint32_t port)
-{
-  memset(addr, 0, sizeof(*addr));
-  addr->svm_family = AF_VSOCK;
-  addr->svm_cid    = cid;
-  addr->svm_port   = port;
-}
-
-bool vsock_addr_equal(FAR const struct sockaddr_vm *addr1,
-                      FAR const struct sockaddr_vm *addr2)
-{
-  return addr1->svm_cid == addr2->svm_cid &&
-         addr1->svm_port == addr2->svm_port;
-}
diff --git a/net/vsock/vsock_sockif.c b/net/vsock/vsock_sockif.c
index de1d7b3c854..87d611ea61a 100644
--- a/net/vsock/vsock_sockif.c
+++ b/net/vsock/vsock_sockif.c
@@ -314,36 +314,22 @@ static inline_function void vsock_tx_unlock(FAR struct 
vsock_conn_s *conn)
  * Name: vsock_breaklock/vsock_restorelock
  ****************************************************************************/
 
-static void vsock_breaklock(FAR struct vsock_conn_s *conn,
-                            FAR unsigned int *rxcount,
-                            FAR unsigned int *txcount)
+static inline_function void vsock_breaklock(FAR struct vsock_conn_s *conn,
+                                            FAR unsigned int *rxcount,
+                                            FAR unsigned int *txcount)
 {
   nxrmutex_breaklock(&conn->tx_lock, txcount);
   nxrmutex_breaklock(&conn->rx_lock, rxcount);
 }
 
-static void vsock_restorelock(FAR struct vsock_conn_s *conn,
-                              unsigned int rxcount, unsigned int txcount)
+static inline_function void vsock_restorelock(FAR struct vsock_conn_s *conn,
+                                              unsigned int rxcount,
+                                              unsigned int txcount)
 {
   nxrmutex_restorelock(&conn->rx_lock, rxcount);
   nxrmutex_restorelock(&conn->tx_lock, txcount);
 }
 
-/****************************************************************************
- * Name: vsock_post
- ****************************************************************************/
-
-static inline_function void vsock_post(FAR sem_t *sem)
-{
-  int semcount = 0;
-
-  nxsem_get_value(sem, &semcount);
-  if (semcount < 1)
-    {
-      nxsem_post(sem);
-    }
-}
-
 /****************************************************************************
  * Name: vsock_get_rx_size
  *
@@ -352,7 +338,8 @@ static inline_function void vsock_post(FAR sem_t *sem)
  *
  ****************************************************************************/
 
-static size_t vsock_get_rx_size(FAR struct vsock_conn_s *conn)
+static inline_function size_t
+vsock_get_rx_size(FAR struct vsock_conn_s *conn)
 {
   size_t rx_size = 0;
 
@@ -510,12 +497,12 @@ static void vsock_free(FAR struct vsock_conn_s *conn)
  *
  ****************************************************************************/
 
-static void vsock_add_ref(FAR struct vsock_conn_s *conn)
+static inline_function void vsock_add_ref(FAR struct vsock_conn_s *conn)
 {
   atomic_fetch_add(&conn->ref, 1);
 }
 
-static void vsock_sub_ref(FAR struct vsock_conn_s *conn)
+static inline_function void vsock_sub_ref(FAR struct vsock_conn_s *conn)
 {
   if (atomic_fetch_sub(&conn->ref, 1) <= 1)
     {
@@ -582,7 +569,7 @@ static FAR struct vsock_conn_s *vsock_alloc(void)
  *
  ****************************************************************************/
 
-static FAR struct vsock_conn_s *
+static inline_function FAR struct vsock_conn_s *
 vsock_find_bound_conn(FAR const struct sockaddr_vm *addr)
 {
   FAR const struct sockaddr_vm *local;
@@ -608,7 +595,7 @@ vsock_find_bound_conn(FAR const struct sockaddr_vm *addr)
   return NULL;
 }
 
-static FAR struct vsock_conn_s *
+static inline_function FAR struct vsock_conn_s *
 vsock_find_connected_conn(FAR const struct sockaddr_vm *remote_addr,
                           FAR const struct sockaddr_vm *local_addr)
 {
@@ -745,7 +732,8 @@ out:
  *
  ****************************************************************************/
 
-static void vsock_unbind_internal(FAR struct vsock_conn_s *conn)
+static inline_function void
+vsock_unbind_internal(FAR struct vsock_conn_s *conn)
 {
   conn->sconn.s_error = 0;
   vsock_remove_conn(conn);
@@ -799,8 +787,9 @@ vsock_get_tx_credit(FAR struct vsock_conn_s *conn)
  * Name: vsock_update_tx_credit
  ****************************************************************************/
 
-static void vsock_update_tx_credit(FAR struct vsock_conn_s *conn,
-                                   FAR struct vsock_pkt_s *pkt)
+static inline_function void
+vsock_update_tx_credit(FAR struct vsock_conn_s *conn,
+                       FAR struct vsock_pkt_s *pkt)
 {
   FAR struct vsock_hdr_s *hdr = vsock_pkt2hdr(pkt);
   irqstate_t flags;
@@ -839,9 +828,9 @@ static inline_function bool vsock_msg_done(FAR const struct 
vsock_msg_s *msg)
  *
  ****************************************************************************/
 
-static size_t vsock_copy_pkt2msg(FAR struct vsock_conn_s *conn,
-                                 FAR struct vsock_msg_s *msg,
-                                 FAR struct vsock_pkt_s *pkt)
+static inline_function size_t
+vsock_copy_pkt2msg(FAR struct vsock_conn_s *conn,
+                   FAR struct vsock_msg_s *msg, FAR struct vsock_pkt_s *pkt)
 {
   size_t ret = 0;
 
@@ -958,8 +947,9 @@ static size_t vsock_copy_msg2pkt(FAR struct vsock_pkt_s 
*pkt,
  *
  ****************************************************************************/
 
-static size_t vsock_copy_pkt2circ(FAR struct vsock_conn_s *conn,
-                                   FAR struct vsock_pkt_s *pkt)
+static inline_function size_t
+vsock_copy_pkt2circ(FAR struct vsock_conn_s *conn,
+                    FAR struct vsock_pkt_s *pkt)
 {
   FAR struct circbuf_s *circ = &conn->rx_buf;
   size_t ret = 0;
@@ -1077,7 +1067,7 @@ static int vsock_send_pkt(FAR struct vsock_conn_s *conn,
  * Name: vsock_send_credit
  ****************************************************************************/
 
-static int vsock_send_credit(FAR struct vsock_conn_s *conn)
+static inline_function int vsock_send_credit(FAR struct vsock_conn_s *conn)
 {
   return vsock_send_pkt(conn, NULL, VIRTIO_VSOCK_OP_CREDIT_UPDATE, 0, 0, 0);
 }
@@ -1086,8 +1076,8 @@ static int vsock_send_credit(FAR struct vsock_conn_s 
*conn)
  * Name: vsock_update_rx_credit
  ****************************************************************************/
 
-static void vsock_update_rx_credit(FAR struct vsock_conn_s *conn,
-                                   size_t size)
+static inline_function void
+vsock_update_rx_credit(FAR struct vsock_conn_s *conn, size_t size)
 {
   irqstate_t flags;
   uint32_t delta;
diff --git a/net/vsock/vsock_vhost.c b/net/vsock/vsock_vhost.c
index 3dc7b0bf3b2..0b13e184506 100644
--- a/net/vsock/vsock_vhost.c
+++ b/net/vsock/vsock_vhost.c
@@ -111,7 +111,7 @@ static const struct vsock_transport_ops_s 
g_vsock_vhost_transport_ops =
  * Name: vsock_vhost_trans2priv
  ****************************************************************************/
 
-static FAR struct vsock_vhost_priv_s *
+static inline_function FAR struct vsock_vhost_priv_s *
 vsock_vhost_trans2priv(FAR struct vsock_transport_s *t)
 {
   return container_of(t, struct vsock_vhost_priv_s, t);

Reply via email to