Ignore:
Timestamp:
Jul 28, 2010, 8:05:20 AM (15 years ago)
Author:
David Azarewicz
Message:

Incorporate fixed from the trunk

File:
1 edited

Legend:

Unmodified
Added
Removed
  • GPL/branches/uniaud32-2.1.x/lib32/misc.c

    r523 r532  
    269269void flush_workqueue(struct workqueue_struct *wq)
    270270{
    271         short sDAZ;
    272271
    273272        if (wq->task == current) {
     
    280279                spin_lock_irq(&wq->lock);
    281280                add_wait_queue(&wq->work_done, &wait);
    282                 sDAZ = 0;
     281#ifndef TARGET_OS2
    283282                while (!list_empty(&wq->worklist)) {
    284                         if (sDAZ++ > 20) { // Temporary hack to prevent system hangs
    285                                 rprintf(("flush_workqueue: can't empty list"));
    286                                 break;
    287                         }                       
    288283                        spin_unlock_irq(&wq->lock);
    289284                        schedule();  // DAZ system hangs here because this function does nothing
    290285                        spin_lock_irq(&wq->lock);
    291286                }
     287#endif
    292288                set_current_state(TASK_RUNNING);
    293289                remove_wait_queue(&wq->work_done, &wait);
Note: See TracChangeset for help on using the changeset viewer.