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 <liaoao@xiaomi.com>
Signed-off-by: Bowen Wang <wangbowen6@xiaomi.com>
This commit is contained in:
liaoao 2024-11-27 16:16:08 +08:00 committed by Xiang Xiao
parent 906d5a8204
commit 59d6263bec
2 changed files with 18 additions and 0 deletions

View file

@ -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);

View file

@ -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;