os0sync.ic
上传用户:romrleung
上传日期:2022-05-23
资源大小:18897k
文件大小:1k
源码类别:

MySQL数据库

开发平台:

Visual C++

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