VirtualBox

Ignore:
Timestamp:
Aug 11, 2009 9:41:58 AM (16 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
50921
Message:

IPRT,SUPDrv: Changed RTTHREADPREEMPTSTATE breaking binary compatibility - increased the major SUPDrv version.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Runtime/r0drv/linux/thread-r0drv-linux.c

    r22057 r22150  
    3535#include "the-linux-kernel.h"
    3636#include "internal/iprt.h"
    37 
    3837#include <iprt/thread.h>
     38
    3939#include <iprt/asm.h>
    4040#include <iprt/assert.h>
    4141#include <iprt/err.h>
     42#include <iprt/mp.h>
    4243
    4344
     
    160161#ifdef CONFIG_PREEMPT
    161162    AssertPtr(pState);
    162     Assert(pState->uchDummy != 42);
    163     pState->uchDummy = 42;
     163    Assert(pState->u32Reserved == 0);
     164    pState->u32Reserved = 42;
    164165    preempt_disable();
     166    RT_ASSERT_PREEMPT_CPUID_DISABLE(pState);
    165167
    166168#else /* !CONFIG_PREEMPT */
    167169    int32_t c;
    168170    AssertPtr(pState);
     171    Assert(pState->u32Reserved == 0);
    169172
    170173    /* Do our own accounting. */
    171174    c = ASMAtomicIncS32(&g_acPreemptDisabled[smp_processor_id()]);
    172175    AssertMsg(c > 0 && c < 32, ("%d\n", c));
    173     pState->uchDummy = (unsigned char )c;
     176    pState->u32Reserved = c;
     177    RT_ASSERT_PREEMPT_CPUID_DISABLE(pState);
    174178#endif
    175179}
     
    181185#ifdef CONFIG_PREEMPT
    182186    AssertPtr(pState);
    183     Assert(pState->uchDummy == 42);
    184     pState->uchDummy = 0;
     187    Assert(pState->u32Reserved == 42);
     188    RT_ASSERT_PREEMPT_CPUID_RESTORE(pState);
    185189    preempt_enable();
    186190
     
    188192    int32_t volatile *pc;
    189193    AssertPtr(pState);
    190     AssertMsg(pState->uchDummy > 0 && pState->uchDummy < 32, ("%d\n", pState->uchDummy));
     194    AssertMsg(pState->u32Reserved > 0 && pState->u32Reserved < 32, ("%d\n", pState->u32Reserved));
     195    RT_ASSERT_PREEMPT_CPUID_RESTORE(pState);
    191196
    192197    /* Do our own accounting. */
    193198    pc = &g_acPreemptDisabled[smp_processor_id()];
    194     AssertMsg(pState->uchDummy == (uint32_t)*pc, ("uchDummy=%d *pc=%d \n", pState->uchDummy, *pc));
    195     ASMAtomicUoWriteS32(pc, pState->uchDummy - 1);
    196 #endif
     199    AssertMsg(pState->u32Reserved == (uint32_t)*pc, ("u32Reserved=%d *pc=%d \n", pState->u32Reserved, *pc));
     200    ASMAtomicUoWriteS32(pc, pState->u32Reserved - 1);
     201#endif
     202    pState->u32Reserved = 0;
    197203}
    198204RT_EXPORT_SYMBOL(RTThreadPreemptRestore);
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