Merge pull request #3478 from Precidata/limit-task-time-v2

Limit events processed by tud_task_ext() / tuh_task_ext()
This commit is contained in:
Zixun LI
2026-02-02 19:21:29 +01:00
committed by GitHub
3 changed files with 26 additions and 4 deletions

View File

@ -666,8 +666,14 @@ void tud_task_ext(uint32_t timeout_ms, bool in_isr) {
return;
}
// Loop until there is no more events in the queue
while (1) {
// Loop until there are no more events in the queue or CFG_TUD_TASK_EVENTS_PER_RUN is reached
for (unsigned epr = 0;; epr++) {
#if CFG_TUD_TASK_EVENTS_PER_RUN > 0
if (epr >= CFG_TUD_TASK_EVENTS_PER_RUN) {
TU_LOG_USBD("USBD event limit (" TU_XSTRING(CFG_TUD_TASK_EVENTS_PER_RUN) ") reached\r\n");
break;
}
#endif
dcd_event_t event;
if (!osal_queue_receive(_usbd_q, &event, timeout_ms)) {
return;

View File

@ -599,8 +599,14 @@ void tuh_task_ext(uint32_t timeout_ms, bool in_isr) {
return;
}
// Loop until there is no more events in the queue
while (1) {
// Loop until there are no more events in the queue or CFG_TUH_TASK_EVENTS_PER_RUN is reached
for (unsigned epr = 0;; epr++) {
#if CFG_TUH_TASK_EVENTS_PER_RUN > 0
if (epr >= CFG_TUH_TASK_EVENTS_PER_RUN) {
TU_LOG_USBH("USBH event limit (" TU_XSTRING(CFG_TUH_TASK_EVENTS_PER_RUN) ") reached\r\n");
break;
}
#endif
hcd_event_t event;
if (!osal_queue_receive(_usbh_q, &event, timeout_ms)) { return; }

View File

@ -560,6 +560,11 @@
#define CFG_TUD_INTERFACE_MAX 16
#endif
// max events processed in one tud_task_ext() call, 0 for unlimited
#ifndef CFG_TUD_TASK_EVENTS_PER_RUN
#define CFG_TUD_TASK_EVENTS_PER_RUN 16
#endif
// default to max hardware endpoint, but can be smaller to save RAM
#ifndef CFG_TUD_ENDPPOINT_MAX
#define CFG_TUD_ENDPPOINT_MAX TUP_DCD_ENDPOINT_MAX
@ -679,6 +684,11 @@
#define CFG_TUH_MEM_DCACHE_LINE_SIZE CFG_TUSB_MEM_DCACHE_LINE_SIZE
#endif
// max events processed in one tuh_task_ext() call, 0 for unlimited
#ifndef CFG_TUH_TASK_EVENTS_PER_RUN
#define CFG_TUH_TASK_EVENTS_PER_RUN 16
#endif
//------------- CLASS -------------//
#ifndef CFG_TUH_HUB