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;
