mirror of
https://github.com/MariaDB/server.git
synced 2025-08-01 03:47:19 +03:00
Added Innobase to source distribution
Docs/manual.texi: Added Innobase documentation configure.in: Incremented version include/my_base.h: Added option for Innobase myisam/mi_check.c: cleanup mysql-test/t/bdb.test: cleanup mysql-test/t/innobase.test: Extended with new tests from bdb.test mysql-test/t/merge.test: Added test of SHOW create mysys/my_init.c: Fix for UNIXWARE 7 scripts/mysql_install_db.sh: Always write how to start mysqld scripts/safe_mysqld.sh: Fixed type sql/ha_innobase.cc: Update to new version sql/ha_innobase.h: Update to new version sql/handler.h: Added 'update_table_comment()' and 'append_create_info()' sql/sql_delete.cc: Fixes for Innobase sql/sql_select.cc: Fixes for Innobase sql/sql_show.cc: Append create information (for MERGE tables) sql/sql_update.cc: Fixes for Innobase
This commit is contained in:
198
innobase/include/os0sync.h
Normal file
198
innobase/include/os0sync.h
Normal file
@ -0,0 +1,198 @@
|
||||
/******************************************************
|
||||
The interface to the operating system
|
||||
synchronization primitives.
|
||||
|
||||
(c) 1995 Innobase Oy
|
||||
|
||||
Created 9/6/1995 Heikki Tuuri
|
||||
*******************************************************/
|
||||
#ifndef os0sync_h
|
||||
#define os0sync_h
|
||||
|
||||
#include "univ.i"
|
||||
|
||||
#ifdef __WIN__
|
||||
|
||||
#include <windows.h>
|
||||
typedef CRITICAL_SECTION os_fast_mutex_t;
|
||||
typedef void* os_event_t;
|
||||
|
||||
#else
|
||||
|
||||
typedef pthread_mutex_t os_fast_mutex_t;
|
||||
struct os_event_struct {
|
||||
os_fast_mutex_t os_mutex; /* this mutex protects the next
|
||||
fields */
|
||||
ibool is_set; /* this is TRUE if the next mutex is
|
||||
not reserved */
|
||||
os_fast_mutex_t wait_mutex; /* this mutex is used in waiting for
|
||||
the event */
|
||||
};
|
||||
typedef struct os_event_struct os_event_struct_t;
|
||||
typedef os_event_struct_t* os_event_t;
|
||||
#endif
|
||||
|
||||
typedef struct os_mutex_struct os_mutex_str_t;
|
||||
typedef os_mutex_str_t* os_mutex_t;
|
||||
|
||||
#define OS_SYNC_INFINITE_TIME ((ulint)(-1))
|
||||
|
||||
#define OS_SYNC_TIME_EXCEEDED 1
|
||||
|
||||
/*************************************************************
|
||||
Creates an event semaphore, i.e., a semaphore which may
|
||||
just have two states: signaled and nonsignaled.
|
||||
The created event is manual reset: it must be reset
|
||||
explicitly by calling sync_os_reset_event. */
|
||||
|
||||
os_event_t
|
||||
os_event_create(
|
||||
/*============*/
|
||||
/* out: the event handle */
|
||||
char* name); /* in: the name of the event, if NULL
|
||||
the event is created without a name */
|
||||
/*************************************************************
|
||||
Creates an auto-reset event semaphore, i.e., an event
|
||||
which is automatically reset when a single thread is
|
||||
released. */
|
||||
|
||||
os_event_t
|
||||
os_event_create_auto(
|
||||
/*=================*/
|
||||
/* out: the event handle */
|
||||
char* name); /* in: the name of the event, if NULL
|
||||
the event is created without a name */
|
||||
/**************************************************************
|
||||
Sets an event semaphore to the signaled state: lets waiting threads
|
||||
proceed. */
|
||||
|
||||
void
|
||||
os_event_set(
|
||||
/*=========*/
|
||||
os_event_t event); /* in: event to set */
|
||||
/**************************************************************
|
||||
Resets an event semaphore to the nonsignaled state. Waiting threads will
|
||||
stop to wait for the event. */
|
||||
|
||||
void
|
||||
os_event_reset(
|
||||
/*===========*/
|
||||
os_event_t event); /* in: event to reset */
|
||||
/**************************************************************
|
||||
Frees an event object. */
|
||||
|
||||
void
|
||||
os_event_free(
|
||||
/*==========*/
|
||||
os_event_t event); /* in: event to free */
|
||||
/**************************************************************
|
||||
Waits for an event object until it is in the signaled state. */
|
||||
|
||||
void
|
||||
os_event_wait(
|
||||
/*==========*/
|
||||
os_event_t event); /* in: event to wait */
|
||||
/**************************************************************
|
||||
Waits for an event object until it is in the signaled state or
|
||||
a timeout is exceeded. */
|
||||
|
||||
ulint
|
||||
os_event_wait_time(
|
||||
/*===============*/
|
||||
/* out: 0 if success,
|
||||
OS_SYNC_TIME_EXCEEDED if timeout
|
||||
was exceeded */
|
||||
os_event_t event, /* in: event to wait */
|
||||
ulint time); /* in: timeout in microseconds, or
|
||||
OS_SYNC_INFINITE_TIME */
|
||||
/**************************************************************
|
||||
Waits for any event in an event array. Returns if even a single
|
||||
one is signaled or becomes signaled. */
|
||||
|
||||
ulint
|
||||
os_event_wait_multiple(
|
||||
/*===================*/
|
||||
/* out: index of the event
|
||||
which was signaled */
|
||||
ulint n, /* in: number of events in the
|
||||
array */
|
||||
os_event_t* event_array); /* in: pointer to an array of event
|
||||
handles */
|
||||
/*************************************************************
|
||||
Creates an operating system mutex semaphore.
|
||||
Because these are slow, the mutex semaphore of the database
|
||||
itself (sync_mutex_t) should be used where possible. */
|
||||
|
||||
os_mutex_t
|
||||
os_mutex_create(
|
||||
/*============*/
|
||||
/* out: the mutex handle */
|
||||
char* name); /* in: the name of the mutex, if NULL
|
||||
the mutex is created without a name */
|
||||
/**************************************************************
|
||||
Acquires ownership of a mutex semaphore. */
|
||||
|
||||
void
|
||||
os_mutex_enter(
|
||||
/*===========*/
|
||||
os_mutex_t mutex); /* in: mutex to acquire */
|
||||
/**************************************************************
|
||||
Releases ownership of a mutex. */
|
||||
|
||||
void
|
||||
os_mutex_exit(
|
||||
/*==========*/
|
||||
os_mutex_t mutex); /* in: mutex to release */
|
||||
/**************************************************************
|
||||
Frees an mutex object. */
|
||||
|
||||
void
|
||||
os_mutex_free(
|
||||
/*==========*/
|
||||
os_mutex_t mutex); /* in: mutex to free */
|
||||
#ifndef _WIN32
|
||||
/**************************************************************
|
||||
Acquires ownership of a fast mutex. */
|
||||
UNIV_INLINE
|
||||
ulint
|
||||
os_fast_mutex_trylock(
|
||||
/*==================*/
|
||||
/* out: 0 if success, != 0 if
|
||||
was reserved by another
|
||||
thread */
|
||||
os_fast_mutex_t* fast_mutex); /* in: mutex to acquire */
|
||||
/**************************************************************
|
||||
Releases ownership of a fast mutex. */
|
||||
UNIV_INLINE
|
||||
void
|
||||
os_fast_mutex_unlock(
|
||||
/*=================*/
|
||||
os_fast_mutex_t* fast_mutex); /* in: mutex to release */
|
||||
/*************************************************************
|
||||
Initializes an operating system fast mutex semaphore. */
|
||||
|
||||
void
|
||||
os_fast_mutex_init(
|
||||
/*===============*/
|
||||
os_fast_mutex_t* fast_mutex); /* in: fast mutex */
|
||||
/**************************************************************
|
||||
Acquires ownership of a fast mutex. */
|
||||
|
||||
void
|
||||
os_fast_mutex_lock(
|
||||
/*===============*/
|
||||
os_fast_mutex_t* fast_mutex); /* in: mutex to acquire */
|
||||
/**************************************************************
|
||||
Frees an mutex object. */
|
||||
|
||||
void
|
||||
os_fast_mutex_free(
|
||||
/*===============*/
|
||||
os_fast_mutex_t* fast_mutex); /* in: mutex to free */
|
||||
#endif
|
||||
|
||||
#ifndef UNIV_NONINL
|
||||
#include "os0sync.ic"
|
||||
#endif
|
||||
|
||||
#endif
|
Reference in New Issue
Block a user