235 |
while (pool->free == NULL && ! nonblock && ! pool->closing) { |
while (pool->free == NULL && ! nonblock && ! pool->closing) { |
236 |
|
|
237 |
spin_unlock(&pool->lock); |
spin_unlock(&pool->lock); |
|
#ifdef LINUX_2_2 |
|
|
/* change semaphore to allow other clients |
|
|
to access device file */ |
|
|
if (file) |
|
|
up(&semaphore_of(file)); |
|
|
#endif |
|
238 |
interruptible_sleep_on(&pool->output_sleep); |
interruptible_sleep_on(&pool->output_sleep); |
|
#ifdef LINUX_2_2 |
|
|
/* restore semaphore again */ |
|
|
if (file) |
|
|
down(&semaphore_of(file)); |
|
|
#endif |
|
239 |
spin_lock(&pool->lock); |
spin_lock(&pool->lock); |
240 |
/* interrupted? */ |
/* interrupted? */ |
241 |
if (signal_pending(current)) { |
if (signal_pending(current)) { |