Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | RSS feed

  1. format MS COFF
  2. use32
  3.  
  4. MUTEX.lock      equ 0
  5. MUTEX.handle    equ 4
  6.  
  7. section '.text' align 16 code readable executable
  8.  
  9. @mutex_lock_timeout@8
  10.         push    esi
  11.         mov     esi, edx
  12.         push    ebx
  13.         mov     edx, 1
  14.         lock xadd [ecx+MUTEX.lock], edx
  15.         mov     eax, 1
  16.         test    edx, edx
  17.         jnz     .slow
  18. .ok:
  19.         pop     ebx
  20.         pop     esi
  21.         retn
  22. align 4
  23. .slow:
  24.         mov     edx, 2
  25.         xchg    edx, [ecx+MUTEX.lock]
  26.         xor     eax, eax
  27.         test    edx, edx
  28.         jz      .ok
  29.  
  30.         mov     edx, 2
  31.         mov     ecx, [ecx+MUTEX.handle]
  32.         mov     al, 77
  33.         mov     ebx, edx
  34.         int     0x40
  35.         add     eax, 1
  36.         pop     ebx
  37.         pop     esi
  38.         ret
  39.  
  40.  
  41.  
  42.  
  43.  
  44.  
  45.  
  46.  
  47.  
  48.  
  49.  
  50.  
  51.  
  52.  
  53.  
  54.  
  55.  
  56.  
  57.  
  58.  
  59.  
  60.  
  61.  
  62.  
  63.  
  64.  
  65.  
  66.  
  67.  
  68.  
  69.