1 --- mysql-5.0.81/innobase/include/sync0rw.h~ 2009-05-26 00:35:13.000000000 +0300
2 +++ mysql-5.0.81/innobase/include/sync0rw.h 2009-06-16 19:09:27.587270045 +0300
4 #ifdef HAVE_ATOMIC_BUILTINS
5 /* This value means NOT_LOCKED */
6 #define RW_LOCK_BIAS 0x00100000
8 -#error HAVE_ATOMIC_BUILTINS is not defined. Do you use enough new GCC or compatibles?
9 -#error Or do you use exact options for CFLAGS?
10 -#error e.g. (for x86_32): "-m32 -march=i586 -mtune=i686"
11 -#error e.g. (for Sparc_64): "-m64 -mcpu=v9"
12 -#error Otherwise, this build may be slower than normal version.
15 /* NOTE! The structure appears here only for the compiler to know its size.
19 NOTE: this chunk is to fix buggy percona patch:
20 --- mysql-5.0.83/innobase/sync/sync0rw.c~ 2009-07-16 12:43:34.863559101 +0300
21 +++ mysql-5.0.83/innobase/sync/sync0rw.c 2009-07-16 13:01:55.553904932 +0300
23 } else if (state == RW_LOCK_NOT_LOCKED) {
25 /* Spin waiting for the writer field to become free */
27 +#ifdef HAVE_ATOMIC_BUILTINS
28 while (i < SYNC_SPIN_ROUNDS
29 && lock->lock_word != RW_LOCK_BIAS) {
30 - if (srv_spin_wait_delay) {
32 + while (rw_lock_get_writer(lock) != RW_LOCK_NOT_LOCKED
33 + && i < SYNC_SPIN_ROUNDS) {
35 + if (srv_spin_wait_delay) {
36 ut_delay(ut_rnd_interval(0,
37 srv_spin_wait_delay));