MySQL 8.0.39
Source Code Documentation
|
The interface to the operating system condition variables. More...
#include "os0event.h"
#include <errno.h>
#include <time.h>
#include "ha_prototypes.h"
#include "ut0mutex.h"
#include "ut0new.h"
Classes | |
struct | os_event |
InnoDB condition variable. More... | |
Typedefs | |
typedef pthread_cond_t | os_cond_t |
Native condition variable. More... | |
Functions | |
os_event_t | os_event_create () |
Creates an event semaphore, i.e., a semaphore which may just have two states: signaled and nonsignaled. More... | |
bool | os_event_is_set (const os_event_t event) |
Check if the event is set. More... | |
void | os_event_set (os_event_t event) |
Sets an event semaphore to the signaled state: lets waiting threads proceed. More... | |
bool | os_event_try_set (os_event_t event) |
int64_t | os_event_reset (os_event_t event) |
Resets an event semaphore to the nonsignaled state. More... | |
ulint | os_event_wait_time_low (os_event_t event, std::chrono::microseconds timeout, int64_t reset_sig_count) |
Waits for an event object until it is in the signaled state or a timeout is exceeded. More... | |
void | os_event_wait_low (os_event_t event, int64_t reset_sig_count) |
Waits for an event object until it is in the signaled state. More... | |
void | os_event_destroy (os_event_t &event) |
Frees an event object. More... | |
void | os_event_global_init (void) |
Initializes support for os_event objects. More... | |
void | os_event_global_destroy (void) |
Deinitializes support for os_event objects. More... | |
Variables | |
static const uint64_t | MICROSECS_IN_A_SECOND = 1000000 |
The number of microseconds in a second. More... | |
static const uint64_t | NANOSECS_IN_A_SECOND |
The number of nanoseconds in a second. More... | |
The interface to the operating system condition variables.
Created 2012-09-23 Sunny Bains
typedef pthread_cond_t os_cond_t |
Native condition variable.
os_event_t os_event_create | ( | ) |
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.
On SuSE Linux we get spurious EBUSY from pthread_mutex_destroy() unless we grab and release the mutex here. Current OS version: openSUSE Leap 15.0 Linux xxx 4.12.14-lp150.12.25-default #1 SMP Thu Nov 1 06:14:23 UTC 2018 (3fcf457) x86_64 x86_64 x86_64 GNU/Linux
void os_event_destroy | ( | os_event_t & | event | ) |
Frees an event object.
in/own: event to free
event | in/own: event to free |
void os_event_global_destroy | ( | void | ) |
Deinitializes support for os_event objects.
Must be called once, and after all os_event objects are destroyed. After it is called, no new os_event is allowed to be created.
void os_event_global_init | ( | void | ) |
Initializes support for os_event objects.
Must be called once, and before any os_event object is created.
bool os_event_is_set | ( | const os_event_t | event | ) |
Check if the event is set.
event | in: event to test |
int64_t os_event_reset | ( | os_event_t | event | ) |
Resets an event semaphore to the nonsignaled state.
Resets an event semaphore to the non-signaled 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/out: event to reset |
void os_event_set | ( | os_event_t | event | ) |
Sets an event semaphore to the signaled state: lets waiting threads proceed.
in/out: event to set
event | in/out: event to set |
bool os_event_try_set | ( | os_event_t | event | ) |
void os_event_wait_low | ( | os_event_t | event, |
int64_t | reset_sig_count | ||
) |
Waits for an event object until it is in the signaled state.
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(). |
ulint os_event_wait_time_low | ( | os_event_t | event, |
std::chrono::microseconds | timeout, | ||
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.
[in,out] | event | Event to wait for. |
[in] | timeout | Timeout, or std::chrono::microseconds::max(). |
[in] | reset_sig_count | Zero or the value returned by previous call of os_event_reset(). |
|
static |
The number of microseconds in a second.
|
static |
The number of nanoseconds in a second.