VirtualBox

Changeset 22556 in vbox for trunk/src


Ignore:
Timestamp:
Aug 28, 2009 4:20:45 PM (16 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
51583
Message:

RTLogWriteDebugger-r0drv-solaris.c: Don't call cmn_err if interrupts are disabled and spl*() are known to trash (set) EFLAGS::IF. Removed duplicate RTLogWriteDebugger-r0drv-solaris.c file in vbi.

Location:
trunk/src/VBox/Runtime
Files:
1 deleted
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Runtime/Makefile.kmk

    r22308 r22556  
    14111411        r0drv/mpnotification-r0drv.c \
    14121412        r0drv/powernotification-r0drv.c \
     1413        r0drv/solaris/RTLogWriteDebugger-r0drv-solaris.c \
    14131414        r0drv/solaris/assert-r0drv-solaris.c \
    14141415        r0drv/solaris/initterm-r0drv-solaris.c \
     
    14271428        r0drv/solaris/vbi/mp-r0drv-solaris.c \
    14281429        r0drv/solaris/vbi/process-r0drv-solaris.c \
    1429         r0drv/solaris/vbi/RTLogWriteDebugger-r0drv-solaris.c \
    14301430        r0drv/solaris/vbi/thread-r0drv-solaris.c \
    14311431        r0drv/solaris/vbi/thread2-r0drv-solaris.c \
     
    14381438        r0drv/solaris/memobj-r0drv-solaris.c \
    14391439        r0drv/solaris/process-r0drv-solaris.c \
    1440         r0drv/solaris/RTLogWriteDebugger-r0drv-solaris.c \
    14411440        r0drv/solaris/thread-r0drv-solaris.c \
    14421441        r0drv/solaris/thread2-r0drv-solaris.c \
  • trunk/src/VBox/Runtime/r0drv/solaris/RTLogWriteDebugger-r0drv-solaris.c

    r22073 r22556  
    3737#include <iprt/log.h>
    3838
     39#include <iprt/asm.h>
    3940#include <iprt/assert.h>
    4041
     
    4546    if (pch[cb] != '\0')
    4647        AssertBreakpoint();
    47     cmn_err(CE_CONT, pch);
     48    if (    !g_frtSolarisSplSetsEIF
     49        ||  ASMIntAreEnabled())
     50        cmn_err(CE_CONT, pch);
    4851    return;
    4952}
  • trunk/src/VBox/Runtime/r0drv/solaris/initterm-r0drv-solaris.c

    r22073 r22556  
    3737
    3838#include <iprt/err.h>
     39#include <iprt/asm.h>
    3940#include "internal/initterm.h"
    4041
     42
     43/*******************************************************************************
     44*   Global Variables                                                           *
     45*******************************************************************************/
     46/** Indicates that the spl routines (and therefore a bunch of other ones too)
     47 * will set EFLAGS::IF and break code that disables interrupts.  */
     48bool g_frtSolarisSplSetsEIF = false;
    4149
    4250
    4351int rtR0InitNative(void)
    4452{
     53    /*
     54     * Detech whether spl*() is preserving the interrupt flag or not.
     55     * This is a problem on S10.
     56     */
     57    RTCCUINTREG uOldFlags = ASMIntDisableFlags();
     58    int iOld = splr(DISP_LEVEL);
     59    if (ASMIntAreEnabled())
     60        g_frtSolarisSplSetsEIF = true;
     61    splx(iOld);
     62    if (ASMIntAreEnabled())
     63        g_frtSolarisSplSetsEIF = true;
     64    ASMSetFlags(uOldFlags);
     65
    4566    return VINF_SUCCESS;
    4667}
  • trunk/src/VBox/Runtime/r0drv/solaris/the-solaris-kernel.h

    r21595 r22556  
    6464
    6565RT_C_DECLS_BEGIN
    66 extern struct ddi_dma_attr g_SolarisX86PhysMemLimits;
     66extern bool                 g_frtSolarisSplSetsEIF;
     67extern struct ddi_dma_attr  g_SolarisX86PhysMemLimits;
    6768extern uintptr_t kernelbase;
    6869RT_C_DECLS_END
  • trunk/src/VBox/Runtime/r0drv/solaris/vbi/the-solaris-kernel.h

    r22435 r22556  
    5858#include <iprt/cdefs.h>
    5959
     60RT_C_DECLS_BEGIN
     61extern bool                 g_frtSolarisSplSetsEIF;
     62RT_C_DECLS_END
     63
    6064#endif
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