Commit 6366a909 authored by unknown's avatar unknown
Browse files

ha_innodb.cc, sync0sync.h, sync0sync.c:

  Use only noninlined InnoDB functions in ha_innodb.cc


innobase/sync/sync0sync.c:
  Use only noninlined InnoDB functions in ha_innodb.cc
innobase/include/sync0sync.h:
  Use only noninlined InnoDB functions in ha_innodb.cc
sql/ha_innodb.cc:
  Use only noninlined InnoDB functions in ha_innodb.cc
parent dc51624d
Loading
Loading
Loading
Loading
+16 −0
Original line number Diff line number Diff line
@@ -65,6 +65,15 @@ NOTE! The following macro should be used in mutex locking, not the
corresponding function. */

#define mutex_enter(M)    mutex_enter_func((M), IB__FILE__, __LINE__)
/**********************************************************************
A noninlined function that reserves a mutex. In ha_innodb.cc we have disabled
inlining of InnoDB functions, and no inlined functions should be called from
there. That is why we need to duplicate the inlined function here. */

void
mutex_enter_noninline(
/*==================*/
	mutex_t*	mutex);	/* in: mutex */
/******************************************************************
NOTE! The following macro should be used in mutex locking, not the
corresponding function. */
@@ -105,6 +114,13 @@ mutex_exit(
/*=======*/
	mutex_t*	mutex);	/* in: pointer to mutex */
/**********************************************************************
Releases a mutex. */

void
mutex_exit_noninline(
/*=================*/
	mutex_t*	mutex);	/* in: mutex */
/**********************************************************************
Returns TRUE if no mutex or rw-lock is currently locked.
Works only in the debug version. */

+24 −0
Original line number Diff line number Diff line
@@ -167,6 +167,30 @@ struct sync_level_struct{
	ulint	level;	/* level of the latch in the latching order */
};

/**********************************************************************
A noninlined function that reserves a mutex. In ha_innodb.cc we have disabled
inlining of InnoDB functions, and no inlined functions should be called from
there. That is why we need to duplicate the inlined function here. */

void
mutex_enter_noninline(
/*==================*/
	mutex_t*	mutex)	/* in: mutex */
{
	mutex_enter(mutex);
}

/**********************************************************************
Releases a mutex. */

void
mutex_exit_noninline(
/*=================*/
	mutex_t*	mutex)	/* in: mutex */
{
	mutex_exit(mutex);
}

/**********************************************************************
Creates, or rather, initializes a mutex object in a specified memory
location (which must be appropriately aligned). The mutex is initialized
+6 −3
Original line number Diff line number Diff line
@@ -15,7 +15,9 @@
   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA */

/* This file defines the InnoDB handler: the interface between MySQL and
InnoDB */
InnoDB
NOTE: You can only use noninlined InnoDB functions in this file, because we
have disables the InnoDB inlining in this file. */

#ifdef __GNUC__
#pragma implementation				// gcc: Class implementation
@@ -64,6 +66,7 @@ extern "C" {
#include "../innobase/include/btr0cur.h"
#include "../innobase/include/btr0btr.h"
#include "../innobase/include/fsp0fsp.h"
#include "../innobase/include/sync0sync.h"
}

#define HA_INNOBASE_ROWS_IN_TABLE 10000 /* to get optimization right */
@@ -4629,7 +4632,7 @@ innodb_show_status(
	long	flen;
	char*	str;

	mutex_enter(&srv_monitor_file_mutex);
	mutex_enter_noninline(&srv_monitor_file_mutex);
	rewind(srv_monitor_file);
	srv_printf_innodb_monitor(srv_monitor_file);
	flen = ftell(srv_monitor_file);
@@ -4650,7 +4653,7 @@ innodb_show_status(
		str[flen] = 0;
	}

	mutex_exit(&srv_monitor_file_mutex);
	mutex_exit_noninline(&srv_monitor_file_mutex);

	List<Item> field_list;