rpmsg.c: move onceinit judge logic to common part

move rptun/rpmsg_virtio onceinit judge logic to rpmsg_register.

Signed-off-by: Yongrong Wang <wangyongrong@xiaomi.com>
This commit is contained in:
Yongrong Wang 2024-02-26 14:10:55 +08:00 committed by Xiang Xiao
parent d2d8d49359
commit 88ec55f6af
2 changed files with 14 additions and 13 deletions

View file

@ -24,6 +24,7 @@
#include <nuttx/config.h>
#include <metal/sys.h>
#include <nuttx/kmalloc.h>
#include <nuttx/mutex.h>
#include <nuttx/semaphore.h>
@ -455,8 +456,21 @@ void rpmsg_device_destory(FAR struct rpmsg_s *rpmsg)
int rpmsg_register(FAR const char *path, FAR struct rpmsg_s *rpmsg,
FAR const struct rpmsg_ops_s *ops)
{
struct metal_init_params params = METAL_INIT_DEFAULTS;
static bool onceinit = false;
int ret;
if (!onceinit)
{
ret = metal_init(&params);
if (ret < 0)
{
return ret;
}
onceinit = true;
}
ret = register_driver(path, &g_rpmsg_dev_ops, 0222, rpmsg);
if (ret < 0)
{

View file

@ -971,25 +971,12 @@ static metal_phys_addr_t rptun_da_to_pa(FAR struct rptun_dev_s *dev,
int rptun_initialize(FAR struct rptun_dev_s *dev)
{
struct metal_init_params params = METAL_INIT_DEFAULTS;
FAR struct rptun_priv_s *priv;
static bool onceinit = false;
FAR char *argv[3];
char arg1[32];
char name[32];
int ret;
if (!onceinit)
{
ret = metal_init(&params);
if (ret < 0)
{
return ret;
}
onceinit = true;
}
priv = kmm_zalloc(sizeof(struct rptun_priv_s));
if (priv == NULL)
{