| MySQL 5.6.14 Source Code Document
    | 


Go to the source code of this file.
| Classes | |
| struct | os_fast_mutex_t | 
| struct | os_event | 
| Macros | |
| #define | OS_SYNC_INFINITE_TIME ULINT_UNDEFINED | 
| #define | OS_SYNC_TIME_EXCEEDED 1 | 
| #define | os_event_wait(event) os_event_wait_low(event, 0) | 
| #define | os_event_wait_time(event, t) os_event_wait_time_low(event, t, 0) | 
| #define | os_fast_mutex_init(K, M) os_fast_mutex_init_func(&((os_fast_mutex_t*)(M))->mutex) | 
| #define | os_fast_mutex_lock(M) os_fast_mutex_lock_func(&((os_fast_mutex_t*)(M))->mutex) | 
| #define | os_fast_mutex_unlock(M) os_fast_mutex_unlock_func(&((os_fast_mutex_t*)(M))->mutex) | 
| #define | os_fast_mutex_free(M) os_fast_mutex_free_func(&((os_fast_mutex_t*)(M))->mutex) | 
| #define | IB_ATOMICS_STARTUP_MSG "Mutexes and rw_locks use InnoDB's own implementation" | 
| #define | os_atomic_inc_ulint(m, v, d) os_atomic_inc_ulint_func(m, v, d) | 
| #define | os_atomic_dec_ulint(m, v, d) os_atomic_dec_ulint_func(m, v, d) | 
| #define | os_increment_counter_by_amount(mutex, counter, amount) | 
| #define | os_decrement_counter_by_amount(mutex, counter, amount) | 
| #define | os_inc_counter(mutex, counter) os_increment_counter_by_amount(mutex, counter, 1) | 
| #define | os_dec_counter(mutex, counter) | 
| Typedefs | |
| typedef pthread_mutex_t | fast_mutex_t | 
| typedef pthread_cond_t | os_cond_t | 
| typedef struct os_event * | os_event_t | 
| typedef struct os_mutex_t * | os_ib_mutex_t | 
| Functions | |
| UNIV_INTERN void | os_sync_init (void) | 
| UNIV_INTERN void | os_sync_free (void) | 
| UNIV_INTERN os_event_t | os_event_create (void) | 
| UNIV_INTERN void | os_event_set (os_event_t event) | 
| UNIV_INTERN ib_int64_t | os_event_reset (os_event_t event) | 
| UNIV_INTERN void | os_event_free (os_event_t event) | 
| UNIV_INTERN void | os_event_wait_low (os_event_t event, ib_int64_t reset_sig_count) | 
| UNIV_INTERN ulint | os_event_wait_time_low (os_event_t event, ulint time_in_usec, ib_int64_t reset_sig_count) | 
| UNIV_INTERN os_ib_mutex_t | os_mutex_create (void) | 
| UNIV_INTERN void | os_mutex_enter (os_ib_mutex_t mutex) | 
| UNIV_INTERN void | os_mutex_exit (os_ib_mutex_t mutex) | 
| UNIV_INTERN void | os_mutex_free (os_ib_mutex_t mutex) | 
| UNIV_INLINE ulint | os_fast_mutex_trylock (os_fast_mutex_t *fast_mutex) | 
| UNIV_INTERN void | os_fast_mutex_unlock_func (fast_mutex_t *fast_mutex) | 
| UNIV_INTERN void | os_fast_mutex_init_func (fast_mutex_t *fast_mutex) | 
| UNIV_INTERN void | os_fast_mutex_lock_func (fast_mutex_t *fast_mutex) | 
| UNIV_INTERN void | os_fast_mutex_free_func (fast_mutex_t *fast_mutex) | 
| Variables | |
| os_ib_mutex_t | os_sync_mutex | 
| ulint | os_thread_count | 
| ulint | os_event_count | 
| ulint | os_mutex_count | 
| ulint | os_fast_mutex_count | 
The interface to the operating system synchronization primitives.
Created 9/6/1995 Heikki Tuuri
Definition in file os0sync.h.
| #define IB_ATOMICS_STARTUP_MSG "Mutexes and rw_locks use InnoDB's own implementation" | 
| #define os_dec_counter | ( | mutex, | |
| counter | |||
| ) | 
| #define os_decrement_counter_by_amount | ( | mutex, | |
| counter, | |||
| amount | |||
| ) | 
| #define os_increment_counter_by_amount | ( | mutex, | |
| counter, | |||
| amount | |||
| ) | 
| #define OS_SYNC_INFINITE_TIME ULINT_UNDEFINED | 
| #define OS_SYNC_TIME_EXCEEDED 1 | 
| typedef pthread_mutex_t fast_mutex_t | 
| typedef struct os_event* os_event_t | 
| typedef struct os_mutex_t* os_ib_mutex_t | 
| UNIV_INTERN os_event_t os_event_create | ( | void | ) | 
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.
Definition at line 368 of file os0sync.cc.


| UNIV_INTERN void os_event_free | ( | os_event_t | event | ) | 
Frees an event object. in: event to free
Frees an event object.
| event | in: event to free | 
Definition at line 532 of file os0sync.cc.


| UNIV_INTERN ib_int64_t os_event_reset | ( | os_event_t | event | ) | 
Resets an event semaphore to the nonsignaled state. Waiting threads will stop to wait for the event. The return value should be passed to os_even_wait_low() if it is desired that this thread should not wait in case of an intervening call to os_event_set() between this os_event_reset() and the os_event_wait_low() call. See comments for os_event_wait_low(). in: event to reset
Resets an event semaphore to the nonsignaled state. Waiting threads will stop to wait for the event. The return value should be passed to os_even_wait_low() if it is desired that this thread should not wait in case of an intervening call to os_event_set() between this os_event_reset() and the os_event_wait_low() call. See comments for os_event_wait_low().
| event | in: event to reset | 
Definition at line 469 of file os0sync.cc.

| UNIV_INTERN void os_event_set | ( | os_event_t | event | ) | 
Sets an event semaphore to the signaled state: lets waiting threads proceed. in: event to set
Sets an event semaphore to the signaled state: lets waiting threads proceed.
| event | in: event to set | 
Definition at line 433 of file os0sync.cc.


| UNIV_INTERN void os_event_wait_low | ( | os_event_t | event, | 
| ib_int64_t | reset_sig_count | ||
| ) | 
Waits for an event object until it is in the signaled state.
Typically, if the event has been signalled after the os_event_reset() we'll return immediately because event->is_set == TRUE. There are, however, situations (e.g.: sync_array code) where we may lose this information. For example:
thread A calls os_event_reset() thread B calls os_event_set() [event->is_set == TRUE] thread C calls os_event_reset() [event->is_set == FALSE] thread A calls os_event_wait() [infinite wait!] thread C calls os_event_wait() [infinite wait!]
Where such a scenario is possible, to avoid infinite wait, the value returned by os_event_reset() should be passed in as reset_sig_count. in: zero or the value returned by previous call of os_event_reset().
Waits for an event object until it is in the signaled state.
Typically, if the event has been signalled after the os_event_reset() we'll return immediately because event->is_set == TRUE. There are, however, situations (e.g.: sync_array code) where we may lose this information. For example:
thread A calls os_event_reset() thread B calls os_event_set() [event->is_set == TRUE] thread C calls os_event_reset() [event->is_set == FALSE] thread A calls os_event_wait() [infinite wait!] thread C calls os_event_wait() [infinite wait!]
Where such a scenario is possible, to avoid infinite wait, the value returned by os_event_reset() should be passed in as reset_sig_count.
| event | in: event to wait | 
| reset_sig_count | in: zero or the value returned by previous call of os_event_reset(). | 
Definition at line 580 of file os0sync.cc.


| UNIV_INTERN ulint os_event_wait_time_low | ( | os_event_t | event, | 
| ulint | time_in_usec, | ||
| ib_int64_t | reset_sig_count | ||
| ) | 
Waits for an event object until it is in the signaled state or a timeout is exceeded. In Unix the timeout is always infinite.
Waits for an event object until it is in the signaled state or a timeout is exceeded.
| event | in: event to wait | 
| time_in_usec | in: timeout in microseconds, or OS_SYNC_INFINITE_TIME | 
| reset_sig_count | in: zero or the value returned by previous call of os_event_reset(). | 
Definition at line 626 of file os0sync.cc.


| UNIV_INTERN void os_fast_mutex_free_func | ( | fast_mutex_t * | fast_mutex | ) | 
Frees an mutex object. in: mutex to free
Frees a mutex object.
| fast_mutex | in: mutex to free | 
Definition at line 896 of file os0sync.cc.

| UNIV_INTERN void os_fast_mutex_init_func | ( | fast_mutex_t * | fast_mutex | ) | 
Initializes an operating system fast mutex semaphore. in: fast mutex
Initializes an operating system fast mutex semaphore.
| fast_mutex | in: fast mutex | 
Definition at line 837 of file os0sync.cc.

| UNIV_INTERN void os_fast_mutex_lock_func | ( | fast_mutex_t * | fast_mutex | ) | 
Acquires ownership of a fast mutex. in: mutex to acquire
Acquires ownership of a fast mutex.
| fast_mutex | in: mutex to acquire | 
Definition at line 866 of file os0sync.cc.
| UNIV_INLINE ulint os_fast_mutex_trylock | ( | os_fast_mutex_t * | fast_mutex | ) | 
Acquires ownership of a fast mutex. Currently in Windows this is the same as os_fast_mutex_lock!
| UNIV_INTERN void os_fast_mutex_unlock_func | ( | fast_mutex_t * | fast_mutex | ) | 
Releases ownership of a fast mutex. in: mutex to release
Releases ownership of a fast mutex.
| fast_mutex | in: mutex to release | 
Definition at line 881 of file os0sync.cc.
| UNIV_INTERN os_ib_mutex_t os_mutex_create | ( | void | ) | 
Creates an operating system mutex semaphore. Because these are slow, the mutex semaphore of InnoDB itself (ib_mutex_t) should be used where possible.
Definition at line 738 of file os0sync.cc.


| UNIV_INTERN void os_mutex_enter | ( | os_ib_mutex_t | mutex | ) | 
Acquires ownership of a mutex semaphore. in: mutex to acquire
Acquires ownership of a mutex semaphore.
| mutex | in: mutex to acquire | 
Definition at line 775 of file os0sync.cc.

| UNIV_INTERN void os_mutex_exit | ( | os_ib_mutex_t | mutex | ) | 
Releases ownership of a mutex. in: mutex to release
Releases ownership of a mutex.
| mutex | in: mutex to release | 
Definition at line 790 of file os0sync.cc.

| UNIV_INTERN void os_mutex_free | ( | os_ib_mutex_t | mutex | ) | 
Frees an mutex object. in: mutex to free
Frees a mutex object.
| mutex | in: mutex to free | 
Definition at line 806 of file os0sync.cc.


| UNIV_INTERN void os_sync_free | ( | void | ) | 
Frees created events and OS 'slow' mutexes.
Definition at line 328 of file os0sync.cc.

| UNIV_INTERN void os_sync_init | ( | void | ) | 
Initializes global event and OS 'slow' mutex lists.
Definition at line 307 of file os0sync.cc.


| os_ib_mutex_t os_sync_mutex | 
Mutex protecting counts and the event and OS 'slow' mutex lists
Mutex protecting counts and the lists of OS mutexes and events
Definition at line 55 of file os0sync.cc.
| ulint os_thread_count | 
This is incremented by 1 in os_thread_create and decremented by 1 in
os_thread_exit
Definition at line 63 of file os0sync.cc.