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

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


The following commit(s) were added to refs/heads/master by this push:
     new 2873484  sim/usrsock: increase the sim usrsock buffer size
2873484 is described below

commit 287348475c154239839c5b569a52e8e3a7fa66e2
Author: chao.an <anc...@xiaomi.com>
AuthorDate: Tue Dec 21 12:30:31 2021 +0800

    sim/usrsock: increase the sim usrsock buffer size
    
    1. Increase the sim usrsock buffer size:
    arch/sim/src/sim/up_usrsock.c
    
    2. Fix build break
    arch/sim/src/sim/up_usrsock_host.c
    
    Signed-off-by: chao.an <anc...@xiaomi.com>
---
 arch/sim/src/sim/up_usrsock.c      | 32 +++++++++++++++++++-------------
 arch/sim/src/sim/up_usrsock_host.c |  1 -
 2 files changed, 19 insertions(+), 14 deletions(-)

diff --git a/arch/sim/src/sim/up_usrsock.c b/arch/sim/src/sim/up_usrsock.c
index 5cd0185..eea714a 100644
--- a/arch/sim/src/sim/up_usrsock.c
+++ b/arch/sim/src/sim/up_usrsock.c
@@ -36,13 +36,20 @@
 #include "up_usrsock_host.h"
 
 /****************************************************************************
+ * Pre-processor Definitions
+ ****************************************************************************/
+
+#define SIM_USRSOCK_BUFSIZE (400 * 1024)
+
+/****************************************************************************
  * Private Type Declarations
  ****************************************************************************/
 
 struct usrsock_s
 {
   struct file usock;
-  uint8_t data[4096];
+  uint8_t     in [SIM_USRSOCK_BUFSIZE];
+  uint8_t     out[SIM_USRSOCK_BUFSIZE];
 };
 
 /****************************************************************************
@@ -206,10 +213,10 @@ static int usrsock_recvfrom_handler(FAR struct usrsock_s 
*usrsock,
   size_t buflen = req->max_buflen;
   int ret;
 
-  ack = (struct usrsock_message_datareq_ack_s *)usrsock->data;
-  if (sizeof(*ack) + inaddrlen + buflen > sizeof(usrsock->data))
+  ack = (struct usrsock_message_datareq_ack_s *)usrsock->out;
+  if (sizeof(*ack) + inaddrlen + buflen > sizeof(usrsock->out))
     {
-      buflen = sizeof(usrsock->data) - sizeof(*ack) - inaddrlen;
+      buflen = sizeof(usrsock->out) - sizeof(*ack) - inaddrlen;
     }
 
   ret = usrsock_host_recvfrom(req->usockid,
@@ -246,7 +253,7 @@ static int usrsock_getsockopt_handler(FAR struct usrsock_s 
*usrsock,
   socklen_t optlen = req->max_valuelen;
   int ret;
 
-  ack = (FAR struct usrsock_message_datareq_ack_s *)usrsock->data;
+  ack = (FAR struct usrsock_message_datareq_ack_s *)usrsock->out;
   ret = usrsock_host_getsockopt(req->usockid,
                                 req->level, req->option,
                                 ack + 1, &optlen);
@@ -264,7 +271,7 @@ static int usrsock_getsockname_handler(FAR struct usrsock_s 
*usrsock,
   socklen_t inaddrlen = req->max_addrlen;
   int ret;
 
-  ack = (FAR struct usrsock_message_datareq_ack_s *)usrsock->data;
+  ack = (FAR struct usrsock_message_datareq_ack_s *)usrsock->out;
   ret = usrsock_host_getsockname(req->usockid,
           (FAR struct sockaddr *)(ack + 1), &outaddrlen);
 
@@ -281,7 +288,7 @@ static int usrsock_getpeername_handler(FAR struct usrsock_s 
*usrsock,
   socklen_t inaddrlen = req->max_addrlen;
   int ret;
 
-  ack = (FAR struct usrsock_message_datareq_ack_s *)usrsock->data;
+  ack = (FAR struct usrsock_message_datareq_ack_s *)usrsock->out;
   ret = usrsock_host_getpeername(req->usockid,
           (FAR struct sockaddr *)(ack + 1), &outaddrlen);
 
@@ -319,7 +326,7 @@ static int usrsock_accept_handler(FAR struct usrsock_s 
*usrsock,
   int sockfd;
   int ret;
 
-  ack = (FAR struct usrsock_message_datareq_ack_s *)usrsock->data;
+  ack = (FAR struct usrsock_message_datareq_ack_s *)usrsock->out;
   sockfd = usrsock_host_accept(req->usockid,
                                outaddrlen ?
                                (FAR struct sockaddr *)(ack + 1) : NULL,
@@ -361,7 +368,7 @@ static int usrsock_ioctl_handler(FAR struct usrsock_s 
*usrsock,
   FAR struct usrsock_message_datareq_ack_s *ack;
   int ret;
 
-  ack = (FAR struct usrsock_message_datareq_ack_s *)usrsock->data;
+  ack = (FAR struct usrsock_message_datareq_ack_s *)usrsock->out;
   memcpy(ack + 1, req + 1, req->arglen);
   ret = usrsock_host_ioctl(req->usockid, req->cmd,
                            (unsigned long)(ack + 1));
@@ -404,7 +411,6 @@ int usrsock_init(void)
 void usrsock_loop(void)
 {
   FAR struct usrsock_request_common_s *common;
-  uint8_t data[4096];
   int ret;
   struct pollfd pfd =
     {
@@ -415,16 +421,16 @@ void usrsock_loop(void)
   ret = poll(&pfd, 1, 0);
   if (ret > 0)
     {
-      ret = file_read(&g_usrsock.usock, data, sizeof(data));
+      ret = file_read(&g_usrsock.usock, g_usrsock.in, sizeof(g_usrsock.in));
       if (ret > 0)
         {
-          common = (FAR struct usrsock_request_common_s *)data;
+          common = (FAR struct usrsock_request_common_s *)g_usrsock.in;
 
           if (common->reqid >= 0 &&
               common->reqid < USRSOCK_REQUEST__MAX)
             {
               ret = g_usrsock_handler[common->reqid](&g_usrsock,
-                                                     data, ret);
+                                                     g_usrsock.in, ret);
               if (ret < 0)
                 {
                   syslog(LOG_ERR, "Usrsock request %d failed: %d\n",
diff --git a/arch/sim/src/sim/up_usrsock_host.c 
b/arch/sim/src/sim/up_usrsock_host.c
index ed701de..6494ecb 100644
--- a/arch/sim/src/sim/up_usrsock_host.c
+++ b/arch/sim/src/sim/up_usrsock_host.c
@@ -444,7 +444,6 @@ int usrsock_host_accept(int sockfd, struct nuttx_sockaddr 
*addr,
 {
   socklen_t naddrlen = sizeof(socklen_t);
   struct sockaddr naddr;
-  socklen_t naddrlen;
   int ret;
 
   ret = accept(sockfd, &naddr, &naddrlen);

Reply via email to