59
59
a wait array cell. In the debug version this function checks
60
60
if the wait for a semaphore will result in a deadlock, in which
61
61
case prints info and asserts. */
64
64
sync_array_wait_event(
65
65
/*==================*/
66
66
sync_array_t* arr, /* in: wait array */
67
67
ulint index); /* in: index of the reserved cell */
68
68
/**********************************************************************
69
Frees the cell safely by reserving the sync array mutex and decrementing
70
n_reserved if necessary. Should only be called from mutex_spin_wait. */
69
Frees the cell. NOTE! sync_array_wait_event frees the cell
73
sync_array_free_cell_protected(
74
/*===========================*/
75
75
sync_array_t* arr, /* in: wait array */
76
76
ulint index); /* in: index of the cell in array */
77
77
/**************************************************************************
78
Looks for the cells in the wait array which refer
79
to the wait object specified,
80
and sets their corresponding events to the signaled state. In this
81
way releases the threads waiting for the object to contend for the object.
82
It is possible that no such cell is found, in which case does nothing. */
78
Note that one of the wait objects was signalled. */
85
sync_array_signal_object(
86
/*=====================*/
87
sync_array_t* arr, /* in: wait array */
88
void* object);/* in: wait object */
81
sync_array_object_signalled(
82
/*========================*/
83
sync_array_t* arr); /* in: wait array */
89
84
/**************************************************************************
90
85
If the wakeup algorithm does not work perfectly at semaphore relases,
91
86
this function will do the waking (see the comment in mutex_exit). This
92
87
function should be called about every 1 second in the server. */
95
90
sync_arr_wake_threads_if_sema_free(void);
96
91
/*====================================*/
97
92
/**************************************************************************
98
93
Prints warnings of long semaphore waits to stderr. */
101
96
sync_array_print_long_waits(void);
102
97
/*=============================*/
105
100
/************************************************************************
106
101
Validates the integrity of the wait array. Checks
107
102
that the number of reserved cells equals the count variable. */
110
105
sync_array_validate(
111
106
/*================*/
112
107
sync_array_t* arr); /* in: sync wait array */
113
108
/**************************************************************************
114
109
Prints info of the wait array. */
117
112
sync_array_print_info(
118
113
/*==================*/