Drizzled Public API Documentation

srv0srv.h
Go to the documentation of this file.
00001 /*****************************************************************************
00002 
00003 Copyright (C) 1995, 2010, Innobase Oy. All Rights Reserved.
00004 Copyright (C) 2008, 2009, Google Inc.
00005 Copyright (C) 2009, Percona Inc.
00006 
00007 Portions of this file contain modifications contributed and copyrighted by
00008 Google, Inc. Those modifications are gratefully acknowledged and are described
00009 briefly in the InnoDB documentation. The contributions by Google are
00010 incorporated with their permission, and subject to the conditions contained in
00011 the file COPYING.Google.
00012 
00013 Portions of this file contain modifications contributed and copyrighted
00014 by Percona Inc.. Those modifications are
00015 gratefully acknowledged and are described briefly in the InnoDB
00016 documentation. The contributions by Percona Inc. are incorporated with
00017 their permission, and subject to the conditions contained in the file
00018 COPYING.Percona.
00019 
00020 This program is free software; you can redistribute it and/or modify it under
00021 the terms of the GNU General Public License as published by the Free Software
00022 Foundation; version 2 of the License.
00023 
00024 This program is distributed in the hope that it will be useful, but WITHOUT
00025 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
00026 FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
00027 
00028 You should have received a copy of the GNU General Public License along with
00029 this program; if not, write to the Free Software Foundation, Inc., 51 Franklin
00030 St, Fifth Floor, Boston, MA 02110-1301 USA
00031 
00032 *****************************************************************************/
00033 
00034 /**************************************************/
00041 #pragma once
00042 #ifndef srv0srv_h
00043 #define srv0srv_h
00044 
00045 #include "univ.i"
00046 #ifndef UNIV_HOTBACKUP
00047 #include "sync0sync.h"
00048 #include "os0sync.h"
00049 #include "que0types.h"
00050 #include "trx0types.h"
00051 
00052 #include <string>
00053 
00054 extern const char*  srv_main_thread_op_info;
00055 
00060 static const std::string srv_mysql50_table_name_prefix("#mysql50#");
00061 
00062 /* When this event is set the lock timeout and InnoDB monitor
00063 thread starts running */
00064 extern os_event_t srv_lock_timeout_thread_event;
00065 
00066 /* The monitor thread waits on this event. */
00067 extern os_event_t srv_monitor_event;
00068 
00069 /* The lock timeout thread waits on this event. */
00070 extern os_event_t srv_timeout_event;
00071 
00072 /* The error monitor thread waits on this event. */
00073 extern os_event_t srv_error_event;
00074 
00075 /* If the last data file is auto-extended, we add this many pages to it
00076 at a time */
00077 #define SRV_AUTO_EXTEND_INCREMENT \
00078   (srv_auto_extend_increment * ((1024 * 1024) / UNIV_PAGE_SIZE))
00079 
00080 /* This is set to TRUE if the MySQL user has set it in MySQL */
00081 extern ibool  srv_lower_case_table_names;
00082 
00083 /* Mutex for locking srv_monitor_file */
00084 extern mutex_t  srv_monitor_file_mutex;
00085 /* Temporary file for innodb monitor output */
00086 extern FILE*  srv_monitor_file;
00087 /* Mutex for locking srv_dict_tmpfile.
00088 This mutex has a very high rank; threads reserving it should not
00089 be holding any InnoDB latches. */
00090 extern mutex_t  srv_dict_tmpfile_mutex;
00091 /* Temporary file for output from the data dictionary */
00092 extern FILE*  srv_dict_tmpfile;
00093 /* Mutex for locking srv_misc_tmpfile.
00094 This mutex has a very low rank; threads reserving it should not
00095 acquire any further latches or sleep before releasing this one. */
00096 extern mutex_t  srv_misc_tmpfile_mutex;
00097 /* Temporary file for miscellanous diagnostic output */
00098 extern FILE*  srv_misc_tmpfile;
00099 
00100 /* Server parameters which are read from the initfile */
00101 
00102 extern char*  srv_data_home;
00103 #ifdef UNIV_LOG_ARCHIVE
00104 extern char*  srv_arch_dir;
00105 #endif /* UNIV_LOG_ARCHIVE */
00106 
00109 #ifndef UNIV_HOTBACKUP
00110 extern my_bool  srv_file_per_table;
00111 #else
00112 extern ibool  srv_file_per_table;
00113 #endif /* UNIV_HOTBACKUP */
00114 
00115 extern ulint  srv_file_format;
00119 extern ulint  srv_max_file_format_at_startup;
00122 extern ibool  srv_locks_unsafe_for_binlog;
00123 #endif /* !UNIV_HOTBACKUP */
00124 
00125 /* If this flag is TRUE, then we will use the native aio of the
00126 OS (provided we compiled Innobase with it in), otherwise we will
00127 use simulated aio we build below with threads.
00128 Currently we support native aio on windows and linux */
00129 extern my_bool  srv_use_native_aio;
00130 #ifdef __WIN__
00131 extern ibool  srv_use_native_conditions;
00132 #endif
00133 extern ulint  srv_n_data_files;
00134 extern char** srv_data_file_names;
00135 extern ulint* srv_data_file_sizes;
00136 extern ulint* srv_data_file_is_raw_partition;
00137 
00138 extern ibool  srv_auto_extend_last_data_file;
00139 extern ulint  srv_last_file_size_max;
00140 extern char** srv_log_group_home_dirs;
00141 #ifndef UNIV_HOTBACKUP
00142 extern unsigned int srv_auto_extend_increment;
00143 
00144 extern ibool  srv_created_new_raw;
00145 
00146 extern ulint  srv_n_log_groups;
00147 extern ulint  srv_n_log_files;
00148 extern ulint  srv_log_file_size;
00149 extern ulint  srv_log_buffer_size;
00150 extern ulong  srv_flush_log_at_trx_commit;
00151 extern bool srv_adaptive_flushing;
00152 
00153 
00154 /* The sort order table of the MySQL latin1_swedish_ci character set
00155 collation */
00156 #if defined(BUILD_DRIZZLE)
00157 extern const byte  srv_latin1_ordering[256];
00158 extern bool srv_use_sys_malloc;
00159 #else
00160 extern const byte*     srv_latin1_ordering;
00161 # ifndef UNIV_HOTBACKUP
00162 extern my_bool srv_use_sys_malloc;
00163 # else
00164 extern ibool   srv_use_sys_malloc;
00165 # endif /* UNIV_HOTBACKUP */
00166 #endif /* BUILD_DRIZZLE */
00167 extern ulint  srv_buf_pool_size;  
00168 extern ulint    srv_buf_pool_instances; 
00169 extern ulint  srv_buf_pool_old_size;  
00170 extern ulint  srv_buf_pool_curr_size; 
00171 extern ulint  srv_mem_pool_size;
00172 extern ulint  srv_lock_table_size;
00173 
00174 extern ulint  srv_n_file_io_threads;
00175 extern ulong  srv_read_ahead_threshold;
00176 extern ulint  srv_n_read_io_threads;
00177 extern ulint  srv_n_write_io_threads;
00178 
00179 /* Number of IO operations per second the server can do */
00180 extern ulong    srv_io_capacity;
00181 /* Returns the number of IO operations that is X percent of the
00182 capacity. PCT_IO(5) -> returns the number of IO operations that
00183 is 5% of the max where max is srv_io_capacity.  */
00184 #define PCT_IO(p) ((ulong) (srv_io_capacity * ((double) p / 100.0)))
00185 
00186 #ifdef UNIV_LOG_ARCHIVE
00187 extern ibool    srv_log_archive_on;
00188 extern ibool    srv_archive_recovery;
00189 extern ib_uint64_t  srv_archive_recovery_limit_lsn;
00190 #endif /* UNIV_LOG_ARCHIVE */
00191 
00192 extern char*  srv_file_flush_method_str;
00193 extern ulint  srv_unix_file_flush_method;
00194 extern ulint  srv_win_file_flush_method;
00195 
00196 extern ulint  srv_max_n_open_files;
00197 
00198 extern ulint  srv_max_dirty_pages_pct;
00199 
00200 extern ulint  srv_force_recovery;
00201 extern ulong  srv_thread_concurrency;
00202 
00203 extern ulint  srv_max_n_threads;
00204 
00205 extern lint srv_conc_n_threads;
00206 
00207 extern ulint  srv_fast_shutdown;   /* If this is 1, do not do a
00208            purge and index buffer merge.
00209            If this 2, do not even flush the
00210            buffer pool to data files at the
00211            shutdown: we effectively 'crash'
00212            InnoDB (but lose no committed
00213            transactions). */
00214 extern ibool  srv_innodb_status;
00215 
00216 extern ib_uint64_t  srv_stats_sample_pages;
00217 
00218 extern ibool  srv_use_doublewrite_buf;
00219 extern ibool  srv_use_checksums;
00220 
00221 extern ulong  srv_max_buf_pool_modified_pct;
00222 extern ulong  srv_max_purge_lag;
00223 
00224 extern ulong  srv_replication_delay;
00225 
00226 extern uint64_t srv_ibuf_max_size;
00227 extern uint32_t srv_ibuf_active_contract;
00228 extern uint32_t srv_ibuf_accel_rate;
00229 extern uint32_t srv_checkpoint_age_target;
00230 extern uint32_t srv_flush_neighbor_pages;
00231 extern uint32_t srv_read_ahead;
00232 extern uint32_t srv_adaptive_flushing_method;
00233 
00234 extern ibool    srv_read_only;
00235 extern ibool    srv_fake_write;
00236 extern ibool    srv_apply_log_only;
00237 
00238 /*-------------------------------------------*/
00239 
00240 extern ulint  srv_n_rows_inserted;
00241 extern ulint  srv_n_rows_updated;
00242 extern ulint  srv_n_rows_deleted;
00243 extern ulint  srv_n_rows_read;
00244 
00245 extern ibool  srv_print_innodb_monitor;
00246 extern ibool  srv_print_innodb_lock_monitor;
00247 extern ibool  srv_print_innodb_tablespace_monitor;
00248 extern ibool  srv_print_verbose_log;
00249 extern ibool  srv_print_innodb_table_monitor;
00250 
00251 extern ibool  srv_lock_timeout_active;
00252 extern ibool  srv_monitor_active;
00253 extern ibool  srv_error_monitor_active;
00254 
00255 extern ulong  srv_n_spin_wait_rounds;
00256 extern ulong  srv_n_free_tickets_to_enter;
00257 extern ulong  srv_thread_sleep_delay;
00258 extern ulong  srv_spin_wait_delay;
00259 extern ibool  srv_priority_boost;
00260 
00261 extern ulint  srv_truncated_status_writes;
00262 
00263 #ifdef UNIV_DEBUG
00264 extern  ibool srv_print_thread_releases;
00265 extern  ibool srv_print_lock_waits;
00266 extern  ibool srv_print_buf_io;
00267 extern  ibool srv_print_log_io;
00268 extern  ibool srv_print_latch_waits;
00269 #else /* UNIV_DEBUG */
00270 # define srv_print_thread_releases  FALSE
00271 # define srv_print_lock_waits   FALSE
00272 # define srv_print_buf_io   FALSE
00273 # define srv_print_log_io   FALSE
00274 # define srv_print_latch_waits    FALSE
00275 #endif /* UNIV_DEBUG */
00276 
00277 extern ulint  srv_activity_count;
00278 extern ulint  srv_fatal_semaphore_wait_threshold;
00279 extern ulint  srv_dml_needed_delay;
00280 
00281 extern mutex_t* kernel_mutex_temp;/* mutex protecting the server, trx structs,
00282         query threads, and lock table: we allocate
00283         it from dynamic memory to get it to the
00284         same DRAM page as other hotspot semaphores */
00285 extern mutex_t* commit_id_mutex_temp;
00286 
00287 #define kernel_mutex (*kernel_mutex_temp)
00288 #define commit_id_mutex (*commit_id_mutex_temp)
00289 
00290 #define SRV_MAX_N_IO_THREADS  130
00291 
00292 /* Array of English strings describing the current state of an
00293 i/o handler thread */
00294 extern const char* srv_io_thread_op_info[];
00295 extern const char* srv_io_thread_function[];
00296 
00297 /* the number of the log write requests done */
00298 extern ulint srv_log_write_requests;
00299 
00300 /* the number of physical writes to the log performed */
00301 extern ulint srv_log_writes;
00302 
00303 /* amount of data written to the log files in bytes */
00304 extern ulint srv_os_log_written;
00305 
00306 /* amount of writes being done to the log files */
00307 extern ulint srv_os_log_pending_writes;
00308 
00309 /* we increase this counter, when there we don't have enough space in the
00310 log buffer and have to flush it */
00311 extern ulint srv_log_waits;
00312 
00313 /* the number of purge threads to use from the worker pool (currently 0 or 1) */
00314 extern ulong srv_n_purge_threads;
00315 
00316 /* the number of records to purge in one batch */
00317 extern ulong srv_purge_batch_size;
00318 
00319 /* variable that counts amount of data read in total (in bytes) */
00320 extern ulint srv_data_read;
00321 
00322 /* here we count the amount of data written in total (in bytes) */
00323 extern ulint srv_data_written;
00324 
00325 /* this variable counts the amount of times, when the doublewrite buffer
00326 was flushed */
00327 extern ulint srv_dblwr_writes;
00328 
00329 /* here we store the number of pages that have been flushed to the
00330 doublewrite buffer */
00331 extern ulint srv_dblwr_pages_written;
00332 
00333 /* in this variable we store the number of write requests issued */
00334 extern ulint srv_buf_pool_write_requests;
00335 
00336 /* here we store the number of times when we had to wait for a free page
00337 in the buffer pool. It happens when the buffer pool is full and we need
00338 to make a flush, in order to be able to read or create a page. */
00339 extern ulint srv_buf_pool_wait_free;
00340 
00341 /* variable to count the number of pages that were written from the
00342 buffer pool to disk */
00343 extern ulint srv_buf_pool_flushed;
00344 
00347 extern ulint srv_buf_pool_reads;
00348 
00350 extern uint32_t srv_auto_lru_dump;
00351 
00353 typedef struct export_var_struct export_struc;
00354 
00356 extern export_struc export_vars;
00357 
00359 typedef struct srv_sys_struct srv_sys_t;
00360 
00362 extern srv_sys_t* srv_sys;
00363 
00364 # ifdef UNIV_PFS_THREAD
00365 /* Keys to register InnoDB threads with performance schema */
00366 extern mysql_pfs_key_t  trx_rollback_clean_thread_key;
00367 extern mysql_pfs_key_t  io_handler_thread_key;
00368 extern mysql_pfs_key_t  srv_lock_timeout_thread_key;
00369 extern mysql_pfs_key_t  srv_error_monitor_thread_key;
00370 extern mysql_pfs_key_t  srv_monitor_thread_key;
00371 extern mysql_pfs_key_t  srv_master_thread_key;
00372 
00373 /* This macro register the current thread and its key with performance
00374 schema */
00375 #  define pfs_register_thread(key)      \
00376 do {                \
00377   if (PSI_server) {         \
00378     struct PSI_thread* psi = PSI_server->new_thread(key, NULL, 0);\
00379     if (psi) {          \
00380       PSI_server->set_thread(psi);    \
00381     }           \
00382   }             \
00383 } while (0)
00384 
00385 /* This macro delist the current thread from performance schema */
00386 #  define pfs_delete_thread()       \
00387 do {                \
00388   if (PSI_server) {         \
00389     PSI_server->delete_current_thread();    \
00390   }             \
00391 } while (0)
00392 # endif /* UNIV_PFS_THREAD */
00393 
00394 #endif /* !UNIV_HOTBACKUP */
00395 
00397 enum {
00398   SRV_NOT_RAW = 0,  
00399   SRV_NEW_RAW,    
00401   SRV_OLD_RAW   
00402 };
00403 
00406 enum {
00407   SRV_UNIX_FSYNC = 1, 
00408   SRV_UNIX_O_DSYNC, 
00409   SRV_UNIX_LITTLESYNC,  
00412   SRV_UNIX_NOSYNC,  
00413   SRV_UNIX_O_DIRECT,  
00415   SRV_UNIX_ALL_O_DIRECT 
00416 };
00417 
00419 enum {
00420   SRV_WIN_IO_NORMAL = 1,  
00421   SRV_WIN_IO_UNBUFFERED 
00422 };
00423 
00429 enum {
00430   SRV_FORCE_IGNORE_CORRUPT = 1, 
00432   SRV_FORCE_NO_BACKGROUND = 2,  
00435   SRV_FORCE_NO_TRX_UNDO = 3,  
00437   SRV_FORCE_NO_IBUF_MERGE = 4,  
00440   SRV_FORCE_NO_UNDO_LOG_SCAN = 5, 
00444   SRV_FORCE_NO_LOG_REDO = 6 
00446 };
00447 
00448 #ifndef UNIV_HOTBACKUP
00449 
00450 enum srv_thread_type {
00451   SRV_COM = 1,  
00452   SRV_CONSOLE,  
00453   SRV_WORKER, 
00455 #if 0
00456   /* Utility threads */
00457   SRV_BUFFER, 
00458   SRV_RECOVERY, 
00459   SRV_INSERT, 
00460 #endif
00461   SRV_MASTER  
00463 };
00464 
00465 /*********************************************************************/
00468 UNIV_INTERN
00469 ulint
00470 srv_boot(void);
00471 /*==========*/
00472 /*********************************************************************/
00474 UNIV_INTERN
00475 void
00476 srv_init(void);
00477 /*==========*/
00478 /*********************************************************************/
00480 UNIV_INTERN
00481 void
00482 srv_free(void);
00483 /*==========*/
00484 /*********************************************************************/
00487 UNIV_INTERN
00488 void
00489 srv_general_init(void);
00490 /*==================*/
00491 /*********************************************************************/
00494 UNIV_INTERN
00495 ulint
00496 srv_get_n_threads(void);
00497 /*===================*/
00498 /*********************************************************************/
00502 enum srv_thread_type
00503 srv_get_thread_type(void);
00504 /*=====================*/
00505 /*********************************************************************/
00507 UNIV_INTERN
00508 void
00509 srv_set_io_thread_op_info(
00510 /*======================*/
00511   ulint   i,  
00512   const char* str); 
00514 /*********************************************************************/
00519 UNIV_INTERN
00520 ulint
00521 srv_release_threads(
00522 /*================*/
00523   enum srv_thread_type  type, 
00524   ulint     n); 
00525 /*********************************************************************/
00528 UNIV_INTERN
00529 os_thread_ret_t
00530 srv_master_thread(
00531 /*==============*/
00532   void* arg); 
00534 /*******************************************************************/
00536 UNIV_INTERN
00537 void
00538 srv_wake_purge_thread(void);
00539 /*=======================*/
00540 /*******************************************************************/
00546 UNIV_INTERN
00547 void
00548 srv_active_wake_master_thread(void);
00549 /*===============================*/
00550 /*******************************************************************/
00552 UNIV_INTERN
00553 void
00554 srv_wake_master_thread(void);
00555 /*========================*/
00556 /*******************************************************************/
00562 UNIV_INTERN
00563 void
00564 srv_wake_purge_thread_if_not_active(void);
00565 /*=====================================*/
00566 /*********************************************************************/
00569 UNIV_INTERN
00570 void
00571 srv_conc_enter_innodb(
00572 /*==================*/
00573   trx_t*  trx); 
00575 /*********************************************************************/
00578 UNIV_INTERN
00579 void
00580 srv_conc_force_enter_innodb(
00581 /*========================*/
00582   trx_t*  trx); 
00584 /*********************************************************************/
00587 UNIV_INTERN
00588 void
00589 srv_conc_force_exit_innodb(
00590 /*=======================*/
00591   trx_t*  trx); 
00593 /*********************************************************************/
00595 UNIV_INTERN
00596 void
00597 srv_conc_exit_innodb(
00598 /*=================*/
00599   trx_t*  trx); 
00601 /***************************************************************/
00607 UNIV_INTERN
00608 void
00609 srv_suspend_mysql_thread(
00610 /*=====================*/
00611   que_thr_t*  thr); 
00613 /********************************************************************/
00616 UNIV_INTERN
00617 void
00618 srv_release_mysql_thread_if_suspended(
00619 /*==================================*/
00620   que_thr_t*  thr); 
00622 /*********************************************************************/
00625 UNIV_INTERN
00626 os_thread_ret_t
00627 srv_lock_timeout_thread(
00628 /*====================*/
00629   void* arg); 
00631 /*********************************************************************/
00634 UNIV_INTERN
00635 os_thread_ret_t
00636 srv_monitor_thread(
00637 /*===============*/
00638   void* arg); 
00640 /*************************************************************************
00641 A thread which prints warnings about semaphore waits which have lasted
00642 too long. These can be used to track bugs which cause hangs.
00643 @return a dummy parameter */
00644 UNIV_INTERN
00645 os_thread_ret_t
00646 srv_error_monitor_thread(
00647 /*=====================*/
00648   void* arg); 
00650 /*********************************************************************/
00654 UNIV_INTERN
00655 os_thread_ret_t
00656 srv_LRU_dump_restore_thread(
00657 /*====================*/
00658   void* arg); 
00660 /******************************************************************/
00664 UNIV_INTERN
00665 ibool
00666 srv_printf_innodb_monitor(
00667 /*======================*/
00668   FILE* file,   
00669   ibool nowait,   
00670   ulint*  trx_start,  
00672   ulint*  trx_end); 
00675 /******************************************************************/
00677 UNIV_INTERN
00678 void
00679 srv_export_innodb_status(void);
00680 /*==========================*/
00681 
00682 /******************************************************************/
00684 UNIV_INTERN
00685 void
00686 srv_inc_activity_count(void);
00687 /*=========================*/
00688 
00689 /*********************************************************************/
00692 UNIV_INTERN
00693 os_thread_ret_t
00694 srv_purge_thread(
00695 /*=============*/
00696   void* /*arg __attribute__((unused))*/); 
00699 /**********************************************************************/
00702 UNIV_INTERN
00703 void
00704 srv_que_task_enqueue_low(
00705 /*=====================*/
00706   que_thr_t*  thr); 
00708 /**********************************************************************/
00711 UNIV_INTERN
00712 ibool
00713 srv_is_any_background_thread_active(void);
00714 /*======================================*/
00715 
00717 struct export_var_struct{
00718   ulint innodb_data_pending_reads;  
00719   ulint innodb_data_pending_writes; 
00720   ulint innodb_data_pending_fsyncs; 
00721   ulint innodb_data_fsyncs;   
00722   ulint innodb_data_read;     
00723   ulint innodb_data_writes;   
00724   ulint innodb_data_written;    
00725   ulint innodb_data_reads;    
00726   ulint innodb_buffer_pool_pages_total; 
00727   ulint innodb_buffer_pool_pages_data;  
00728   ulint innodb_buffer_pool_pages_dirty; 
00729   ulint innodb_buffer_pool_pages_misc;  
00730   ulint innodb_buffer_pool_pages_free;  
00731 #ifdef UNIV_DEBUG
00732   ulint innodb_buffer_pool_pages_latched; 
00733 #endif /* UNIV_DEBUG */
00734   ulint innodb_buffer_pool_read_requests; 
00735   ulint innodb_buffer_pool_reads;   
00736   ulint innodb_buffer_pool_wait_free; 
00737   ulint innodb_buffer_pool_pages_flushed; 
00738   ulint innodb_buffer_pool_write_requests;
00739   ulint innodb_buffer_pool_read_ahead;  
00740   ulint innodb_buffer_pool_read_ahead_evicted;
00741   ulint innodb_dblwr_pages_written; 
00742   ulint innodb_dblwr_writes;    
00743   ibool innodb_have_atomic_builtins;  
00744   ulint innodb_log_waits;     
00745   ulint innodb_log_write_requests;  
00746   ulint innodb_log_writes;    
00747   ulint innodb_os_log_written;    
00748   ulint innodb_os_log_fsyncs;   
00749   ulint innodb_os_log_pending_writes; 
00750   ulint innodb_os_log_pending_fsyncs; 
00751   ulint innodb_page_size;     
00752   ulint innodb_pages_created;   
00753   ulint innodb_pages_read;    
00754   ulint innodb_pages_written;   
00755   ulint innodb_row_lock_waits;    
00756   ulint innodb_row_lock_current_waits;  
00757   ib_int64_t innodb_row_lock_time;  
00759   ulint innodb_row_lock_time_avg;   
00762   ulint innodb_row_lock_time_max;   
00764   ulint innodb_rows_read;     
00765   ulint innodb_rows_inserted;   
00766   ulint innodb_rows_updated;    
00767   ulint innodb_rows_deleted;    
00768   ulint innodb_truncated_status_writes; 
00769 };
00770 
00772 typedef struct srv_slot_struct  srv_slot_t;
00773 
00775 typedef srv_slot_t  srv_table_t;
00776 
00778 struct srv_sys_struct{
00779   srv_table_t*  threads;  
00780   UT_LIST_BASE_NODE_T(que_thr_t)
00781       tasks;    
00782 };
00783 
00784 extern ulint  srv_n_threads_active[];
00785 #else /* !UNIV_HOTBACKUP */
00786 # define srv_use_adaptive_hash_indexes    FALSE
00787 # define srv_use_checksums      TRUE
00788 # define srv_use_native_aio     FALSE
00789 # define srv_force_recovery     0UL
00790 # define srv_set_io_thread_op_info(t,info)  ((void) 0)
00791 # define srv_is_being_started     0
00792 # define srv_win_file_flush_method    SRV_WIN_IO_UNBUFFERED
00793 # define srv_unix_file_flush_method   SRV_UNIX_O_DSYNC
00794 # define srv_start_raw_disk_in_use    0
00795 # define srv_file_per_table     1
00796 #endif /* !UNIV_HOTBACKUP */
00797 
00798 
00799 #endif