log.h File Reference

This graph shows which files directly or indirectly include this file:

Included by dependency graph

Go to the source code of this file.

Functions

void log_info (const char *format,...)
void log_error (const char *format,...)
void print_info (const char *format,...)
void print_error (const char *format,...)
void log_init ()
void die (const char *format,...)


Function Documentation

void die const char *  format,
  ...
 

00159 {
00160   va_list args;
00161   fprintf(stderr,"%s: ", my_progname);
00162   va_start(args, format);
00163   vfprintf(stderr, format, args);
00164   va_end(args);
00165   fprintf(stderr, "\n");
00166   exit(1);
00167 }

void log_error const char *  format,
  ...
 

00108 {
00109   va_list args;
00110   va_start(args, format);
00111   log(stderr, format, args);
00112   va_end(args);
00113 }

void log_info const char *  format,
  ...
 

00117 {
00118   va_list args;
00119   va_start(args, format);
00120   log(stdout, format, args);
00121   va_end(args);
00122 }

void log_init  ) 
 

00712 {
00713         byte*   buf;
00714 
00715         log_sys = mem_alloc(sizeof(log_t));
00716 
00717         mutex_create(&(log_sys->mutex));
00718         mutex_set_level(&(log_sys->mutex), SYNC_LOG);
00719 
00720         mutex_enter(&(log_sys->mutex));
00721 
00722         /* Start the lsn from one log block from zero: this way every
00723         log record has a start lsn != zero, a fact which we will use */
00724         
00725         log_sys->lsn = LOG_START_LSN;
00726 
00727         ut_a(LOG_BUFFER_SIZE >= 16 * OS_FILE_LOG_BLOCK_SIZE);
00728         ut_a(LOG_BUFFER_SIZE >= 4 * UNIV_PAGE_SIZE);
00729 
00730         buf = ut_malloc(LOG_BUFFER_SIZE + OS_FILE_LOG_BLOCK_SIZE);
00731         log_sys->buf = ut_align(buf, OS_FILE_LOG_BLOCK_SIZE);
00732 
00733         log_sys->buf_size = LOG_BUFFER_SIZE;
00734 
00735         memset(log_sys->buf, '\0', LOG_BUFFER_SIZE);
00736 
00737         log_sys->max_buf_free = log_sys->buf_size / LOG_BUF_FLUSH_RATIO
00738                                 - LOG_BUF_FLUSH_MARGIN;
00739         log_sys->check_flush_or_checkpoint = TRUE;
00740         UT_LIST_INIT(log_sys->log_groups);
00741 
00742         log_sys->n_log_ios = 0; 
00743 
00744         log_sys->n_log_ios_old = log_sys->n_log_ios;
00745         log_sys->last_printout_time = time(NULL);
00746         /*----------------------------*/
00747         
00748         log_sys->buf_next_to_write = 0;
00749 
00750         log_sys->write_lsn = ut_dulint_zero;
00751         log_sys->current_flush_lsn = ut_dulint_zero;
00752         log_sys->flushed_to_disk_lsn = ut_dulint_zero;
00753 
00754         log_sys->written_to_some_lsn = log_sys->lsn;
00755         log_sys->written_to_all_lsn = log_sys->lsn;
00756         
00757         log_sys->n_pending_writes = 0;
00758 
00759         log_sys->no_flush_event = os_event_create(NULL);
00760 
00761         os_event_set(log_sys->no_flush_event);
00762 
00763         log_sys->one_flushed_event = os_event_create(NULL);
00764 
00765         os_event_set(log_sys->one_flushed_event);
00766 
00767         /*----------------------------*/
00768         log_sys->adm_checkpoint_interval = ULINT_MAX;
00769 
00770         log_sys->next_checkpoint_no = ut_dulint_zero;
00771         log_sys->last_checkpoint_lsn = log_sys->lsn;
00772         log_sys->n_pending_checkpoint_writes = 0; 
00773 
00774         rw_lock_create(&(log_sys->checkpoint_lock));
00775         rw_lock_set_level(&(log_sys->checkpoint_lock), SYNC_NO_ORDER_CHECK);
00776 
00777         log_sys->checkpoint_buf = ut_align(
00778                                 mem_alloc(2 * OS_FILE_LOG_BLOCK_SIZE),
00779                                                 OS_FILE_LOG_BLOCK_SIZE);
00780         memset(log_sys->checkpoint_buf, '\0', OS_FILE_LOG_BLOCK_SIZE);
00781         /*----------------------------*/
00782 
00783 #ifdef UNIV_LOG_ARCHIVE
00784         /* Under MySQL, log archiving is always off */
00785         log_sys->archiving_state = LOG_ARCH_OFF;
00786         log_sys->archived_lsn = log_sys->lsn;
00787         log_sys->next_archived_lsn = ut_dulint_zero;
00788 
00789         log_sys->n_pending_archive_ios = 0;
00790 
00791         rw_lock_create(&(log_sys->archive_lock));
00792         rw_lock_set_level(&(log_sys->archive_lock), SYNC_NO_ORDER_CHECK);
00793 
00794         log_sys->archive_buf = NULL;
00795 
00796                         /* ut_align(
00797                                 ut_malloc(LOG_ARCHIVE_BUF_SIZE
00798                                           + OS_FILE_LOG_BLOCK_SIZE),
00799                                                 OS_FILE_LOG_BLOCK_SIZE); */
00800         log_sys->archive_buf_size = 0;
00801 
00802         /* memset(log_sys->archive_buf, '\0', LOG_ARCHIVE_BUF_SIZE); */
00803 
00804         log_sys->archiving_on = os_event_create(NULL);
00805 #endif /* UNIV_LOG_ARCHIVE */
00806 
00807         /*----------------------------*/
00808 
00809         log_block_init(log_sys->buf, log_sys->lsn);
00810         log_block_set_first_rec_group(log_sys->buf, LOG_BLOCK_HDR_SIZE);
00811 
00812         log_sys->buf_free = LOG_BLOCK_HDR_SIZE;
00813         log_sys->lsn = ut_dulint_add(LOG_START_LSN, LOG_BLOCK_HDR_SIZE);
00814         
00815         mutex_exit(&(log_sys->mutex));
00816 
00817 #ifdef UNIV_LOG_DEBUG
00818         recv_sys_create();
00819         recv_sys_init(FALSE, buf_pool_get_curr_size());
00820 
00821         recv_sys->parse_start_lsn = log_sys->lsn;
00822         recv_sys->scanned_lsn = log_sys->lsn;
00823         recv_sys->scanned_checkpoint_no = 0;
00824         recv_sys->recovered_lsn = log_sys->lsn;
00825         recv_sys->limit_lsn = ut_dulint_max;
00826 #endif
00827 }

void print_error const char *  format,
  ...
 

00134 {
00135   va_list args;
00136   va_start(args, format);
00137   vfprintf(stderr, format, args);
00138   va_end(args);
00139 }

void print_info const char *  format,
  ...
 

00126 {
00127   va_list args;
00128   va_start(args, format);
00129   vfprintf(stdout, format, args);
00130   va_end(args);
00131 }


Generated on Thu Feb 24 11:01:19 2005 for MySQL by  doxygen 1.3.9.1