Make management of current->state correct (accidentally made incorrect when

fixing the trispd bug).
main
Rik Faith 2000-09-19 19:24:28 +00:00
parent e2a16e1906
commit 01346c98b1
1 changed files with 2 additions and 1 deletions

View File

@ -224,13 +224,13 @@ drm_buf_t *mga_freelist_get(drm_device_t *dev)
dev_priv->last_prim_age);
set_bit(MGA_IN_GETBUF, &dev_priv->dispatch_status);
add_wait_queue(&dev_priv->buf_queue, &entry);
current->state = TASK_INTERRUPTIBLE;
for (;;) {
mga_dma_schedule(dev, 0);
if(!test_bit(MGA_IN_GETBUF,
&dev_priv->dispatch_status))
break;
atomic_inc(&dev->total_sleeps);
current->state = TASK_INTERRUPTIBLE;
schedule();
if (signal_pending(current)) {
++return_null;
@ -239,6 +239,7 @@ drm_buf_t *mga_freelist_get(drm_device_t *dev)
break;
}
}
current->state = TASK_RUNNING;
remove_wait_queue(&dev_priv->buf_queue, &entry);
if (return_null) return NULL;
}