diff options
author | Leonid Yuriev <leo@yuriev.ru> | 2020-10-08 02:02:18 +0300 |
---|---|---|
committer | George Hazan <ghazan@miranda.im> | 2020-10-09 16:50:37 +0300 |
commit | a519d4617ed83a2167a693ae87934e56889fef05 (patch) | |
tree | 85c3aea76fe15268fc0891cf18c328913c6d4347 /libs/libmdbx/src/test/darwin | |
parent | bc58e7ec8ef67c37b6d302eaa2e76deedec03106 (diff) |
libmdbx: switch to original amalgamated source code (v0.9.1.18)
Amalgamated source code is the recommended form for
embedding libmdbx in non-CMake build systems. This amalgamated
version contains a minimum of files, is fully ready for use,
and make impossible a number of errors.
To upgrade or switch to a different version, just unpack
to the `src` subdirectory a corresponding `libmdbx-amalgamated-X_Y_Z.zip`
at the https://github.com/erthink/libmdbx/releases.
For instance, the https://github.com/erthink/libmdbx/releases/download/v0.9.2/libmdbx-amalgamated-0_9_2.zip
for the next release.
--
Minimal changes have been made to the build configuration:
1. For use the standard `DllMain()` entry of libmdbx:
- added the `MDBX_BUILD_SHARED_LIBRARY=1` option;
- removed the `MDBX_CONFIG_MANUAL_TLS_CALLBACK` option;
- deleted the `miranda.c` file containing only `DllMain()`
with the `mdbx_dll_handle()` call, now this is done by the library itself.
2. Removed refs to extra files (that missing in the amalgamated source code):
- for building `libmdbx.dll` only the `mdbx.h` and `mdbx.c` are used,
but not `mdbx.c++` for a C++ API;
- for building the `mdbx_chk`, `mdbx_load`, and `mdbx_dump` utilities
only it own sources are used.
--
Last libmdbx changes:
- Fixed missing installation of `mdbx.h++`.
- Fixed use of obsolete `__noreturn`.
- Fixed use of `yield` instruction on ARM if unsupported.
- Added pthread workaround for buggy toolchain/cmake/buildroot.
- Fixed use of `pthread_yield()` for non-GLIBC.
- Fixed use of `RegGetValueA()` on Windows 2000/XP.
- Fixed use of `GetTickCount64()` on Windows 2000/XP.
- Fixed opening DB on a network shares (in the exclusive mode).
- Fixed copy&paste typos.
- Fixed minor false-positive GCC warning.
Diffstat (limited to 'libs/libmdbx/src/test/darwin')
-rw-r--r-- | libs/libmdbx/src/test/darwin/LICENSE | 24 | ||||
-rw-r--r-- | libs/libmdbx/src/test/darwin/README.md | 8 | ||||
-rw-r--r-- | libs/libmdbx/src/test/darwin/pthread_barrier.c | 110 | ||||
-rw-r--r-- | libs/libmdbx/src/test/darwin/pthread_barrier.h | 83 |
4 files changed, 0 insertions, 225 deletions
diff --git a/libs/libmdbx/src/test/darwin/LICENSE b/libs/libmdbx/src/test/darwin/LICENSE deleted file mode 100644 index 6a0dd3066b..0000000000 --- a/libs/libmdbx/src/test/darwin/LICENSE +++ /dev/null @@ -1,24 +0,0 @@ -Copyright (c) 2015, Aleksey Demakov -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -* Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - -* Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - diff --git a/libs/libmdbx/src/test/darwin/README.md b/libs/libmdbx/src/test/darwin/README.md deleted file mode 100644 index a6a8fd1a91..0000000000 --- a/libs/libmdbx/src/test/darwin/README.md +++ /dev/null @@ -1,8 +0,0 @@ -# DarwinPthreadBarrier - -A pthread_barrier_t implementation for Mac OS/X - -There is no pthread_barrier_t in Mac OS/X pthreads. This project fixes -this omission by providing a simple-minded barrier implementation based -on a pair of pthread_mutex_t and pthread_cond_t. - diff --git a/libs/libmdbx/src/test/darwin/pthread_barrier.c b/libs/libmdbx/src/test/darwin/pthread_barrier.c deleted file mode 100644 index 054aa00708..0000000000 --- a/libs/libmdbx/src/test/darwin/pthread_barrier.c +++ /dev/null @@ -1,110 +0,0 @@ -/* - * Copyright (c) 2015, Aleksey Demakov - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * * Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ - -#include "pthread_barrier.h" - -#include <errno.h> - -#ifdef __APPLE__ - -int pthread_barrierattr_init(pthread_barrierattr_t *attr) { - memset(attr, 0, sizeof(pthread_barrierattr_t)); - int m = pthread_mutexattr_init(&attr->mattr); - int c = pthread_condattr_init(&attr->cattr); - return m ? m : c; -} - -int pthread_barrierattr_destroy(pthread_barrierattr_t *attr) { - int c = pthread_condattr_destroy(&attr->cattr); - int m = pthread_mutexattr_destroy(&attr->mattr); - return m ? m : c; -} - -int pthread_barrierattr_getpshared(const pthread_barrierattr_t *__restrict attr, - int *__restrict pshared) { - return pthread_condattr_getpshared(&attr->cattr, pshared); -} - -int pthread_barrierattr_setpshared(pthread_barrierattr_t *attr, int pshared) { - int m = pthread_mutexattr_setpshared(&attr->mattr, pshared); - int c = pthread_condattr_setpshared(&attr->cattr, pshared); - return m ? m : c; -} - -int pthread_barrier_init(pthread_barrier_t *__restrict barrier, - const pthread_barrierattr_t *__restrict attr, - unsigned count) { - if (count == 0) - return errno = EINVAL; - - int rc = pthread_mutex_init(&barrier->mutex, attr ? &attr->mattr : 0); - if (rc) - return rc; - - rc = pthread_cond_init(&barrier->cond, attr ? &attr->cattr : 0); - if (rc) { - int errno_save = errno; - pthread_mutex_destroy(&barrier->mutex); - errno = errno_save; - return rc; - } - - barrier->limit = count; - barrier->count = 0; - barrier->phase = 0; - return 0; -} - -int pthread_barrier_destroy(pthread_barrier_t *barrier) { - pthread_mutex_destroy(&barrier->mutex); - pthread_cond_destroy(&barrier->cond); - return 0; -} - -int pthread_barrier_wait(pthread_barrier_t *barrier) { - int rc = pthread_mutex_lock(&barrier->mutex); - if (rc) - return rc; - - barrier->count++; - if (barrier->count >= barrier->limit) { - barrier->phase++; - barrier->count = 0; - pthread_cond_broadcast(&barrier->cond); - pthread_mutex_unlock(&barrier->mutex); - return PTHREAD_BARRIER_SERIAL_THREAD; - } else { - unsigned phase = barrier->phase; - do - pthread_cond_wait(&barrier->cond, &barrier->mutex); - while (phase == barrier->phase); - pthread_mutex_unlock(&barrier->mutex); - return 0; - } -} - -#endif /* __APPLE__ */ diff --git a/libs/libmdbx/src/test/darwin/pthread_barrier.h b/libs/libmdbx/src/test/darwin/pthread_barrier.h deleted file mode 100644 index efa9b9b751..0000000000 --- a/libs/libmdbx/src/test/darwin/pthread_barrier.h +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Copyright (c) 2015, Aleksey Demakov - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * * Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ - -#ifndef PTHREAD_BARRIER_H -#define PTHREAD_BARRIER_H - -#include <pthread.h> - -#ifdef __APPLE__ - -#ifdef __cplusplus -extern "C" { -#endif - -#if !defined(PTHREAD_BARRIER_SERIAL_THREAD) -#define PTHREAD_BARRIER_SERIAL_THREAD (1) -#endif - -#if !defined(PTHREAD_PROCESS_PRIVATE) -#define PTHREAD_PROCESS_PRIVATE (42) -#endif -#if !defined(PTHREAD_PROCESS_SHARED) -#define PTHREAD_PROCESS_SHARED (43) -#endif - -typedef struct { - pthread_mutexattr_t mattr; - pthread_condattr_t cattr; -} pthread_barrierattr_t; - -typedef struct { - pthread_mutex_t mutex; - pthread_cond_t cond; - unsigned int limit; - unsigned int count; - unsigned int phase; -} pthread_barrier_t; - -int pthread_barrierattr_init(pthread_barrierattr_t *attr); -int pthread_barrierattr_destroy(pthread_barrierattr_t *attr); - -int pthread_barrierattr_getpshared(const pthread_barrierattr_t *__restrict attr, - int *__restrict pshared); -int pthread_barrierattr_setpshared(pthread_barrierattr_t *attr, int pshared); - -int pthread_barrier_init(pthread_barrier_t *__restrict barrier, - const pthread_barrierattr_t *__restrict attr, - unsigned int count); -int pthread_barrier_destroy(pthread_barrier_t *barrier); - -int pthread_barrier_wait(pthread_barrier_t *barrier); - -#ifdef __cplusplus -} -#endif - -#endif /* __APPLE__ */ - -#endif /* PTHREAD_BARRIER_H */ |