~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to storage/innobase/include/os0sync.ic

  • Committer: brian
  • Date: 2008-06-25 05:29:13 UTC
  • Revision ID: brian@localhost.localdomain-20080625052913-6upwo0jsrl4lnapl
clean slate

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/******************************************************
 
2
The interface to the operating system synchronization primitives.
 
3
 
 
4
(c) 1995 Innobase Oy
 
5
 
 
6
Created 9/6/1995 Heikki Tuuri
 
7
*******************************************************/
 
8
 
 
9
#ifdef __WIN__
 
10
#include <winbase.h>
 
11
#endif
 
12
 
 
13
/**************************************************************
 
14
Acquires ownership of a fast mutex. Currently in Windows this is the same
 
15
as os_fast_mutex_lock! */
 
16
UNIV_INLINE
 
17
ulint
 
18
os_fast_mutex_trylock(
 
19
/*==================*/
 
20
                                                /* out: 0 if success, != 0 if
 
21
                                                was reserved by another
 
22
                                                thread */
 
23
        os_fast_mutex_t*        fast_mutex)     /* in: mutex to acquire */
 
24
{
 
25
#ifdef __WIN__
 
26
        EnterCriticalSection(fast_mutex);
 
27
 
 
28
        return(0);
 
29
#else
 
30
#if defined(UNIV_HOTBACKUP) && defined(UNIV_HPUX10)
 
31
        /* Since the hot backup version is standalone, MySQL does not redefine
 
32
        pthread_mutex_trylock for HP-UX-10.20, and consequently we must invert
 
33
        the return value here */
 
34
 
 
35
        return((ulint) (1 - pthread_mutex_trylock(fast_mutex)));
 
36
#else
 
37
        /* NOTE that the MySQL my_pthread.h redefines pthread_mutex_trylock
 
38
        so that it returns 0 on success. In the operating system
 
39
        libraries, HP-UX-10.20 follows the old Posix 1003.4a Draft 4 and
 
40
        returns 1 on success (but MySQL remaps that to 0), while Linux,
 
41
        FreeBSD, Solaris, AIX, Tru64 Unix, HP-UX-11.0 return 0 on success. */
 
42
 
 
43
        return((ulint) pthread_mutex_trylock(fast_mutex));
 
44
#endif
 
45
#endif
 
46
}