VirtualBox

Changeset 22991 in vbox


Ignore:
Timestamp:
Sep 14, 2009 10:16:08 AM (15 years ago)
Author:
vboxsync
Message:

Solaris/sem-r0drv: fix for #4259 host deadlock.

Location:
trunk/src/VBox/Runtime/r0drv/solaris
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Runtime/r0drv/solaris/semevent-r0drv-solaris.c

    r22773 r22991  
    155155    {
    156156        if (curthread->t_intr && getpil() < DISP_LEVEL)
    157             swtch();
    158 
     157        {
     158            RTTHREADPREEMPTSTATE PreemptState = RTTHREADPREEMPTSTATE_INITIALIZER;
     159            RTThreadPreemptDisable(&PreemptState);
     160            preempt();
     161            RTThreadPreemptRestore(&PreemptState);
     162        }
    159163        mutex_enter(&pEventInt->Mtx);
    160164    }
  • trunk/src/VBox/Runtime/r0drv/solaris/semeventmulti-r0drv-solaris.c

    r22773 r22991  
    148148    {
    149149        if (curthread->t_intr && getpil() < DISP_LEVEL)
    150             swtch();
    151 
     150        {
     151            RTTHREADPREEMPTSTATE PreemptState = RTTHREADPREEMPTSTATE_INITIALIZER;
     152            RTThreadPreemptDisable(&PreemptState);
     153            preempt();
     154            RTThreadPreemptRestore(&PreemptState);
     155        }
    152156        mutex_enter(&pThis->Mtx);
    153157    }
     
    189193    {
    190194        if (curthread->t_intr && getpil() < DISP_LEVEL)
    191             swtch();
    192 
     195        {
     196            RTTHREADPREEMPTSTATE PreemptState = RTTHREADPREEMPTSTATE_INITIALIZER;
     197            RTThreadPreemptDisable(&PreemptState);
     198            preempt();
     199            RTThreadPreemptRestore(&PreemptState);
     200        }
    193201        mutex_enter(&pThis->Mtx);
    194202    }
  • trunk/src/VBox/Runtime/r0drv/solaris/the-solaris-kernel.h

    r22557 r22991  
    4949#include <sys/class.h>
    5050#include <sys/cpuvar.h>
     51#include <sys/archsystm.h>
    5152#include <sys/x_call.h> /* in platform dir */
    5253#include <sys/x86_archext.h>
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette