You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nuttx.apache.org by xi...@apache.org on 2021/11/04 18:30:00 UTC
[incubator-nuttx] branch master updated (c077361 -> 022c067)
This is an automated email from the ASF dual-hosted git repository.
xiaoxiang pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-nuttx.git.
from c077361 imxrt:usb Fix EP type allocation
new 163109c openamp: notify the user when the remote address is received
new bb41af3 rpmsg_socket: move rpmsg_send out of lock
new 59ae421 socket_rpmsg: support SOCK_SEQPACKET
new 00ef4fc rpmgs_socket: set RPMSG_SOCKET_NAME_SIZE to 16 for handing prefix
new 883d66b socket_rpmsg: fix save rp_name error when accept
new 022c067 socket_rpmsg: use ns_bound to send SYNC packet
The 6 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
Summary of changes:
drivers/rptun/Kconfig | 8 +-
include/netpacket/rpmsg.h | 2 +-
net/rpmsg/rpmsg_sockif.c | 152 ++++++++++++---------
...y-the-user-when-the-remote-address-is-rec.patch | 68 +++++++++
openamp/open-amp.defs | 1 +
5 files changed, 161 insertions(+), 70 deletions(-)
create mode 100644 openamp/0005-rpmsg-notify-the-user-when-the-remote-address-is-rec.patch
[incubator-nuttx] 03/06: socket_rpmsg: support SOCK_SEQPACKET
Posted by xi...@apache.org.
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
commit 59ae42131477e6cb6d414b085528c75f46b98d6a
Author: ligd <li...@xiaomi.com>
AuthorDate: Sat Oct 9 13:37:57 2021 +0800
socket_rpmsg: support SOCK_SEQPACKET
Signed-off-by: ligd <li...@xiaomi.com>
---
net/rpmsg/rpmsg_sockif.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/net/rpmsg/rpmsg_sockif.c b/net/rpmsg/rpmsg_sockif.c
index 8c582fc..5c4fe43 100644
--- a/net/rpmsg/rpmsg_sockif.c
+++ b/net/rpmsg/rpmsg_sockif.c
@@ -1144,7 +1144,7 @@ static ssize_t rpmsg_socket_recvmsg(FAR struct socket *psock,
FAR struct rpmsg_socket_conn_s *conn = psock->s_conn;
ssize_t ret;
- if (psock->s_type == SOCK_DGRAM && _SS_ISBOUND(psock->s_flags)
+ if (psock->s_type != SOCK_STREAM && _SS_ISBOUND(psock->s_flags)
&& !_SS_ISCONNECTED(psock->s_flags))
{
ret = rpmsg_socket_connect_internal(psock);
@@ -1161,7 +1161,7 @@ static ssize_t rpmsg_socket_recvmsg(FAR struct socket *psock,
rpmsg_socket_lock(&conn->recvlock);
- if (psock->s_type == SOCK_DGRAM)
+ if (psock->s_type != SOCK_STREAM)
{
uint32_t datalen;
[incubator-nuttx] 04/06: rpmgs_socket: set RPMSG_SOCKET_NAME_SIZE
to 16 for handing prefix
Posted by xi...@apache.org.
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
commit 00ef4fca51f6f0e6a954487a1658749a8b5387f3
Author: ligd <li...@xiaomi.com>
AuthorDate: Fri Oct 15 22:39:17 2021 +0800
rpmgs_socket: set RPMSG_SOCKET_NAME_SIZE to 16 for handing prefix
Signed-off-by: ligd <li...@xiaomi.com>
---
include/netpacket/rpmsg.h | 2 +-
net/rpmsg/rpmsg_sockif.c | 7 +++++--
2 files changed, 6 insertions(+), 3 deletions(-)
diff --git a/include/netpacket/rpmsg.h b/include/netpacket/rpmsg.h
index d422b21..46c93c0 100644
--- a/include/netpacket/rpmsg.h
+++ b/include/netpacket/rpmsg.h
@@ -32,7 +32,7 @@
****************************************************************************/
#define RPMSG_SOCKET_CPU_SIZE 16
-#define RPMSG_SOCKET_NAME_SIZE 32
+#define RPMSG_SOCKET_NAME_SIZE 16
/****************************************************************************
* Public Type Definitions
diff --git a/net/rpmsg/rpmsg_sockif.c b/net/rpmsg/rpmsg_sockif.c
index 5c4fe43..f32b637 100644
--- a/net/rpmsg/rpmsg_sockif.c
+++ b/net/rpmsg/rpmsg_sockif.c
@@ -52,6 +52,9 @@
#define RPMSG_SOCKET_CMD_DATA 2
#define RPMSG_SOCKET_NAME_PREFIX "rpmsg-socket"
+static_assert(RPMSG_SOCKET_NAME_SIZE + 13 <= RPMSG_NAME_SIZE,
+ "socket name size should NOT bigger then RPMSG_NAME_SIZE");
+
/****************************************************************************
* Private Types
****************************************************************************/
@@ -407,7 +410,7 @@ static void rpmsg_socket_device_created(FAR struct rpmsg_device *rdev,
FAR void *priv)
{
FAR struct rpmsg_socket_conn_s *conn = priv;
- char buf[RPMSG_SOCKET_NAME_SIZE];
+ char buf[RPMSG_NAME_SIZE];
if (conn->ept.rdev)
{
@@ -457,7 +460,7 @@ static void rpmsg_socket_ns_bind(FAR struct rpmsg_device *rdev,
FAR struct rpmsg_socket_conn_s *server = priv;
FAR struct rpmsg_socket_conn_s *tmp;
FAR struct rpmsg_socket_conn_s *new;
- char buf[RPMSG_SOCKET_NAME_SIZE];
+ char buf[RPMSG_NAME_SIZE];
int cnt = 0;
int ret;
[incubator-nuttx] 02/06: rpmsg_socket: move rpmsg_send out of lock
Posted by xi...@apache.org.
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
commit bb41af39355dc3a11911a5d32402152c9f3d95e4
Author: ligd <li...@xiaomi.com>
AuthorDate: Mon Sep 13 12:18:28 2021 +0800
rpmsg_socket: move rpmsg_send out of lock
Signed-off-by: ligd <li...@xiaomi.com>
---
net/rpmsg/rpmsg_sockif.c | 76 +++++++++++++++++++++++++-----------------------
1 file changed, 40 insertions(+), 36 deletions(-)
diff --git a/net/rpmsg/rpmsg_sockif.c b/net/rpmsg/rpmsg_sockif.c
index 78f248a..8c582fc 100644
--- a/net/rpmsg/rpmsg_sockif.c
+++ b/net/rpmsg/rpmsg_sockif.c
@@ -260,21 +260,21 @@ static int rpmsg_socket_wakeup(FAR struct rpmsg_socket_conn_s *conn)
return ret;
}
+ rpmsg_socket_lock(&conn->recvlock);
space = conn->recvpos - conn->lastpos;
if (space > circbuf_size(&conn->recvbuf) / 2)
{
+ conn->lastpos = conn->recvpos;
msg.cmd = RPMSG_SOCKET_CMD_DATA;
msg.pos = conn->recvpos;
msg.len = 0;
- ret = rpmsg_send(&conn->ept, &msg, sizeof(msg));
- if (ret >= 0)
- {
- conn->lastpos = conn->recvpos;
- }
+ ret = 1;
}
- return ret;
+ rpmsg_socket_unlock(&conn->recvlock);
+
+ return ret ? rpmsg_send(&conn->ept, &msg, sizeof(msg)) : 0;
}
static inline uint32_t rpmsg_socket_get_space(
@@ -908,21 +908,21 @@ static ssize_t rpmsg_socket_send_continuous(FAR struct socket *psock,
uint32_t offset = 0;
int ret = 0;
- rpmsg_socket_lock(&conn->sendlock);
-
while (written < len)
{
- uint32_t block = MIN(len - written, rpmsg_socket_get_space(conn));
FAR struct rpmsg_socket_data_s *msg;
uint32_t block_written = 0;
uint32_t ipcsize;
+ uint32_t block;
+
+ rpmsg_socket_lock(&conn->sendlock);
+ block = MIN(len - written, rpmsg_socket_get_space(conn));
+ rpmsg_socket_unlock(&conn->sendlock);
if (block == 0)
{
if (!_SS_ISNONBLOCK(psock->s_flags))
{
- rpmsg_socket_unlock(&conn->sendlock);
-
ret = net_timedwait(&conn->sendsem,
_SO_TIMEOUT(psock->s_sndtimeo));
if (!conn->ept.rdev)
@@ -930,8 +930,6 @@ static ssize_t rpmsg_socket_send_continuous(FAR struct socket *psock,
ret = -ECONNRESET;
}
- rpmsg_socket_lock(&conn->sendlock);
-
if (ret < 0)
{
break;
@@ -942,6 +940,8 @@ static ssize_t rpmsg_socket_send_continuous(FAR struct socket *psock,
ret = -EAGAIN;
break;
}
+
+ continue;
}
msg = rpmsg_get_tx_payload_buffer(&conn->ept, &ipcsize, true);
@@ -951,6 +951,9 @@ static ssize_t rpmsg_socket_send_continuous(FAR struct socket *psock,
break;
}
+ rpmsg_socket_lock(&conn->sendlock);
+
+ block = MIN(len - written, rpmsg_socket_get_space(conn));
block = MIN(block, ipcsize - sizeof(*msg));
msg->cmd = RPMSG_SOCKET_CMD_DATA;
@@ -974,6 +977,8 @@ static ssize_t rpmsg_socket_send_continuous(FAR struct socket *psock,
conn->lastpos = conn->recvpos;
conn->sendpos += msg->len;
+ rpmsg_socket_unlock(&conn->sendlock);
+
ret = rpmsg_send_nocopy(&conn->ept, msg, block + sizeof(*msg));
if (ret < 0)
{
@@ -983,8 +988,6 @@ static ssize_t rpmsg_socket_send_continuous(FAR struct socket *psock,
written += block;
}
- rpmsg_socket_unlock(&conn->sendlock);
-
return written ? written : ret;
}
@@ -998,6 +1001,7 @@ static ssize_t rpmsg_socket_send_single(FAR struct socket *psock,
uint32_t total = len + sizeof(*msg) + sizeof(uint32_t);
uint32_t written = 0;
uint32_t ipcsize;
+ uint32_t space;
char *msgpos;
int ret;
@@ -1006,14 +1010,17 @@ static ssize_t rpmsg_socket_send_single(FAR struct socket *psock,
return -EFBIG;
}
- rpmsg_socket_lock(&conn->sendlock);
-
- while (total - sizeof(*msg) > rpmsg_socket_get_space(conn))
+ while (1)
{
+ rpmsg_socket_lock(&conn->sendlock);
+ space = rpmsg_socket_get_space(conn);
+ rpmsg_socket_unlock(&conn->sendlock);
+
+ if (space >= total - sizeof(*msg))
+ break;
+
if (!_SS_ISNONBLOCK(psock->s_flags))
{
- rpmsg_socket_unlock(&conn->sendlock);
-
ret = net_timedwait(&conn->sendsem,
_SO_TIMEOUT(psock->s_sndtimeo));
if (!conn->ept.rdev)
@@ -1021,32 +1028,29 @@ static ssize_t rpmsg_socket_send_single(FAR struct socket *psock,
ret = -ECONNRESET;
}
- rpmsg_socket_lock(&conn->sendlock);
-
if (ret < 0)
{
- goto out;
+ return ret;
}
}
else
{
- ret = -EAGAIN;
- goto out;
+ return -EAGAIN;
}
}
msg = rpmsg_get_tx_payload_buffer(&conn->ept, &ipcsize, true);
if (!msg)
{
- ret = -EINVAL;
- goto out;
+ return -EINVAL;
}
- if (total > ipcsize)
- {
- total = ipcsize;
- len = ipcsize - sizeof(*msg) - sizeof(uint32_t);
- }
+ rpmsg_socket_lock(&conn->sendlock);
+
+ space = rpmsg_socket_get_space(conn);
+ total = MIN(total, space + sizeof(*msg));
+ total = MIN(total, ipcsize);
+ len = total - sizeof(*msg) - sizeof(uint32_t);
/* SOCK_DGRAM need write len to buffer */
@@ -1074,9 +1078,10 @@ static ssize_t rpmsg_socket_send_single(FAR struct socket *psock,
conn->lastpos = conn->recvpos;
conn->sendpos += len + sizeof(uint32_t);
- ret = rpmsg_send_nocopy(&conn->ept, msg, total);
-out:
rpmsg_socket_unlock(&conn->sendlock);
+
+ ret = rpmsg_send_nocopy(&conn->ept, msg, total);
+
return ret > 0 ? len : ret;
}
@@ -1180,7 +1185,6 @@ static ssize_t rpmsg_socket_recvmsg(FAR struct socket *psock,
if (ret > 0)
{
- rpmsg_socket_wakeup(conn);
goto out;
}
@@ -1215,7 +1219,6 @@ static ssize_t rpmsg_socket_recvmsg(FAR struct socket *psock,
if (!conn->recvdata)
{
ret = conn->recvlen;
- rpmsg_socket_wakeup(conn);
}
else
{
@@ -1227,6 +1230,7 @@ out:
if (ret > 0)
{
+ rpmsg_socket_wakeup(conn);
rpmsg_socket_getaddr(conn, from, fromlen);
}
[incubator-nuttx] 05/06: socket_rpmsg: fix save rp_name error when
accept
Posted by xi...@apache.org.
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
commit 883d66b906ce8be414b7650c49f4c3709832aecb
Author: ligd <li...@xiaomi.com>
AuthorDate: Mon Oct 18 23:06:10 2021 +0800
socket_rpmsg: fix save rp_name error when accept
Signed-off-by: ligd <li...@xiaomi.com>
---
drivers/rptun/Kconfig | 8 ++++++--
net/rpmsg/rpmsg_sockif.c | 34 ++++++++++++++++++++++------------
2 files changed, 28 insertions(+), 14 deletions(-)
diff --git a/drivers/rptun/Kconfig b/drivers/rptun/Kconfig
index 82243eb..b02afba 100644
--- a/drivers/rptun/Kconfig
+++ b/drivers/rptun/Kconfig
@@ -21,7 +21,11 @@ config RPTUN_STACKSIZE
default DEFAULT_TASK_STACKSIZE
config RPTUN_LOADER
- bool "rptun loader support"
- default n
+ bool "rptun loader support"
+ default n
+
+config RPTUN_LOCAL_CPUNAME
+ string "rptun local cpuname"
+ default LIBC_HOSTNAME
endif # RPTUN
diff --git a/net/rpmsg/rpmsg_sockif.c b/net/rpmsg/rpmsg_sockif.c
index f32b637..0252ac4 100644
--- a/net/rpmsg/rpmsg_sockif.c
+++ b/net/rpmsg/rpmsg_sockif.c
@@ -48,12 +48,13 @@
# define MIN(a, b) ((a) < (b) ? (a) : (b))
#endif
-#define RPMSG_SOCKET_CMD_SYNC 1
-#define RPMSG_SOCKET_CMD_DATA 2
-#define RPMSG_SOCKET_NAME_PREFIX "rpmsg-socket"
+#define RPMSG_SOCKET_CMD_SYNC 1
+#define RPMSG_SOCKET_CMD_DATA 2
+#define RPMSG_SOCKET_NAME_PREFIX "rpmsg-socket:"
+#define RPMSG_SOCKET_NAME_PREFIX_LEN 13
-static_assert(RPMSG_SOCKET_NAME_SIZE + 13 <= RPMSG_NAME_SIZE,
- "socket name size should NOT bigger then RPMSG_NAME_SIZE");
+static_assert(RPMSG_SOCKET_NAME_SIZE + RPMSG_SOCKET_NAME_PREFIX_LEN
+ <= RPMSG_NAME_SIZE, "socket name size config error");
/****************************************************************************
* Private Types
@@ -420,7 +421,7 @@ static void rpmsg_socket_device_created(FAR struct rpmsg_device *rdev,
if (strcmp(conn->rpaddr.rp_cpu, rpmsg_get_cpuname(rdev)) == 0)
{
conn->ept.priv = conn;
- snprintf(buf, sizeof(buf), "%s:%s", RPMSG_SOCKET_NAME_PREFIX,
+ snprintf(buf, sizeof(buf), "%s%s", RPMSG_SOCKET_NAME_PREFIX,
conn->rpaddr.rp_name);
rpmsg_create_ept(&conn->ept, rdev, buf,
@@ -464,7 +465,7 @@ static void rpmsg_socket_ns_bind(FAR struct rpmsg_device *rdev,
int cnt = 0;
int ret;
- snprintf(buf, sizeof(buf), "%s:%s", RPMSG_SOCKET_NAME_PREFIX,
+ snprintf(buf, sizeof(buf), "%s%s", RPMSG_SOCKET_NAME_PREFIX,
server->rpaddr.rp_name);
if (strncmp(name, buf, strlen(buf)))
{
@@ -503,7 +504,7 @@ static void rpmsg_socket_ns_bind(FAR struct rpmsg_device *rdev,
}
strcpy(new->rpaddr.rp_cpu, rpmsg_get_cpuname(rdev));
- strcpy(new->rpaddr.rp_name, name);
+ strcpy(new->rpaddr.rp_name, name + RPMSG_SOCKET_NAME_PREFIX_LEN);
rpmsg_socket_lock(&server->recvlock);
@@ -606,17 +607,26 @@ static int rpmsg_socket_bind(FAR struct socket *psock,
}
static int rpmsg_socket_getsockname(FAR struct socket *psock,
- FAR struct sockaddr *addr,
- FAR socklen_t *addrlen)
+ FAR struct sockaddr *addr,
+ FAR socklen_t *addrlen)
{
- return rpmsg_socket_getaddr(psock->s_conn, addr, addrlen);
+ int ret;
+
+ ret = rpmsg_socket_getaddr(psock->s_conn, addr, addrlen);
+ if (ret >= 0)
+ {
+ strncpy(((struct sockaddr_rpmsg *)addr)->rp_cpu,
+ CONFIG_RPTUN_LOCAL_CPUNAME, RPMSG_SOCKET_CPU_SIZE);
+ }
+
+ return ret;
}
static int rpmsg_socket_getconnname(FAR struct socket *psock,
FAR struct sockaddr *addr,
FAR socklen_t *addrlen)
{
- return rpmsg_socket_getsockname(psock, addr, addrlen);
+ return rpmsg_socket_getaddr(psock->s_conn, addr, addrlen);
}
static int rpmsg_socket_listen(FAR struct socket *psock, int backlog)
[incubator-nuttx] 01/06: openamp: notify the user when the remote
address is received
Posted by xi...@apache.org.
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
commit 163109c80f50ef18077efe3d2a029541b4e00d25
Author: ligd <li...@xiaomi.com>
AuthorDate: Thu Nov 4 21:37:47 2021 +0800
openamp: notify the user when the remote address is received
Signed-off-by: ligd <li...@xiaomi.com>
---
...y-the-user-when-the-remote-address-is-rec.patch | 68 ++++++++++++++++++++++
openamp/open-amp.defs | 1 +
2 files changed, 69 insertions(+)
diff --git a/openamp/0005-rpmsg-notify-the-user-when-the-remote-address-is-rec.patch b/openamp/0005-rpmsg-notify-the-user-when-the-remote-address-is-rec.patch
new file mode 100644
index 0000000..ec98e5e
--- /dev/null
+++ b/openamp/0005-rpmsg-notify-the-user-when-the-remote-address-is-rec.patch
@@ -0,0 +1,68 @@
+From 9ebf24a656b42d262e66a96b237cabb15508f4ea Mon Sep 17 00:00:00 2001
+From: ligd <li...@xiaomi.com>
+Date: Tue, 19 Oct 2021 19:45:14 +0800
+Subject: [PATCH 1/2] rpmsg: notify the user when the remote address is
+ received
+
+Change-Id: I2f0601fb38944e0cfb8888aa397740161b159e40
+Signed-off-by: ligd <li...@xiaomi.com>
+---
+ lib/include/openamp/rpmsg.h | 4 ++++
+ lib/rpmsg/rpmsg_virtio.c | 6 ++++++
+ 2 files changed, 10 insertions(+)
+
+diff --git a/lib/include/openamp/rpmsg.h open-amp/lib/include/openamp/rpmsg.h
+index 5c8b45c..93aeec6 100644
+--- a/lib/include/openamp/rpmsg.h
++++ open-amp/lib/include/openamp/rpmsg.h
+@@ -56,6 +56,7 @@ struct rpmsg_device;
+ /* Returns positive value on success or negative error value on failure */
+ typedef int (*rpmsg_ept_cb)(struct rpmsg_endpoint *ept, void *data,
+ size_t len, uint32_t src, void *priv);
++typedef void (*rpmsg_ns_bound_cb)(struct rpmsg_endpoint *ept);
+ typedef void (*rpmsg_ns_unbind_cb)(struct rpmsg_endpoint *ept);
+ typedef void (*rpmsg_ns_bind_cb)(struct rpmsg_device *rdev,
+ const char *name, uint32_t dest);
+@@ -68,6 +69,8 @@ typedef void (*rpmsg_ns_bind_cb)(struct rpmsg_device *rdev,
+ * @dest_addr: address of the default remote endpoint binded.
+ * @cb: user rx callback, return value of this callback is reserved
+ * for future use, for now, only allow RPMSG_SUCCESS as return value.
++ * @ns_bound_cb: end point service bound callback, called when remote
++ * ept address is received.
+ * @ns_unbind_cb: end point service unbind callback, called when remote
+ * ept is destroyed.
+ * @node: end point node.
+@@ -82,6 +85,7 @@ struct rpmsg_endpoint {
+ uint32_t addr;
+ uint32_t dest_addr;
+ rpmsg_ept_cb cb;
++ rpmsg_ns_bound_cb ns_bound_cb;
+ rpmsg_ns_unbind_cb ns_unbind_cb;
+ struct metal_list node;
+ void *priv;
+diff --git a/lib/rpmsg/rpmsg_virtio.c open-amp/lib/rpmsg/rpmsg_virtio.c
+index 2f28a30..51c2565 100644
+--- a/lib/rpmsg/rpmsg_virtio.c
++++ open-amp/lib/rpmsg/rpmsg_virtio.c
+@@ -569,12 +569,18 @@ static int rpmsg_virtio_ns_callback(struct rpmsg_endpoint *ept, void *data,
+ metal_mutex_release(&rdev->lock);
+ if (_ept->name[0] && rdev->support_ack)
+ rpmsg_send_ns_message(_ept, RPMSG_NS_CREATE_ACK);
++ /* notify application that the endpoint has been bound */
++ if (_ept->ns_bound_cb)
++ _ept->ns_bound_cb(_ept);
+ }
+ } else { /* RPMSG_NS_CREATE_ACK */
+ /* save the received destination address */
+ if (_ept)
+ _ept->dest_addr = dest;
+ metal_mutex_release(&rdev->lock);
++ /* notify application that the endpoint has been bound */
++ if (_ept && _ept->ns_bound_cb)
++ _ept->ns_bound_cb(_ept);
+ }
+
+ return RPMSG_SUCCESS;
+--
+2.25.1
+
diff --git a/openamp/open-amp.defs b/openamp/open-amp.defs
index a9e31f3..558bff6 100644
--- a/openamp/open-amp.defs
+++ b/openamp/open-amp.defs
@@ -37,6 +37,7 @@ open-amp.zip:
$(Q) patch -p0 < 0002-Negotiate-individual-buffer-size-dynamically.patch
$(Q) patch -p0 < 0003-rpmsg-wait-endpoint-ready-in-rpmsg_send-and-rpmsg_se.patch
$(Q) patch -p0 < 0004-openamp-add-ns_unbind_notify-support.patch
+ $(Q) patch -p0 < 0005-rpmsg-notify-the-user-when-the-remote-address-is-rec.patch
.openamp_headers: open-amp.zip
$(eval headers := $(wildcard open-amp/lib/include/openamp/*.h))
[incubator-nuttx] 06/06: socket_rpmsg: use ns_bound to send SYNC
packet
Posted by xi...@apache.org.
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
commit 022c06766aa4b3c291d37f33a4f8360cf0160b71
Author: ligd <li...@xiaomi.com>
AuthorDate: Tue Oct 19 19:39:42 2021 +0800
socket_rpmsg: use ns_bound to send SYNC packet
Signed-off-by: ligd <li...@xiaomi.com>
---
net/rpmsg/rpmsg_sockif.c | 35 ++++++++++++++++++-----------------
1 file changed, 18 insertions(+), 17 deletions(-)
diff --git a/net/rpmsg/rpmsg_sockif.c b/net/rpmsg/rpmsg_sockif.c
index 0252ac4..e41610d 100644
--- a/net/rpmsg/rpmsg_sockif.c
+++ b/net/rpmsg/rpmsg_sockif.c
@@ -402,6 +402,17 @@ static inline void rpmsg_socket_destroy_ept(
rpmsg_socket_unlock(&conn->recvlock);
}
+static void rpmsg_socket_ns_bound(struct rpmsg_endpoint *ept)
+{
+ FAR struct rpmsg_socket_conn_s *conn = ept->priv;
+ struct rpmsg_socket_sync_s msg;
+
+ msg.cmd = RPMSG_SOCKET_CMD_SYNC;
+ msg.size = circbuf_size(&conn->recvbuf);
+
+ rpmsg_send(&conn->ept, &msg, sizeof(msg));
+}
+
static void rpmsg_socket_ns_unbind(FAR struct rpmsg_endpoint *ept)
{
rpmsg_socket_destroy_ept(ept->priv);
@@ -421,6 +432,7 @@ static void rpmsg_socket_device_created(FAR struct rpmsg_device *rdev,
if (strcmp(conn->rpaddr.rp_cpu, rpmsg_get_cpuname(rdev)) == 0)
{
conn->ept.priv = conn;
+ conn->ept.ns_bound_cb = rpmsg_socket_ns_bound;
snprintf(buf, sizeof(buf), "%s%s", RPMSG_SOCKET_NAME_PREFIX,
conn->rpaddr.rp_name);
@@ -441,19 +453,6 @@ static void rpmsg_socket_device_destroy(FAR struct rpmsg_device *rdev,
}
}
-static void rpmsg_socket_device_connect(FAR struct rpmsg_device *rdev,
- FAR void *priv, FAR const char *name,
- uint32_t dest)
-{
- FAR struct rpmsg_socket_conn_s *conn = priv;
- struct rpmsg_socket_sync_s msg;
-
- msg.cmd = RPMSG_SOCKET_CMD_SYNC;
- msg.size = circbuf_size(&conn->recvbuf);
-
- rpmsg_send(&conn->ept, &msg, sizeof(msg));
-}
-
static void rpmsg_socket_ns_bind(FAR struct rpmsg_device *rdev,
FAR void *priv, FAR const char *name,
uint32_t dest)
@@ -503,6 +502,8 @@ static void rpmsg_socket_ns_bind(FAR struct rpmsg_device *rdev,
return;
}
+ rpmsg_socket_ns_bound(&new->ept);
+
strcpy(new->rpaddr.rp_cpu, rpmsg_get_cpuname(rdev));
strcpy(new->rpaddr.rp_name, name + RPMSG_SOCKET_NAME_PREFIX_LEN);
@@ -664,7 +665,7 @@ static int rpmsg_socket_connect_internal(FAR struct socket *psock)
ret = rpmsg_register_callback(conn,
rpmsg_socket_device_created,
rpmsg_socket_device_destroy,
- rpmsg_socket_device_connect);
+ NULL);
if (ret < 0)
{
return ret;
@@ -685,7 +686,7 @@ static int rpmsg_socket_connect_internal(FAR struct socket *psock)
rpmsg_unregister_callback(conn,
rpmsg_socket_device_created,
rpmsg_socket_device_destroy,
- rpmsg_socket_device_connect);
+ NULL);
}
}
@@ -752,7 +753,7 @@ static int rpmsg_socket_accept(FAR struct socket *psock,
rpmsg_register_callback(conn,
rpmsg_socket_device_created,
rpmsg_socket_device_destroy,
- rpmsg_socket_device_connect);
+ NULL);
if (conn->sendsize == 0)
{
@@ -1272,7 +1273,7 @@ static int rpmsg_socket_close(FAR struct socket *psock)
rpmsg_unregister_callback(conn,
rpmsg_socket_device_created,
rpmsg_socket_device_destroy,
- rpmsg_socket_device_connect);
+ NULL);
}
rpmsg_socket_destroy_ept(conn);