diff options
author | Marek Olšák <[email protected]> | 2017-07-10 21:17:04 +0200 |
---|---|---|
committer | Marek Olšák <[email protected]> | 2017-07-17 10:57:20 -0400 |
commit | 59ad7697705a65940f6370c28729aff87d446b46 (patch) | |
tree | 6b66cda9329a9648d5767035aae9c78e52dde02d /src/loader | |
parent | 465bb47d6f6c1d41ddb6d99fee31f2df2fbc7b5a (diff) |
util/u_queue: add an option to resize the queue when it's full
Consider the following situation:
mtx_lock(mutex);
do_something();
util_queue_add_job(...);
mtx_unlock(mutex);
If the queue is full, util_queue_add_job will wait for a free slot.
If the job which is currently being executed tries to lock the mutex,
it will be stuck forever, because util_queue_add_job is stuck.
The deadlock can be trivially resolved by increasing the queue size
(reallocating the queue) in util_queue_add_job if the queue is full.
Then util_queue_add_job becomes wait-free.
radeonsi will use it.
Reviewed-by: Nicolai Hähnle <[email protected]>
Diffstat (limited to 'src/loader')
0 files changed, 0 insertions, 0 deletions