mirror of
https://github.com/MariaDB/server.git
synced 2025-01-18 04:53:01 +01:00
56 lines
1.9 KiB
Text
56 lines
1.9 KiB
Text
/*****************************************************************************
|
|
|
|
Copyright (c) 1995, 2009, Innobase Oy. All Rights Reserved.
|
|
|
|
This program is free software; you can redistribute it and/or modify it under
|
|
the terms of the GNU General Public License as published by the Free Software
|
|
Foundation; version 2 of the License.
|
|
|
|
This program is distributed in the hope that it will be useful, but WITHOUT
|
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
|
FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License along with
|
|
this program; if not, write to the Free Software Foundation, Inc.,
|
|
51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|
|
|
*****************************************************************************/
|
|
|
|
/**************************************************//**
|
|
@file include/os0sync.ic
|
|
The interface to the operating system synchronization primitives.
|
|
|
|
Created 9/6/1995 Heikki Tuuri
|
|
*******************************************************/
|
|
|
|
#ifdef __WIN__
|
|
#include <winbase.h>
|
|
#endif
|
|
|
|
/**********************************************************//**
|
|
Acquires ownership of a fast mutex.
|
|
@return 0 if success, != 0 if was reserved by another thread */
|
|
UNIV_INLINE
|
|
ulint
|
|
os_fast_mutex_trylock(
|
|
/*==================*/
|
|
os_fast_mutex_t* fast_mutex) /*!< in: mutex to acquire */
|
|
{
|
|
#ifdef __WIN__
|
|
if (TryEnterCriticalSection(fast_mutex)) {
|
|
|
|
return(0);
|
|
} else {
|
|
|
|
return(1);
|
|
}
|
|
#else
|
|
/* NOTE that the MySQL my_pthread.h redefines pthread_mutex_trylock
|
|
so that it returns 0 on success. In the operating system
|
|
libraries, HP-UX-10.20 follows the old Posix 1003.4a Draft 4 and
|
|
returns 1 on success (but MySQL remaps that to 0), while Linux,
|
|
FreeBSD, Solaris, AIX, Tru64 Unix, HP-UX-11.0 return 0 on success. */
|
|
|
|
return((ulint) pthread_mutex_trylock(fast_mutex));
|
|
#endif
|
|
}
|