diff options
author | unknown <serg@janus.mylan> | 2006-10-13 11:37:27 +0200 |
---|---|---|
committer | unknown <serg@janus.mylan> | 2006-10-13 11:37:27 +0200 |
commit | c2872bafde6d6ec2444c293f7a8aa397eb1dbb59 (patch) | |
tree | bb08304c63c5526b2e85d0437c621af8d05148e6 /storage/maria/trnman.h | |
parent | d551a55a1b236097e3912c66a91a17dea1600d7e (diff) | |
download | mariadb-git-c2872bafde6d6ec2444c293f7a8aa397eb1dbb59.tar.gz |
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
Diffstat (limited to 'storage/maria/trnman.h')
-rw-r--r-- | storage/maria/trnman.h | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/storage/maria/trnman.h b/storage/maria/trnman.h new file mode 100644 index 00000000000..9470678f3b2 --- /dev/null +++ b/storage/maria/trnman.h @@ -0,0 +1,48 @@ +/* Copyright (C) 2000 MySQL AB + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ + +#ifndef _trnman_h +#define _trnman_h + +#include "lockman.h" + +typedef uint64 TrID; /* our TrID is 6 bytes */ +typedef struct st_transaction TRN; + +struct st_transaction +{ + LOCK_OWNER locks; + LF_PINS *pins; + TrID trid, min_read_from, commit_trid; + TRN *next, *prev; + /* Note! if locks.loid is 0, trn is NOT initialized */ +}; + +#define SHORT_TRID_MAX 65535 + +extern uint trnman_active_transactions, trnman_allocated_transactions; + +int trnman_init(void); +int trnman_destroy(void); +TRN *trnman_new_trn(pthread_mutex_t *mutex, pthread_cond_t *cond); +void trnman_end_trn(TRN *trn, my_bool commit); +#define trnman_commit_trn(T) trnman_end_trn(T, TRUE) +#define trnman_abort_trn(T) trnman_end_trn(T, FALSE) +void trnman_free_trn(TRN *trn); +my_bool trnman_can_read_from(TRN *trn, TrID trid); + +#endif + |