You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nuttx.apache.org by "zzby0 (via GitHub)" <gi...@apache.org> on 2026/01/14 10:09:46 UTC
[PR] Sim workqueue [nuttx]
zzby0 opened a new pull request, #17900:
URL: https://github.com/apache/nuttx/pull/17900
*Note: Please adhere to [Contributing Guidelines](https://github.com/apache/nuttx/blob/master/CONTRIBUTING.md).*
## Summary
This PR fix deadlock in sim by replacing wdog with work queue.
wdog-related deadlocks: Watchdog callbacks were executed in the host's signal handler context, which has strict limitations. Signal handlers should not call non-async-signal-safe functions (e.g., sim_alsa uses mutex_lock in watchdog callbacks, causing deadlocks).
work queue dependency deadlock: RPMSG work in HPWORK was waiting for remote buffer callbacks that also execute in HPWORK, creating a circular dependency deadlock.
Initialization ordering issue: The usrsock module registers work in net_initialize() before g_work_queue is created, causing race conditions.
Changes:
Commit 7056084d907: Replace watchdog timers with work queues for periodic tasks
Moves periodic task execution from signal handler context to work queue context
Only replaces wdog usage for periodic tasks; other interrupt callbacks remain in signal handler
Affects: sim_alsa, sim_netdriver, sim_rpmsg_virtio, sim_rptun, sim_usbdev, sim_usbhost
Commit be4a9a695ce: Introduce global work queue to replace HPWORK usage
Creates dedicated sim_loop_wq work queue for simulator periodic operations
Breaks the circular dependency in RPMSG by separating work execution contexts
Affects: Same files as commit 1, plus sim_usrsock
Commit d6724b7245f: Fix initialization order by moving work queue creation to IRQ initialization
Moves g_work_queue creation from up_initialize() to up_irqinitialize()
Ensures work queue is available before network initialization
Refactors platform-specific IRQ initialization into host_irqinitialize()
## Impact
Architecture: Changes only affect the simulator (arch/sim) architecture
Build: No configuration or build system changes required
Runtime behavior: Fixes deadlocks without changing external API or functionality
Compatibility: Fully backward compatible; no user-facing changes
Performance: Minimal impact; work queue scheduling overhead is negligible compared to avoided deadlocks
## Testing
ostest & monkey test
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@nuttx.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] sim: replace wdog with work queue in periodic work to avoid deadlock [nuttx]
Posted by "xiaoxiang781216 (via GitHub)" <gi...@apache.org>.
xiaoxiang781216 merged PR #17900:
URL: https://github.com/apache/nuttx/pull/17900
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@nuttx.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org