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
1 changed files with 2 additions and 1 deletions
|
|
@ -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…
Add table
Reference in a new issue