Changeset 3275 for trunk/src/kernel32


Ignore:
Timestamp:
Mar 29, 2000, 7:17:18 PM (25 years ago)
Author:
sandervl
Message:

Critical section changes

Location:
trunk/src/kernel32
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/kernel32/KERNEL32.DEF

    r3269 r3275  
    1 ; $Id: KERNEL32.DEF,v 1.76 2000-03-29 15:17:27 cbratschi Exp $
     1; $Id: KERNEL32.DEF,v 1.77 2000-03-29 17:17:17 sandervl Exp $
    22
    33;Created by BLAST for IBM's compiler
     
    679679;   QueryWin31IniFilesMappedToRegistry = _QueryWin31IniFilesMappedToRegistry@?? ;NT
    680680;   QueueUserAPC               = _QueueUserAPC@??            @566
    681     RaiseException             = RaiseExceptionAsm           @567
     681    RaiseException             = _RaiseException@16          @567
    682682    ReadConsoleA               = _ReadConsoleA@20            @568
    683683    ReadConsoleInputA          = _ReadConsoleInputA@16       @569
     
    710710    RtlFillMemory              = _RtlFillMemory@12           @588
    711711    RtlMoveMemory              = _RtlMoveMemory@12           @589
    712     RtlUnwind                  = RtlUnwindAsm                   @590
     712    RtlUnwind                  = _RtlUnwind@16               @590
    713713    RtlZeroMemory              = _RtlZeroMemory@8            @591
    714714    SMapLS                     = _SMapLS@4                   @592       ;W95
  • trunk/src/kernel32/critsection.cpp

    r2802 r3275  
    1 /* $Id: critsection.cpp,v 1.4 2000-02-16 14:25:36 sandervl Exp $ */
     1/* $Id: critsection.cpp,v 1.5 2000-03-29 17:17:17 sandervl Exp $ */
    22/*
    33 * Win32 critical sections
     
    8787            return;
    8888        }
     89
    8990        /* Now wait for it */
    90 
    91         if ( crit->Reserved && crit->Reserved != GetCurrentProcessId() )
     91        for (;;)
    9292        {
    93             dprintf(("Crst %p belongs to process %ld, current is %ld!\n",
    94                           crit, crit->Reserved, GetCurrentProcessId() ));
    95             return;
    96         }
    97 
    98         res = ODIN_WaitForSingleObject( crit->LockSemaphore, 5000L );
    99         if ( res == WAIT_TIMEOUT )
    100         {
    101             dprintf(("Critical section %p wait timed out, retrying (60 sec)\n", crit ));
    102             res = WaitForSingleObject( crit->LockSemaphore, 60000L );
    103         }
    104         if ( res == WAIT_TIMEOUT && TRACE_ON(relay) )
    105         {
    106             dprintf(("Critical section %p wait timed out, retrying (5 min)\n", crit ));
    107             res = WaitForSingleObject( crit->LockSemaphore, 300000L );
    108         }
    109         if (res != STATUS_WAIT_0)
    110         {
    111             dprintf(("Critical section %p wait failed err=%lx\n", crit, res ));
    112             /* FIXME: should raise an exception */
     93            res = ODIN_WaitForSingleObject( crit->LockSemaphore, 5000L );
     94            if ( res == WAIT_TIMEOUT )
     95            {
     96                dprintf(("Critical section %p wait timed out, retrying (60 sec)\n", crit ));
     97                res = ODIN_WaitForSingleObject( crit->LockSemaphore, 60000L );
     98                if ( res == WAIT_TIMEOUT && TRACE_ON(relay) )
     99                {
     100                    dprintf(("Critical section %p wait timed out, retrying (5 min)\n", crit ));
     101                    res = WaitForSingleObject( crit->LockSemaphore, 300000L );
     102                }
     103            }
     104            if (res == STATUS_WAIT_0) break;
     105
     106#if 0
     107            EXCEPTION_RECORD rec;
     108
     109            rec.ExceptionCode    = EXCEPTION_CRITICAL_SECTION_WAIT;
     110            rec.ExceptionFlags   = 0;
     111            rec.ExceptionRecord  = NULL;
     112            rec.ExceptionAddress = RaiseException;  /* sic */
     113            rec.NumberParameters = 1;
     114            rec.ExceptionInformation[0] = (DWORD)crit;
     115            RtlRaiseException( &rec );
     116#endif
     117            RaiseException(EXCEPTION_CRITICAL_SECTION_WAIT, 0, 1, (DWORD *)crit);
    113118        }
    114119    }
  • trunk/src/kernel32/exceptutil.asm

    r2802 r3275  
    1 ; $Id: exceptutil.asm,v 1.5 2000-02-16 14:25:40 sandervl Exp $
     1; $Id: exceptutil.asm,v 1.6 2000-03-29 17:17:18 sandervl Exp $
    22
    33;/*
     
    1212
    1313CODE32          SEGMENT DWORD PUBLIC USE32 'CODE'
    14         public  RaiseExceptionAsm
     14        public  _RaiseException@16
    1515        extrn   OS2RAISEEXCEPTION : near
    1616
    17 RaiseExceptionAsm proc near
     17_RaiseException@16 proc near
    1818        push dword ptr [esp+4]  ;DWORD dwExceptionCode
    1919        push dword ptr [esp+12] ;DWORD dwExceptionFlags
     
    4747
    4848        ret 20      ;__stdcall
    49 RaiseExceptionAsm endp
    50 
    51         public  RtlUnwindAsm
     49_RaiseException@16 endp
     50
     51        public  _RtlUnwind@16
    5252        extrn   OS2RTLUNWIND : near
    5353
    54 RtlUnwindAsm proc near
     54_RtlUnwind@16 proc near
    5555        push dword ptr [esp+4]  ;PWINEXCEPTION_FRAME  pEndFrame
    5656        push dword ptr [esp+12] ;LPVOID unusedEip
     
    8484
    8585        ret 20      ;__stdcall
    86 RtlUnwindAsm endp
     86_RtlUnwind@16 endp
    8787
    8888
  • trunk/src/kernel32/winimgres.cpp

    r3228 r3275  
    1 /* $Id: winimgres.cpp,v 1.33 2000-03-24 19:25:34 sandervl Exp $ */
     1/* $Id: winimgres.cpp,v 1.34 2000-03-29 17:17:18 sandervl Exp $ */
    22
    33/*
     
    224224    pData = getPEResourceEntry(id, type, lang);
    225225    if(pData == NULL) {
    226         dprintf(("Win32ImageBase::getPEResourceSize: couldn't find resource %d (type %d, lang %d)", id, type, lang));
     226        dprintf(("Win32ImageBase::getPEResourceSize: couldn't find resource %d (type %d, lang %x)", id, type, lang));
    227227        return 0;
    228228    }
     
    265265    if(pData == NULL) {
    266266        if(HIWORD(id)) {
    267                 dprintf(("Win32ImageBase::getPEResource %s: couldn't find resource %s (type %d, lang %d)", szModule, id, type, lang));
    268         }
    269         else    dprintf(("Win32ImageBase::getPEResource %s: couldn't find resource %d (type %d, lang %d)", szModule, id, type, lang));
     267                dprintf(("Win32ImageBase::getPEResource %s: couldn't find resource %s (type %d, lang %x)", szModule, id, type, lang));
     268        }
     269        else    dprintf(("Win32ImageBase::getPEResource %s: couldn't find resource %d (type %d, lang %x)", szModule, id, type, lang));
    270270        return 0;
    271271    }
Note: See TracChangeset for help on using the changeset viewer.