iob_tryalloc: Fix throttled allocation
If threads are blocking for throttled allocation, g_throttle_sem.semcount doesn't represent the number of usable IOBs well. Note: For non-throttled allocations, the g_iob_committed mechanism is a rescue. But there is no equivalent for throttled allocations.
This commit is contained in:
parent
e96a870485
commit
5b1f2dff5f
@ -237,7 +237,8 @@ FAR struct iob_s *iob_tryalloc(bool throttled, enum iob_user_e consumerid)
|
||||
#if CONFIG_IOB_THROTTLE > 0
|
||||
/* If there are free I/O buffers for this allocation */
|
||||
|
||||
if (sem->semcount > 0)
|
||||
if (sem->semcount > 0 ||
|
||||
(throttled && g_iob_sem.semcount - CONFIG_IOB_THROTTLE > 0))
|
||||
#endif
|
||||
{
|
||||
/* Take the I/O buffer from the head of the free list */
|
||||
|
Loading…
Reference in New Issue
Block a user