135 Commits

Author SHA1 Message Date
Leonid Yuriev
a6bad26e1d mdbx: rename/clarify flush_noncoherent_cpu_writeback().
Change-Id: I05a5df8d2a283159f449fc1e68a14d0a1861a714
2019-07-21 22:52:21 +03:00
Leonid Yuriev
f39044124e mdbx: clarify/rework invalidate_mmap_noncoherent_cache() for MIPS.
Change-Id: I70c279c2ba67191c7cb93cd8875082eb9c8e58b7
2019-07-21 22:52:16 +03:00
Leonid Yuriev
2544a621e7 mdbx: portability - support for non-_GNU_SOURCE mode.
Change-Id: I9988d0ea8a9ddc06c799c65c4b2728bd17ff77e7
2019-07-14 15:13:43 +03:00
Leonid Yuriev
cf7160bda2 mdbx: portability - don't include malloc.h on BSD.
Change-Id: I67f580c073bfe52fbd2e4ff599354e6d0f597e95
2019-07-14 15:08:02 +03:00
Leonid Yuriev
38110579ba mdbx: drops mdbx_write(), using mdbx_pwrite() instead of.
Change-Id: Iff3de2d5ef3fa2e92607d46b96d4526e464e593b
2019-07-01 16:39:18 +03:00
Leo Yuriev
9cc9116df3 mdbx: 2019 HNY.
Change-Id: Iec6b7affedef0ea89fad917eb17af7e8201a7482
2019-02-03 12:28:01 +03:00
Leonid Yuriev
624968b74c mdbx-windows: use SetFileInformationByHandle() when available.
Change-Id: I27d9d4271d4328947ad68cdf30af61a31978b4f9
2018-12-28 13:53:57 +03:00
Leonid Yuriev
629637d95e mdbx-osal: add mdbx_fseek().
Change-Id: I5744aa3ba51bd1acaeedd866e6b21a1330c3f711
2018-11-04 20:34:16 +03:00
Leonid Yuriev
c2f850b566 mdbx-windows: STATIC_ASSERTs for atomic ops.
Change-Id: I9797eece26db54e5f4a19f82d004ff18bdc138d6
2018-10-21 20:27:34 +03:00
Leonid Yuriev
f93cca3d14 mdbx-windows: minor simplify MDBX_srwlock.
Change-Id: I1db8e7dab2a3c764fdbe64923cfaab238eacc77e
2018-10-21 20:27:05 +03:00
Leonid Yuriev
ecf214ca04 mdbx-windows: add MDBX_AVOID_CRT.
Change-Id: I08233d777b318037372ec250c754f093b3047c94
2018-10-19 15:16:33 +03:00
Leonid Yuriev
d2bfb2e489 mdbx: allow pre-define mdbx_malloc/mdbx_free macros.
Related to https://github.com/leo-yuriev/libmdbx/issues/43#issuecomment-429625047

Change-Id: Icaee4ba62003e6eacef9f938bdea19426623b5da
2018-10-14 19:06:42 +03:00
Leonid Yuriev
582adda628 mdbx-windows: fix mdbx_strdup() usage.
Fix commit e229dbe9dca1ff117a714007cc3811c01ba98b8b (12 of 17 for https://github.com/leo-yuriev/libmdbx/issues/43).

Change-Id: Ic63864d736319ccba37518a50590f4e21282a451
2018-10-14 17:36:15 +03:00
Leonid Yuriev
25ab7da33e mdbx-windows: _NO_CRT_STDIO_INLINE to avoid dependency from CRT.
16 of 17 for https://github.com/leo-yuriev/libmdbx/issues/43

Change-Id: Ie5d33e2a4f1fd281a28eaa6686aaf921ecc956b4
2018-10-14 15:03:38 +03:00
Leonid Yuriev
e229dbe9dc mdbx-windows: add mdbx_strdup() to avoid dependency from CRT.
12 of 17 for https://github.com/leo-yuriev/libmdbx/issues/43

Change-Id: Ib1379d75dc25e34f56daf8988848c41f59b6cd6b
2018-10-14 15:00:16 +03:00
Leonid Yuriev
b47badb3ee mdbx-windows: rework mdbx_memalign_alloc()/mdbx_memalign_free() to avoid dependency from CRT.
11 of 17 for https://github.com/leo-yuriev/libmdbx/issues/43

Change-Id: Id1a76f88588251cab9a93aa9753021b30159b09a
2018-10-14 14:59:37 +03:00
Leonid Yuriev
4dea5c2719 mdbx-windows: use _snprintf() and _vsnprintf() to avoid dependency from CRT.
8 of 17 for https://github.com/leo-yuriev/libmdbx/issues/43

Change-Id: I335a12344b0f0d63462ac4195fafdb60f981f182
2018-10-14 14:57:34 +03:00
Leonid Yuriev
ded5269937 mdbx-windows: rework mdbx_assert_fail() and mdbx_panic() to avoid dependency from CRT.
7 of 17 for https://github.com/leo-yuriev/libmdbx/issues/43

Change-Id: I40dc8d6a7d1d955c13c7d328ee904f0e6f30b248
2018-10-14 14:57:03 +03:00
Leonid Yuriev
9fae7f92d6 mdbx-windows: use LocalAlloc/LocalFree instead of CRT's malloc/free.
2 of 17 for https://github.com/leo-yuriev/libmdbx/issues/43

Change-Id: Icb5289b55897d52ac00007f30b36bd84e5a0cbd1
2018-10-14 14:53:57 +03:00
Leonid Yuriev
ace3d1bfa3 mdbx: add mdbx_malloc/mdbx_free, etc.
1 of 17 for https://github.com/leo-yuriev/libmdbx/issues/43

Change-Id: Ia5204be9f943fefde42e6a46e652c1be6ab6a96b
2018-10-14 14:53:40 +03:00
Leonid Yuriev
c9e3dc373b mdbx-windows: more for WindowsXP support.
Change-Id: Ide34048720989fc010f48e086569e12e8c1edca1
2018-10-08 02:18:32 +03:00
Leonid Yuriev
83f3d820f1 mdbx-windows: refine debug-logging. 2018-10-08 02:17:27 +03:00
Leonid Yuriev
7a3c8743f3 mdbx: fix use _ASSERTE.
Change-Id: Iba139ddcfc6cbc93b74f3d7387492b6ae6496dcc
2018-10-08 02:14:12 +03:00
Leo Yuriev
5a1f388db5 mdbx: drop unused mdbx_lck_upgrade(). 2018-08-01 18:16:40 +03:00
Leo Yuriev
797bcf9aca mdbx: add mdbx_removefile().
Change-Id: I985926bdef28387d5872317a3ecf47953ce4812c
2018-06-30 14:56:28 +03:00
Leonid Yuriev
b57c3b2503 mdbx: check for non-local files in non-exclusive mode.
Change-Id: Ibd1bbf48aba42d5ed736069d59b18ac0dd143554
2018-06-20 13:52:08 +03:00
Leo Yuriev
0dfa9cd09a mdbx: add MDBX_EXCLUSIVE instead of mdbx_env_open_ex().
Change-Id: I3c817d58d971385bcd07643df14beaf7122c7836
2018-06-20 13:52:02 +03:00
Leo Yuriev
09ad941a05 mdbx: Windows XP compatibility.
Change-Id: Iafe3a83110610071e42a168ef9fc5f8d3131854f
2018-06-20 13:47:14 +03:00
Leo Yuriev
28eda32c12 mdbx: split-out mdbx_is_file_local().
Change-Id: Ib7d990c4ce19d9b14a4b6739ca321d9d2666c882
2018-06-20 13:47:14 +03:00
Leo Yuriev
9f2bf6a377 mdbx: provide SRWL stub for Windows XP/2000.
Change-Id: I438373a4952298efc88ca4c1a92c88e173b82f98
2018-06-20 13:47:14 +03:00
Leo Yuriev
571b50622e mdbx: restore workaround for glibc's bug #21031.
Workaround for https://sourceware.org/bugzilla/show_bug.cgi?id=21031

Change-Id: I6cf9e037cc2fc298096b78ec96773f19478ed5c0
2018-04-03 17:44:18 +03:00
Leo Yuriev
6758348046 mdbx: import intrin-includes from t1ha. 2018-03-22 21:11:26 +03:00
Leo Yuriev
61a2c56784 mdbx: fix/rework cache-line alignment. 2018-03-22 21:11:26 +03:00
Leo Yuriev
dbc87a8a5e mdbx: refine MDBX_CACHE_IS_COHERENT. 2018-03-22 20:38:20 +03:00
Leo Yuriev
c52a57dac5 mdbx: fix for MIPS cacheflush(). 2018-03-22 20:37:50 +03:00
Leo Yuriev
86274513f9 mdbx: more __has_include(). 2018-03-21 22:19:17 +03:00
Leo Yuriev
f5571e4027 mdbx: import byte-order macros from t1ha. 2018-03-21 22:19:17 +03:00
Leo Yuriev
62ae928b40 mdbx: add neutral __ia32__ and __amd64__ marcos. 2018-03-21 22:18:57 +03:00
Leo Yuriev
a282965aa0 mdbx: add check __ALIGNED__ for UNALIGNED_OK macro. 2018-03-21 21:10:57 +03:00
Leo Yuriev
475da5bcfe mdbx: make mdbx_txn_lock() and mdbx_txn_unlock() exportable for mdbx_chk. 2018-03-20 22:19:32 +03:00
Leo Yuriev
e8dd15088a mdbx: add __ARM_FEATURE_UNALIGNED __e2k__ for UNALIGNED_OK. 2018-03-19 19:59:00 +03:00
Leo Yuriev
a93fafceff mdbx: strip utf8-bom for Elbrus (minor).
Change-Id: I9030abe267c4abfa2c5c2deb439c0b8025b83047
2018-03-07 12:09:43 +03:00
Leo Yuriev
72557af2b5 mdbx: HNY!
Change-Id: I2a91b986964d96bb3e5f848e3c17408bd7745866
2018-02-04 13:10:54 +03:00
Leo Yuriev
30bd7d3078 mdbx: shrinking memory-mapping for Windows (initial).
Change-Id: I3c3c2df0747c788ea36d7764c1e8139098ca62be
2018-01-08 17:47:41 +03:00
Leonid Yuriev
d14ca5cc4f mdbx: fix _InterlockedExchangeAdd64 for some 32-bit SDKs.
Change-Id: I18280e8ef6432b9db3c5073fd59eaa102462f98d
2018-01-07 14:35:47 +03:00
Leo Yuriev
0a7a290d06 mdbx: drop mdbx_txn_trylock(). 2017-10-26 21:49:39 +03:00
James Rouzier
7c466e53f0 Add the ability to not block when opening a write transaction 2017-10-25 19:41:28 -04:00
Leo Yuriev
0dc145aa2d mdbx: fix typo and endif comment.
Change-Id: Iae7ae3ce55698c1d6f03111b7d1945f3ac4e9394
2017-08-08 23:42:45 +03:00
Leonid Yuriev
c91885de67 mdbx: use _ASSERTE() for MSVC.
Change-Id: Ibb277e8c98fbfb1e658c85dc49e57769f2683da3
2017-07-28 14:39:44 +03:00
Leonid Yuriev
092156ee4f mdbx: fix/redefine ssize_t, PRI*PTR nad PRI*size macros for MSVC.
Change-Id: I6cb565087350cf1d1e1735bff1c5480c3d4c02db
2017-07-26 19:17:11 +03:00
Leo Yuriev
336bef7e51 mdbx: make internal 'atomics' compatible with C++.
Change-Id: I1381f477e977edf4bf56871a2e34af1b302867a0
2017-07-26 17:38:06 +03:00
Leonid Yuriev
a78edd314e mdbx: more fix MSVC '/Wall' warnings.
Change-Id: I359a3056d6bb5db762fe6b6b8a89e8ed066f8a87
2017-07-26 16:02:49 +03:00
Leo Yuriev
8ca23d8735 mdbx: add missing <signal.h>
Change-Id: I3f2d0587db84598a0157aae50cdff3361935f2b3
2017-07-26 15:11:25 +03:00
Leo Yuriev
9e473ab6f2 mdbx: remove obsolete mlock().
Change-Id: I23df282d545eac9dd7bf9df1bd71dedbccc45cfd
2017-07-26 12:09:57 +03:00
Leonid Yuriev
c8a5df650b mdbx: fix/rework exclusive-locking for Windows.
Change-Id: I1b129a10ed7523024481480647317f1643f2ea70
2017-07-19 14:13:31 +03:00
Leo Yuriev
17e8429a29 mdbx: rework mmap-functions for osal.
- add 'length' and 'current' fields to mmap-object;
 - drop mdbx_mremap();
 - do remap on-demand inside mdbx_mresize();
 - add mdbx_mapresize() which re-creates Valgrind's region.
 - call resize on txn-begin.

Change-Id: I82780f92c4947804e3f14fb7cb71ee655382f9bb
2017-07-19 14:13:31 +03:00
Leo Yuriev
455de97d36 mdbx: rework using of mdbx_mmap_t and mdbx_msync(). 2017-07-12 03:31:20 +03:00
Leo Yuriev
3c5ae4cc9c mdbx: disable C4548 as workaround for buggy WinSDK 10.0.10240.0 2017-07-03 12:50:48 +03:00
Leo Yuriev
5fbb8d1018 mdbx: fix C11 warnings abount atomic. 2017-06-24 19:33:34 +03:00
Leo Yuriev
9a2fff91f3 mdbx: dynamic mapsize/geometry and API (mostly done).
Change-Id: Ifb768ff3207cae1755c53c211a3ae552c6455e12
2017-06-21 01:42:41 +03:00
Leo Yuriev
10b0197026 mdbx: drop mdbx_get_errno_checked().
Change-Id: Ifa829b465083f17eba911e19947bdae854f9759c
2017-06-21 01:41:25 +03:00
Leo Yuriev
d2d513014d mdbx: add mdbx_lck_upgrade() to OSAL. 2017-06-06 20:28:00 +03:00
Leo Yuriev
465459dc58 mdbx: add MDBX_txn.mt_owner and MDBX_THREAD_MISMATCH. 2017-06-06 17:11:29 +03:00
Leo Yuriev
61a3766e23 mdbx: update DB format and signatures.
Change-Id: I9c4b187e8ebc3df63fef15ae98872e27d56a01ab
2017-06-06 04:15:08 +03:00
Leo Yuriev
5c3691eff1 mdbx: split atomics for 32/64 uints. 2017-05-28 17:06:04 +03:00
Leo Yuriev
9eeb00f448 mdbx: trinity of meta-pages. 2017-05-28 17:02:19 +03:00
Leo Yuriev
b94e761d73 mdbx: fix 'magic' bug. 2017-05-25 15:08:45 +03:00
Leo Yuriev
af7b468e63 mdbx: use uint64_t or size_t insted of off_t (buggy on Windows). 2017-05-24 18:50:24 +03:00
Leo Yuriev
924e81ed92 mdbx: refine includes, drop midl.h and mdbx_osal.h 2017-05-24 17:05:59 +03:00
Leo Yuriev
06de7a5155 mdbx: rename the rest MDBX_xyz. 2017-05-24 02:24:38 +03:00
Leo Yuriev
132c9c994e mdbx: add mdbx_fastmutex_t. 2017-05-23 22:18:21 +03:00
Leo Yuriev
8828e90ff9 mdbx: mdbx_condmutex_t instead of mutex/condvar pair. 2017-05-23 19:57:26 +03:00
Leo Yuriev
6ee3aebc32 mdbx: use flock() for share/exclusive lck. 2017-05-18 16:17:24 +03:00
Leo Yuriev
00081298d6 mdbx: add mdbx_get_errno_checked(). 2017-05-15 12:08:04 +03:00
Leo Yuriev
e8a430999c mdbx: hush MSVC warnings for atomic stubs. 2017-05-11 10:08:22 +03:00
Leo Yuriev
8848df34bc mdbx: check gcc/clang version for stdatomic.h 2017-04-27 18:46:11 +03:00
Leo Yuriev
678e4f5738 mdbx: more check/debug around mdbx_pread() and mdbx_read_header(). 2017-04-27 18:15:12 +03:00
Leo Yuriev
7204c46421 mdbx: add mdbx_osal_jitter() and mdbx_jitter4testing(). 2017-04-27 15:52:52 +03:00
Leo Yuriev
939285bef2 mdbx: add atomics-ops for assertions. 2017-04-27 01:37:42 +03:00
Leo Yuriev
993730d2f1 mdbx: more cleanup for Windows. 2017-04-24 21:14:36 +03:00
Leo Yuriev
2e54210e79 mdbx: add mdbx_osal.h with platform-like err codes. 2017-04-24 16:15:01 +03:00
Leo Yuriev
c2087f186e mdbx: fix/rework mdbx_reader_check(). 2017-04-23 19:16:21 +03:00
Leo Yuriev
a3644aa6d0 mdbx: new testset (initial, stub).
Initial stub for https://github.com/ReOpen/libmdbx/issues/8
2017-04-10 23:20:22 +03:00
Leo Yuriev
6d507233cc mdbx: snprintf/vsnprintf stub for MSC. 2017-04-04 15:35:52 +03:00
Leo Yuriev
0f49ed6e53 mdbx: big-bang (initial).
- OS Abstraction Layer;
 - Windows Support.
 - preparation for more changes.

Change-Id: I53772eda9091ba361cbc9a28656190ea0d4c5cee
2017-03-29 00:53:39 +03:00