mirror of
https://github.com/MariaDB/server.git
synced 2026-01-06 05:22:24 +03:00
push for trnman review
(lockmanager still fails unit tests) BitKeeper/deleted/.del-Makefile.am~4375ae3d4de2bdf0: Delete: unittest/maria/Makefile.am configure.in: silence up configure warnings, don't generate unittest/maria/Makefile include/atomic/nolock.h: s/LOCK/LOCK_prefix/ include/atomic/x86-gcc.h: s/LOCK/LOCK_prefix/ include/atomic/x86-msvc.h: s/LOCK/LOCK_prefix/ include/lf.h: pin asserts, renames include/my_atomic.h: move cleanup include/my_bit.h: s/uint/uint32/ mysys/lf_dynarray.c: style fixes, split for() in two, remove if()s mysys/lf_hash.c: renames, minor fixes mysys/my_atomic.c: run-time assert -> compile-time assert storage/maria/Makefile.am: lockman here storage/maria/unittest/Makefile.am: new unit tests storage/maria/unittest/trnman-t.c: lots of changes storage/maria/lockman.c: many changes: second meaning of "blocker" portability: s/gettimeofday/my_getsystime/ move mutex/cond out of LOCK_OWNER - it creates a race condition that will be fixed in a separate changeset increment lm->count for every element, not only for distinct ones - because we cannot decrease it for distinct elements only :( storage/maria/lockman.h: move mutex/cond out of LOCK_OWNER storage/maria/trnman.c: move mutex/cond out of LOCK_OWNER atomic-ops to access short_trid_to_trn[] storage/maria/trnman.h: move mutex/cond out of LOCK_OWNER storage/maria/unittest/lockman-t.c: unit stress test
This commit is contained in:
14
include/lf.h
14
include/lf.h
@@ -88,8 +88,8 @@ nolock_wrap(lf_dynarray_iterate, int,
|
||||
pin manager for memory allocator
|
||||
*/
|
||||
|
||||
#define LF_PINBOX_PINS 3
|
||||
#define LF_PURGATORY_SIZE 11
|
||||
#define LF_PINBOX_PINS 4
|
||||
#define LF_PURGATORY_SIZE 10
|
||||
|
||||
typedef void lf_pinbox_free_func(void *, void *);
|
||||
|
||||
@@ -112,9 +112,9 @@ typedef struct {
|
||||
-sizeof(void *)*(LF_PINBOX_PINS+LF_PURGATORY_SIZE+1)];
|
||||
} LF_PINS;
|
||||
|
||||
#define lf_lock_by_pins(PINS) \
|
||||
#define lf_rwlock_by_pins(PINS) \
|
||||
my_atomic_rwlock_wrlock(&(PINS)->pinbox->pinstack.lock)
|
||||
#define lf_unlock_by_pins(PINS) \
|
||||
#define lf_rwunlock_by_pins(PINS) \
|
||||
my_atomic_rwlock_wrunlock(&(PINS)->pinbox->pinstack.lock)
|
||||
|
||||
/*
|
||||
@@ -139,11 +139,13 @@ typedef struct {
|
||||
#define _lf_unpin(PINS, PIN) _lf_pin(PINS, PIN, NULL)
|
||||
#define lf_pin(PINS, PIN, ADDR) \
|
||||
do { \
|
||||
lf_lock_by_pins(PINS); \
|
||||
lf_rwlock_by_pins(PINS); \
|
||||
_lf_pin(PINS, PIN, ADDR); \
|
||||
lf_unlock_by_pins(PINS); \
|
||||
lf_rwunlock_by_pins(PINS); \
|
||||
} while (0)
|
||||
#define lf_unpin(PINS, PIN) lf_pin(PINS, PIN, NULL)
|
||||
#define _lf_assert_pin(PINS, PIN) assert((PINS)->pin[PIN] != 0)
|
||||
#define _lf_assert_unpin(PINS, PIN) assert((PINS)->pin[PIN]==0)
|
||||
|
||||
void lf_pinbox_init(LF_PINBOX *pinbox, lf_pinbox_free_func *free_func,
|
||||
void * free_func_arg);
|
||||
|
||||
Reference in New Issue
Block a user