On 8/18/26 10:52 AM, Patrice CHOTARD wrote:

Hello Patrice,

Yes, It's possible to optimize schedule() call.
Since commit 4b6a3e860878 ("usb: gadget: f_mass_storage: Add schedule() in 
sleep_thread()")
schedule is called on every for() loop iteration.

Schedule() can be called only if needed, ie if 
g_dnl_board_usb_cable_connected() is not overloaded.
I well send a patch for this.
My question is, whether it is possible for the schedule() call to determine 
whether or not it has to do (a lot of, lengthy, expensive) work or not, instead 
of patching the USB stack.

To remind you, initially, it was to avoid a watchdog timeout in case 
g_dnl_board_usb_cable_connected()
is not overloaded and no USB cable plugged.

As now watchdog is managed by schedule(), we have no choice to call schedule() 
to ensure watchdog's reset.
even if schedule performs other cyclic things (led blinking, card detect, 
video_sync....).

Recently schedule() has already been optimized (more precisely cyclic_run()), 
currently i didn't see any
better optimization.

The schedule() call should be effectively a no-op in case the next event is not yet due (whatever that next event is), so what does take so long in schedule() that it takes so long (70ms) to complete ?

--
Best regards,
Marek Vasut

Reply via email to