mirror of
https://github.com/MariaDB/server.git
synced 2026-05-14 19:07:15 +02:00
Backport from 6.0 to 5.1.
Only those sync points are included, which are used in debug_sync.test.
The Debug Sync Facility allows to place synchronization points
in the code:
open_tables(...)
DEBUG_SYNC(thd, "after_open_tables");
lock_tables(...)
When activated, a sync point can
- Send a signal and/or
- Wait for a signal
Nomenclature:
- signal: A value of a global variable that persists
until overwritten by a new signal. The global
variable can also be seen as a "signal post"
or "flag mast". Then the signal is what is
attached to the "signal post" or "flag mast".
- send a signal: Assign the value (the signal) to the global
variable ("set a flag") and broadcast a
global condition to wake those waiting for
a signal.
- wait for a signal: Loop over waiting for the global condition until
the global value matches the wait-for signal.
Please find more information in the top comment in debug_sync.cc
or in the worklog entry.
.bzrignore:
WL#4259 - Debug Sync Facility
Added the symbolic link libmysqld/debug_sync.cc.
CMakeLists.txt:
WL#4259 - Debug Sync Facility
Added definition for ENABLED_DEBUG_SYNC.
configure.in:
WL#4259 - Debug Sync Facility
Added definition for ENABLED_DEBUG_SYNC.
include/my_sys.h:
WL#4259 - Debug Sync Facility
Added definition for the DEBUG_SYNC_C macro.
libmysqld/CMakeLists.txt:
WL#4259 - Debug Sync Facility
Added sql/debug_sync.cc.
libmysqld/Makefile.am:
WL#4259 - Debug Sync Facility
Added sql/debug_sync.cc.
mysql-test/include/have_debug_sync.inc:
WL#4259 - Debug Sync Facility
New include file.
mysql-test/mysql-test-run.pl:
WL#4259 - Debug Sync Facility
Added option --debug_sync_timeout.
mysql-test/r/debug_sync.result:
WL#4259 - Debug Sync Facility
New test result.
mysql-test/r/have_debug_sync.require:
WL#4259 - Debug Sync Facility
New require file.
mysql-test/t/debug_sync.test:
WL#4259 - Debug Sync Facility
New test file.
mysys/my_static.c:
WL#4259 - Debug Sync Facility
Added definition for debug_sync_C_callback_ptr.
mysys/thr_lock.c:
WL#4259 - Debug Sync Facility
Added sync point "wait_for_lock".
sql/CMakeLists.txt:
WL#4259 - Debug Sync Facility
Added debug_sync.cc and debug_sync.h.
sql/Makefile.am:
WL#4259 - Debug Sync Facility
Added debug_sync.cc and debug_sync.h.
sql/debug_sync.cc:
WL#4259 - Debug Sync Facility
New source file.
sql/debug_sync.h:
WL#4259 - Debug Sync Facility
New header file.
sql/mysqld.cc:
WL#4259 - Debug Sync Facility
Added opt_debug_sync_timeout.
Added calls to debug_sync_init() and debug_sync_end().
Fixed a purecov comment (unrelated).
sql/set_var.cc:
WL#4259 - Debug Sync Facility
Added server variable "debug_sync".
sql/set_var.h:
WL#4259 - Debug Sync Facility
Added declaration for server variable "debug_sync".
sql/share/errmsg.txt:
WL#4259 - Debug Sync Facility
Added error messages ER_DEBUG_SYNC_TIMEOUT and ER_DEBUG_SYNC_HIT_LIMIT.
sql/sql_base.cc:
WL#4259 - Debug Sync Facility
Added sync points "after_flush_unlock" and "before_lock_tables_takes_lock".
sql/sql_class.cc:
WL#4259 - Debug Sync Facility
Added initialization for debug_sync_control to THD::THD.
Added calls to debug_sync_init_thread() and debug_sync_end_thread().
sql/sql_class.h:
WL#4259 - Debug Sync Facility
Added element debug_sync_control to THD.
storage/myisam/myisamchk.c:
Fixed a typo in an error message string (unrelated).
113 lines
3.7 KiB
C
113 lines
3.7 KiB
C
/* 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; version 2 of the License.
|
|
|
|
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 */
|
|
|
|
/*
|
|
Static variables for mysys library. All definied here for easy making of
|
|
a shared library
|
|
*/
|
|
|
|
#include "mysys_priv.h"
|
|
#include "my_static.h"
|
|
#include "my_alarm.h"
|
|
|
|
my_bool timed_mutexes= 0;
|
|
|
|
/* from my_init */
|
|
char * home_dir=0;
|
|
const char *my_progname=0;
|
|
char NEAR curr_dir[FN_REFLEN]= {0},
|
|
NEAR home_dir_buff[FN_REFLEN]= {0};
|
|
ulong my_stream_opened=0,my_file_opened=0, my_tmp_file_created=0;
|
|
ulong my_file_total_opened= 0;
|
|
int NEAR my_umask=0664, NEAR my_umask_dir=0777;
|
|
#ifndef THREAD
|
|
int NEAR my_errno=0;
|
|
#endif
|
|
struct st_my_file_info my_file_info_default[MY_NFILE]= {{0,UNOPEN}};
|
|
uint my_file_limit= MY_NFILE;
|
|
struct st_my_file_info *my_file_info= my_file_info_default;
|
|
|
|
/* From mf_brkhant */
|
|
int NEAR my_dont_interrupt=0;
|
|
volatile int _my_signals=0;
|
|
struct st_remember _my_sig_remember[MAX_SIGNALS]={{0,0}};
|
|
#ifdef THREAD
|
|
sigset_t my_signals; /* signals blocked by mf_brkhant */
|
|
#endif
|
|
|
|
/* from mf_reccache.c */
|
|
ulong my_default_record_cache_size=RECORD_CACHE_SIZE;
|
|
|
|
/* from soundex.c */
|
|
/* ABCDEFGHIJKLMNOPQRSTUVWXYZ */
|
|
/* :::::::::::::::::::::::::: */
|
|
const char *soundex_map= "01230120022455012623010202";
|
|
|
|
/* from my_malloc */
|
|
USED_MEM* my_once_root_block=0; /* pointer to first block */
|
|
uint my_once_extra=ONCE_ALLOC_INIT; /* Memory to alloc / block */
|
|
|
|
/* from my_largepage.c */
|
|
#ifdef HAVE_LARGE_PAGES
|
|
my_bool my_use_large_pages= 0;
|
|
uint my_large_page_size= 0;
|
|
#endif
|
|
|
|
/* from safe_malloc */
|
|
uint sf_malloc_prehunc=0, /* If you have problem with core- */
|
|
sf_malloc_endhunc=0, /* dump when malloc-message.... */
|
|
/* set theese to 64 or 128 */
|
|
sf_malloc_quick=0; /* set if no calls to sanity */
|
|
size_t sf_malloc_cur_memory= 0L; /* Current memory usage */
|
|
size_t sf_malloc_max_memory= 0L; /* Maximum memory usage */
|
|
uint sf_malloc_count= 0; /* Number of times NEW() was called */
|
|
uchar *sf_min_adress= (uchar*) ~(unsigned long) 0L,
|
|
*sf_max_adress= (uchar*) 0L;
|
|
/* Root of the linked list of struct st_irem */
|
|
struct st_irem *sf_malloc_root = NULL;
|
|
|
|
/* from my_alarm */
|
|
int volatile my_have_got_alarm=0; /* declare variable to reset */
|
|
ulong my_time_to_wait_for_lock=2; /* In seconds */
|
|
|
|
/* from errors.c */
|
|
#ifdef SHARED_LIBRARY
|
|
char * NEAR globerrs[GLOBERRS]; /* my_error_messages is here */
|
|
#endif
|
|
void (*my_abort_hook)(int) = (void(*)(int)) exit;
|
|
int (*error_handler_hook)(uint error,const char *str,myf MyFlags)=
|
|
my_message_no_curses;
|
|
int (*fatal_error_handler_hook)(uint error,const char *str,myf MyFlags)=
|
|
my_message_no_curses;
|
|
|
|
#if defined(ENABLED_DEBUG_SYNC)
|
|
/**
|
|
Global pointer to be set if callback function is defined
|
|
(e.g. in mysqld). See sql/debug_sync.cc.
|
|
*/
|
|
void (*debug_sync_C_callback_ptr)(const char *, size_t);
|
|
#endif /* defined(ENABLED_DEBUG_SYNC) */
|
|
|
|
#ifdef __WIN__
|
|
/* from my_getsystime.c */
|
|
ulonglong query_performance_frequency, query_performance_offset;
|
|
#endif
|
|
|
|
/* How to disable options */
|
|
my_bool NEAR my_disable_locking=0;
|
|
my_bool NEAR my_disable_async_io=0;
|
|
my_bool NEAR my_disable_flush_key_blocks=0;
|
|
my_bool NEAR my_disable_symlinks=0;
|
|
my_bool NEAR mysys_uses_curses=0;
|