#include <sync0rw.h>
Public Member Functions | |
UT_LIST_NODE_T (rw_lock_t) list |
Public Attributes | |
volatile lint | lock_word |
volatile ulint | waiters |
volatile ibool | recursive |
volatile os_thread_id_t | writer_thread |
os_event_t | event |
os_event_t | wait_ex_event |
mutex_t | mutex |
ulint | count_os_wait |
const char * | cfile_name |
const char * | last_s_file_name |
const char * | last_x_file_name |
ibool | writer_is_wait_ex |
unsigned | cline:14 |
unsigned | last_s_line:14 |
unsigned | last_x_line:14 |
The structure used in the spin lock implementation of a read-write
lock. Several threads may have a shared lock simultaneously in this lock, but only one writer may have an exclusive lock, in which case no shared locks are allowed. To prevent starving of a writer blocked by readers, a writer may queue for x-lock by decrementing lock_word: no new readers will be let in while the thread waits for readers to exit.
rw_lock_struct::UT_LIST_NODE_T | ( | rw_lock_t | ) |
All allocated rw locks are put into a list
const char* rw_lock_struct::cfile_name |
File name where lock created
Definition at line 612 of file sync0rw.h.
Referenced by innodb_mutex_show_status(), rw_lock_create_func(), and rw_lock_x_lock_func().
unsigned rw_lock_struct::cline |
Line where created
Definition at line 623 of file sync0rw.h.
Referenced by innodb_mutex_show_status(), rw_lock_create_func(), and rw_lock_x_lock_func().
ulint rw_lock_struct::count_os_wait |
Count of os_waits. May not be accurate
Definition at line 611 of file sync0rw.h.
Referenced by innodb_mutex_show_status(), rw_lock_create_func(), and rw_lock_x_lock_func().
os_event_t rw_lock_struct::event |
Used by sync0arr.c for thread queueing
Definition at line 591 of file sync0rw.h.
Referenced by rw_lock_create_func(), and rw_lock_free_func().
const char* rw_lock_struct::last_s_file_name |
File name where last s-locked
Definition at line 614 of file sync0rw.h.
Referenced by rw_lock_create_func().
unsigned rw_lock_struct::last_s_line |
Line number where last time s-locked
Definition at line 624 of file sync0rw.h.
Referenced by rw_lock_create_func().
const char* rw_lock_struct::last_x_file_name |
File name where last x-locked
Definition at line 615 of file sync0rw.h.
Referenced by rw_lock_create_func().
unsigned rw_lock_struct::last_x_line |
Line number where last time x-locked
Definition at line 625 of file sync0rw.h.
Referenced by rw_lock_create_func().
volatile lint rw_lock_struct::lock_word |
Holds the state of the lock.
Definition at line 573 of file sync0rw.h.
Referenced by rw_lock_create_func(), rw_lock_free_func(), and rw_lock_x_lock_func().
mutex_t rw_lock_struct::mutex |
The mutex protecting rw_lock_struct
Definition at line 596 of file sync0rw.h.
Referenced by rw_lock_create_func().
volatile ibool rw_lock_struct::recursive |
Default value FALSE which means the lock is non-recursive. The value is typically set to TRUE making normal rw_locks recursive. In case of asynchronous IO, when a non-zero value of 'pass' is passed then we keep the lock non-recursive. This flag also tells us about the state of writer_thread field. If this flag is set then writer_thread MUST contain the thread id of the current x-holder or wait-x thread. This flag must be reset in x_unlock functions before incrementing the lock_word
Definition at line 575 of file sync0rw.h.
Referenced by rw_lock_create_func().
os_event_t rw_lock_struct::wait_ex_event |
Event for next-writer to wait on. A thread must decrement lock_word before waiting.
Definition at line 593 of file sync0rw.h.
Referenced by rw_lock_create_func(), and rw_lock_free_func().
volatile ulint rw_lock_struct::waiters |
ibool rw_lock_struct::writer_is_wait_ex |
volatile os_thread_id_t rw_lock_struct::writer_thread |