Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
usrsock_rpmsg_server: Add net_lock to combine get_tx_payload and recv…
…from in recvfrom_handler A dead lock may happen before this patch: rptun thread (usrsock_rpmsg_recvfrom_handler): Gets all tx payload but waiting net_lock in psock_recvfrom net driver thread (higher priority): Receives a packet, holding net_lock, calling usrsock_rpmsg_send_event But no tx buffer left, so rpmsg_send blocks, and won't release net_lock In short: Rptun: Hold all `tx_payload_buffer` -> want `net_lock` Driver: Hold `net_lock` -> want `tx_payload_buffer` This patch use net_lock to combine get_tx_payload and recvfrom together, then: - If it's waiting net_lock, tx payload will not be held, other threads may get tx buffer and do their work. - If net_lock is got, it won't be disturbed before finish receiving, then tx payload won't have chance to be blocked before releasing. Signed-off-by: Zhe Weng <[email protected]>
- Loading branch information