mirror of
https://github.com/MariaDB/server.git
synced 2025-01-17 04:22:27 +01:00
4d57b851a0
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;
|