rpmsg: Reformat drivers/rpmsg/rpmsg.c
Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
This commit is contained in:
parent
88ec55f6af
commit
56745e300a
@ -97,15 +97,25 @@ rpmsg_get_by_rdev(FAR struct rpmsg_device *rdev)
|
||||
static int rpmsg_dev_ioctl_(FAR struct rpmsg_s *rpmsg, int cmd,
|
||||
unsigned long arg)
|
||||
{
|
||||
int ret = OK;
|
||||
int ret = -ENOTTY;
|
||||
|
||||
switch (cmd)
|
||||
{
|
||||
case RPMSGIOC_PANIC:
|
||||
rpmsg->ops->panic(rpmsg);
|
||||
if (rpmsg->ops->panic)
|
||||
{
|
||||
rpmsg->ops->panic(rpmsg);
|
||||
ret = OK;
|
||||
}
|
||||
|
||||
break;
|
||||
case RPMSGIOC_DUMP:
|
||||
rpmsg->ops->dump(rpmsg);
|
||||
if (rpmsg->ops->dump)
|
||||
{
|
||||
rpmsg->ops->dump(rpmsg);
|
||||
ret = OK;
|
||||
}
|
||||
|
||||
break;
|
||||
#ifdef CONFIG_RPMSG_PING
|
||||
case RPMSGIOC_PING:
|
||||
@ -113,7 +123,11 @@ static int rpmsg_dev_ioctl_(FAR struct rpmsg_s *rpmsg, int cmd,
|
||||
break;
|
||||
#endif
|
||||
default:
|
||||
ret = rpmsg->ops->ioctl(rpmsg, cmd, arg);
|
||||
if (rpmsg->ops->ioctl)
|
||||
{
|
||||
ret = rpmsg->ops->ioctl(rpmsg, cmd, arg);
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
@ -123,7 +137,8 @@ static int rpmsg_dev_ioctl_(FAR struct rpmsg_s *rpmsg, int cmd,
|
||||
static int rpmsg_dev_ioctl(FAR struct file *filep, int cmd,
|
||||
unsigned long arg)
|
||||
{
|
||||
FAR struct rpmsg_s *rpmsg = filep->f_inode->i_private;
|
||||
FAR struct rpmsg_s *rpmsg =
|
||||
(FAR struct rpmsg_s *)filep->f_inode->i_private;
|
||||
|
||||
return rpmsg_dev_ioctl_(rpmsg, cmd, arg);
|
||||
}
|
||||
@ -171,37 +186,19 @@ int rpmsg_post(FAR struct rpmsg_endpoint *ept, FAR sem_t *sem)
|
||||
FAR const char *rpmsg_get_cpuname(FAR struct rpmsg_device *rdev)
|
||||
{
|
||||
FAR struct rpmsg_s *rpmsg = rpmsg_get_by_rdev(rdev);
|
||||
|
||||
if (!rpmsg)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return rpmsg->ops->get_cpuname(rpmsg);
|
||||
return rpmsg ? rpmsg->ops->get_cpuname(rpmsg) : NULL;
|
||||
}
|
||||
|
||||
int rpmsg_get_tx_buffer_size(FAR struct rpmsg_device *rdev)
|
||||
{
|
||||
FAR struct rpmsg_s *rpmsg = rpmsg_get_by_rdev(rdev);
|
||||
|
||||
if (!rpmsg)
|
||||
{
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
return rpmsg->ops->get_tx_buffer_size(rpmsg);
|
||||
return rpmsg ? rpmsg->ops->get_tx_buffer_size(rpmsg) : -EINVAL;
|
||||
}
|
||||
|
||||
int rpmsg_get_rx_buffer_size(FAR struct rpmsg_device *rdev)
|
||||
{
|
||||
FAR struct rpmsg_s *rpmsg = rpmsg_get_by_rdev(rdev);
|
||||
|
||||
if (!rpmsg)
|
||||
{
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
return rpmsg->ops->get_rx_buffer_size(rpmsg);
|
||||
return rpmsg ? rpmsg->ops->get_rx_buffer_size(rpmsg) : -EINVAL;
|
||||
}
|
||||
|
||||
int rpmsg_register_callback(FAR void *priv,
|
||||
@ -213,10 +210,9 @@ int rpmsg_register_callback(FAR void *priv,
|
||||
FAR struct metal_list *node;
|
||||
FAR struct metal_list *bnode;
|
||||
FAR struct rpmsg_cb_s *cb;
|
||||
FAR struct rpmsg_s *rpmsg;
|
||||
|
||||
cb = kmm_zalloc(sizeof(struct rpmsg_cb_s));
|
||||
if (!cb)
|
||||
if (cb == NULL)
|
||||
{
|
||||
return -ENOMEM;
|
||||
}
|
||||
@ -228,11 +224,12 @@ int rpmsg_register_callback(FAR void *priv,
|
||||
cb->ns_bind = ns_bind;
|
||||
|
||||
nxrmutex_lock(&g_rpmsg_lock);
|
||||
|
||||
metal_list_for_each(&g_rpmsg, node)
|
||||
{
|
||||
rpmsg = metal_container_of(node, struct rpmsg_s, node);
|
||||
if (!rpmsg->rdev->ns_unbind_cb)
|
||||
FAR struct rpmsg_s *rpmsg =
|
||||
metal_container_of(node, struct rpmsg_s, node);
|
||||
|
||||
if (rpmsg->rdev->ns_unbind_cb == NULL)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
@ -248,15 +245,14 @@ int rpmsg_register_callback(FAR void *priv,
|
||||
}
|
||||
|
||||
DEBUGASSERT(ns_match != NULL);
|
||||
|
||||
again:
|
||||
|
||||
nxrmutex_lock(&rpmsg->lock);
|
||||
|
||||
metal_list_for_each(&rpmsg->bind, bnode)
|
||||
{
|
||||
FAR struct rpmsg_bind_s *bind;
|
||||
FAR struct rpmsg_bind_s *bind =
|
||||
metal_container_of(bnode, struct rpmsg_bind_s, node);
|
||||
|
||||
bind = metal_container_of(bnode, struct rpmsg_bind_s, node);
|
||||
if (ns_match(rpmsg->rdev, priv, bind->name, bind->dest))
|
||||
{
|
||||
metal_list_del(bnode);
|
||||
@ -287,12 +283,11 @@ void rpmsg_unregister_callback(FAR void *priv,
|
||||
FAR struct metal_list *pnode;
|
||||
|
||||
nxrmutex_lock(&g_rpmsg_lock);
|
||||
|
||||
metal_list_for_each(&g_rpmsg_cb, node)
|
||||
{
|
||||
FAR struct rpmsg_cb_s *cb = NULL;
|
||||
FAR struct rpmsg_cb_s *cb =
|
||||
metal_container_of(node, struct rpmsg_cb_s, node);
|
||||
|
||||
cb = metal_container_of(node, struct rpmsg_cb_s, node);
|
||||
if (cb->priv == priv &&
|
||||
cb->device_created == device_created &&
|
||||
cb->device_destroy == device_destroy &&
|
||||
@ -301,7 +296,6 @@ void rpmsg_unregister_callback(FAR void *priv,
|
||||
{
|
||||
metal_list_del(&cb->node);
|
||||
kmm_free(cb);
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -310,9 +304,9 @@ void rpmsg_unregister_callback(FAR void *priv,
|
||||
{
|
||||
metal_list_for_each(&g_rpmsg, pnode)
|
||||
{
|
||||
FAR struct rpmsg_s *rpmsg;
|
||||
FAR struct rpmsg_s *rpmsg =
|
||||
metal_container_of(pnode, struct rpmsg_s, node);
|
||||
|
||||
rpmsg = metal_container_of(pnode, struct rpmsg_s, node);
|
||||
if (rpmsg->rdev->ns_unbind_cb)
|
||||
{
|
||||
device_destroy(rpmsg->rdev, priv);
|
||||
@ -331,12 +325,11 @@ void rpmsg_ns_bind(FAR struct rpmsg_device *rdev,
|
||||
FAR struct metal_list *node;
|
||||
|
||||
nxrmutex_lock(&g_rpmsg_lock);
|
||||
|
||||
metal_list_for_each(&g_rpmsg_cb, node)
|
||||
{
|
||||
FAR struct rpmsg_cb_s *cb;
|
||||
FAR struct rpmsg_cb_s *cb =
|
||||
metal_container_of(node, struct rpmsg_cb_s, node);
|
||||
|
||||
cb = metal_container_of(node, struct rpmsg_cb_s, node);
|
||||
if (cb->ns_match && cb->ns_match(rdev, cb->priv, name, dest))
|
||||
{
|
||||
rpmsg_bind_cb_t ns_bind = cb->ns_bind;
|
||||
@ -345,7 +338,6 @@ void rpmsg_ns_bind(FAR struct rpmsg_device *rdev,
|
||||
nxrmutex_unlock(&g_rpmsg_lock);
|
||||
DEBUGASSERT(ns_bind != NULL);
|
||||
ns_bind(rdev, cb_priv, name, dest);
|
||||
|
||||
return;
|
||||
}
|
||||
}
|
||||
@ -373,12 +365,10 @@ void rpmsg_ns_unbind(FAR struct rpmsg_device *rdev,
|
||||
FAR struct metal_list *node;
|
||||
|
||||
nxrmutex_lock(&rpmsg->lock);
|
||||
|
||||
metal_list_for_each(&rpmsg->bind, node)
|
||||
{
|
||||
FAR struct rpmsg_bind_s *bind;
|
||||
|
||||
bind = metal_container_of(node, struct rpmsg_bind_s, node);
|
||||
FAR struct rpmsg_bind_s *bind =
|
||||
metal_container_of(node, struct rpmsg_bind_s, node);
|
||||
|
||||
if (bind->dest == dest && !strncmp(bind->name, name, RPMSG_NAME_SIZE))
|
||||
{
|
||||
@ -393,14 +383,14 @@ void rpmsg_ns_unbind(FAR struct rpmsg_device *rdev,
|
||||
|
||||
void rpmsg_device_created(FAR struct rpmsg_s *rpmsg)
|
||||
{
|
||||
FAR struct rpmsg_cb_s *cb;
|
||||
FAR struct metal_list *node;
|
||||
|
||||
nxrmutex_lock(&g_rpmsg_lock);
|
||||
|
||||
metal_list_for_each(&g_rpmsg_cb, node)
|
||||
{
|
||||
cb = metal_container_of(node, struct rpmsg_cb_s, node);
|
||||
FAR struct rpmsg_cb_s *cb =
|
||||
metal_container_of(node, struct rpmsg_cb_s, node);
|
||||
|
||||
if (cb->device_created)
|
||||
{
|
||||
cb->device_created(rpmsg->rdev, cb->priv);
|
||||
@ -416,7 +406,6 @@ void rpmsg_device_created(FAR struct rpmsg_s *rpmsg)
|
||||
|
||||
void rpmsg_device_destory(FAR struct rpmsg_s *rpmsg)
|
||||
{
|
||||
FAR struct rpmsg_cb_s *cb;
|
||||
FAR struct metal_list *node;
|
||||
FAR struct metal_list *tmp;
|
||||
|
||||
@ -425,25 +414,25 @@ void rpmsg_device_destory(FAR struct rpmsg_s *rpmsg)
|
||||
#endif
|
||||
|
||||
nxrmutex_lock(&rpmsg->lock);
|
||||
|
||||
metal_list_for_each_safe(&rpmsg->bind, node, tmp)
|
||||
{
|
||||
FAR struct rpmsg_bind_s *bind;
|
||||
FAR struct rpmsg_bind_s *bind =
|
||||
metal_container_of(node, struct rpmsg_bind_s, node);
|
||||
|
||||
bind = metal_container_of(node, struct rpmsg_bind_s, node);
|
||||
metal_list_del(node);
|
||||
kmm_free(bind);
|
||||
}
|
||||
|
||||
nxrmutex_unlock(&rpmsg->lock);
|
||||
|
||||
nxrmutex_lock(&g_rpmsg_lock);
|
||||
|
||||
/* Broadcast device_destroy to all registers */
|
||||
|
||||
nxrmutex_lock(&g_rpmsg_lock);
|
||||
metal_list_for_each(&g_rpmsg_cb, node)
|
||||
{
|
||||
cb = metal_container_of(node, struct rpmsg_cb_s, node);
|
||||
FAR struct rpmsg_cb_s *cb =
|
||||
metal_container_of(node, struct rpmsg_cb_s, node);
|
||||
|
||||
if (cb->device_destroy)
|
||||
{
|
||||
cb->device_destroy(rpmsg->rdev, cb->priv);
|
||||
@ -457,23 +446,18 @@ 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(¶ms);
|
||||
if (ret < 0)
|
||||
{
|
||||
ret = metal_init(¶ms);
|
||||
if (ret < 0)
|
||||
{
|
||||
return ret;
|
||||
}
|
||||
|
||||
onceinit = true;
|
||||
return ret;
|
||||
}
|
||||
|
||||
ret = register_driver(path, &g_rpmsg_dev_ops, 0222, rpmsg);
|
||||
if (ret < 0)
|
||||
{
|
||||
metal_finish();
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -497,8 +481,9 @@ void rpmsg_unregister(FAR const char *path, FAR struct rpmsg_s *rpmsg)
|
||||
nxrmutex_unlock(&g_rpmsg_lock);
|
||||
|
||||
nxrmutex_destroy(&rpmsg->lock);
|
||||
|
||||
unregister_driver(path);
|
||||
|
||||
metal_finish();
|
||||
}
|
||||
|
||||
int rpmsg_ioctl(FAR const char *cpuname, int cmd, unsigned long arg)
|
||||
@ -507,12 +492,10 @@ int rpmsg_ioctl(FAR const char *cpuname, int cmd, unsigned long arg)
|
||||
int ret = OK;
|
||||
|
||||
nxrmutex_lock(&g_rpmsg_lock);
|
||||
|
||||
metal_list_for_each(&g_rpmsg, node)
|
||||
{
|
||||
FAR struct rpmsg_s *rpmsg;
|
||||
|
||||
rpmsg = metal_container_of(node, struct rpmsg_s, node);
|
||||
FAR struct rpmsg_s *rpmsg =
|
||||
metal_container_of(node, struct rpmsg_s, node);
|
||||
|
||||
if (!cpuname || !strcmp(rpmsg_get_cpuname(rpmsg->rdev), cpuname))
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user