/*
+--------------------------------------------------------------------+
- | libmemcached - C/C++ Client Library for memcached |
+ | libmemcached-awesome - C/C++ Client Library for memcached |
+--------------------------------------------------------------------+
| Redistribution and use in source and binary forms, with or without |
| modification, are permitted under the terms of the BSD license. |
| the terms online at: https://opensource.org/licenses/BSD-3-Clause |
+--------------------------------------------------------------------+
| Copyright (c) 2006-2014 Brian Aker https://datadifferential.com/ |
- | Copyright (c) 2020 Michael Wallner <mike@php.net> |
+ | Copyright (c) 2020-2021 Michael Wallner https://awesome.co/ |
+--------------------------------------------------------------------+
*/
#ifndef HAVE_UMEM_H
+# ifdef _MSC_VER
+typedef SECURITY_ATTRIBUTES pthread_mutexattr_t;
+
+static inline int pthread_mutex_init(pthread_mutex_t *m, pthread_mutexattr_t *a) {
+ *m = CreateMutexA(a, FALSE, NULL);
+ return !*m;
+}
+static inline int pthread_mutex_destroy(pthread_mutex_t *m) {
+ return !CloseHandle(*m);
+}
+static inline int pthread_mutex_lock(pthread_mutex_t *m) {
+ if (WaitForSingleObject(*m, INFINITE)) {
+ return 0;
+ }
+ return GetLastError();
+}
+static inline int pthread_mutex_unlock(pthread_mutex_t *m) {
+ return !ReleaseMutex(*m);
+}
+# endif
+
# ifndef NDEBUG
# include <signal.h>