mirror of
https://github.com/apache/nuttx.git
synced 2026-10-04 04:38:10 +00:00
rptun: add ns_match callback to resolve rptun deadlock
thread A: accept -> net_lock -> socket_rpmsg_accept
-> rpmsg_register_callabck -> rptun_lock
thread B: ns_bind -> rpmsg_socket_ns_bind -> get_tx_payload_buffer
-> rptun_wait_tx -> usrsock_rpmsg_ept_cb -> usrsockdev_write
-> net_lock -> deadlock
fix:
add ns_match callback
Signed-off-by: ligd <liguiding1@xiaomi.com>
This commit is contained in:
parent
033cd4d7df
commit
8a3683fb9f
15 changed files with 213 additions and 112 deletions
|
|
@ -38,6 +38,9 @@
|
|||
|
||||
typedef void (*rpmsg_dev_cb_t)(FAR struct rpmsg_device *rdev,
|
||||
FAR void *priv);
|
||||
typedef bool (*rpmsg_match_cb_t)(FAR struct rpmsg_device *rdev,
|
||||
FAR void *priv, FAR const char *name,
|
||||
uint32_t dest);
|
||||
typedef void (*rpmsg_bind_cb_t)(FAR struct rpmsg_device *rdev,
|
||||
FAR void *priv, FAR const char *name,
|
||||
uint32_t dest);
|
||||
|
|
@ -62,10 +65,12 @@ const char *rpmsg_get_cpuname(FAR struct rpmsg_device *rdev);
|
|||
int rpmsg_register_callback(FAR void *priv,
|
||||
rpmsg_dev_cb_t device_created,
|
||||
rpmsg_dev_cb_t device_destroy,
|
||||
rpmsg_match_cb_t ns_match,
|
||||
rpmsg_bind_cb_t ns_bind);
|
||||
void rpmsg_unregister_callback(FAR void *priv,
|
||||
rpmsg_dev_cb_t device_created,
|
||||
rpmsg_dev_cb_t device_destroy,
|
||||
rpmsg_match_cb_t ns_match,
|
||||
rpmsg_bind_cb_t ns_bind);
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue