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/nuttx.git

commit 59d6263bece6b5ff7d16a349381d091bfbdf53c5
Author: liaoao <[email protected]>
AuthorDate: Wed Nov 27 16:16:08 2024 +0800

    rpmsg_port: add rpmsg_port_get_signals api
    
    And set signal_running when rpmsg devices registered
    
    Now rpmsg port transport support to get the remote core's state
    by api rpmsg_get_signals()
    
    Signed-off-by: liaoao <[email protected]>
    Signed-off-by: Bowen Wang <[email protected]>
---
 drivers/rpmsg/rpmsg_port.c | 14 ++++++++++++++
 drivers/rpmsg/rpmsg_port.h |  4 ++++
 2 files changed, 18 insertions(+)

diff --git a/drivers/rpmsg/rpmsg_port.c b/drivers/rpmsg/rpmsg_port.c
index 186f0a1aeb9..04fdb35d3ad 100644
--- a/drivers/rpmsg/rpmsg_port.c
+++ b/drivers/rpmsg/rpmsg_port.c
@@ -51,6 +51,7 @@ static FAR const char *
 rpmsg_port_get_local_cpuname(FAR struct rpmsg_s *rpmsg);
 static FAR const char *rpmsg_port_get_cpuname(FAR struct rpmsg_s *rpmsg);
 static void rpmsg_port_dump(FAR struct rpmsg_s *rpmsg);
+static int rpmsg_port_get_signals(FAR struct rpmsg_s *rpmsg);
 
 /****************************************************************************
  * Private Data
@@ -65,6 +66,7 @@ static const struct rpmsg_ops_s g_rpmsg_port_ops =
   rpmsg_port_dump,
   rpmsg_port_get_local_cpuname,
   rpmsg_port_get_cpuname,
+  rpmsg_port_get_signals,
 };
 
 /****************************************************************************
@@ -564,6 +566,17 @@ static FAR const char *rpmsg_port_get_cpuname(FAR struct 
rpmsg_s *rpmsg)
   return port->cpuname;
 }
 
+/****************************************************************************
+ * Name: rpmsg_port_get_signals
+ ****************************************************************************/
+
+static int rpmsg_port_get_signals(FAR struct rpmsg_s *rpmsg)
+{
+  FAR struct rpmsg_port_s *port = (FAR struct rpmsg_port_s *)rpmsg;
+
+  return atomic_read(&port->signals);
+}
+
 /****************************************************************************
  * Public Functions
  ****************************************************************************/
@@ -731,6 +744,7 @@ int rpmsg_port_register(FAR struct rpmsg_port_s *port,
       return ret;
     }
 
+  atomic_fetch_or(&port->signals, RPMSG_SIGNAL_RUNNING);
   rpmsg_register_endpoint(&port->rdev, &port->rdev.ns_ept, "NS",
                           RPMSG_NS_EPT_ADDR, RPMSG_NS_EPT_ADDR,
                           rpmsg_port_ns_callback, NULL, port);
diff --git a/drivers/rpmsg/rpmsg_port.h b/drivers/rpmsg/rpmsg_port.h
index e46edc39c11..efb5118ade3 100644
--- a/drivers/rpmsg/rpmsg_port.h
+++ b/drivers/rpmsg/rpmsg_port.h
@@ -123,6 +123,10 @@ struct rpmsg_port_s
 
   char                              cpuname[RPMSG_NAME_SIZE];
 
+  /* Remote cpu status */
+
+  atomic_t                          signals;
+
   /* Ops need implemented by drivers under port layer */
 
   const FAR struct rpmsg_port_ops_s *ops;

Reply via email to