PostgreSQL Source Code
git master
|
#include "postgres.h"
#include "miscadmin.h"
#include "portability/instr_time.h"
#include "storage/condition_variable.h"
#include "storage/ipc.h"
#include "storage/proc.h"
#include "storage/proclist.h"
#include "storage/spin.h"
#include "utils/memutils.h"
Go to the source code of this file.
Functions | |
void | ConditionVariableInit (ConditionVariable *cv) |
void | ConditionVariablePrepareToSleep (ConditionVariable *cv) |
void | ConditionVariableSleep (ConditionVariable *cv, uint32 wait_event_info) |
bool | ConditionVariableTimedSleep (ConditionVariable *cv, long timeout, uint32 wait_event_info) |
void | ConditionVariableCancelSleep (void) |
void | ConditionVariableSignal (ConditionVariable *cv) |
void | ConditionVariableBroadcast (ConditionVariable *cv) |
Variables | |
static ConditionVariable * | cv_sleep_target = NULL |
void ConditionVariableBroadcast | ( | ConditionVariable * | cv | ) |
Definition at line 279 of file condition_variable.c.
References Assert, ConditionVariableCancelSleep(), ConditionVariable::mutex, MyProc, PGPROC::pgprocno, PGPROC::procLatch, proclist_contains, proclist_is_empty(), proclist_pop_head_node, proclist_push_tail, SetLatch(), SpinLockAcquire, SpinLockRelease, and ConditionVariable::wakeup.
Referenced by _bt_parallel_done(), BarrierArriveAndWait(), BarrierDetachImpl(), BitmapDoneInitializingSharedState(), CheckpointerMain(), ReplicationOriginExitCleanup(), ReplicationSlotAcquireInternal(), ReplicationSlotCleanup(), ReplicationSlotCreate(), ReplicationSlotDropPtr(), ReplicationSlotRelease(), replorigin_session_reset(), and replorigin_session_setup().
void ConditionVariableCancelSleep | ( | void | ) |
Definition at line 221 of file condition_variable.c.
References ConditionVariableSignal(), cv_sleep_target, ConditionVariable::mutex, MyProc, PGPROC::pgprocno, proclist_contains, proclist_delete, signaled, SpinLockAcquire, SpinLockRelease, and ConditionVariable::wakeup.
Referenced by _bt_parallel_heapscan(), _bt_parallel_seize(), AbortSubTransaction(), AbortTransaction(), AuxiliaryProcKill(), BackgroundWriterMain(), BarrierArriveAndWait(), BitmapShouldInitializeSharedState(), CheckpointerMain(), ConditionVariableBroadcast(), ConditionVariablePrepareToSleep(), InvalidateObsoleteReplicationSlots(), ProcKill(), ReplicationSlotAcquireInternal(), replorigin_drop(), RequestCheckpoint(), ShutdownAuxiliaryProcess(), WalSndErrorCleanup(), and WalWriterMain().
void ConditionVariableInit | ( | ConditionVariable * | cv | ) |
Definition at line 37 of file condition_variable.c.
References ConditionVariable::mutex, proclist_init(), SpinLockInit, and ConditionVariable::wakeup.
Referenced by _bt_begin_parallel(), BarrierInit(), btinitparallelscan(), CheckpointerShmemInit(), ExecBitmapHeapInitializeDSM(), ReplicationOriginShmemInit(), and ReplicationSlotsShmemInit().
void ConditionVariablePrepareToSleep | ( | ConditionVariable * | cv | ) |
Definition at line 58 of file condition_variable.c.
References ConditionVariableCancelSleep(), ConditionVariable::mutex, MyProc, PGPROC::pgprocno, proclist_push_tail, SpinLockAcquire, SpinLockRelease, and ConditionVariable::wakeup.
Referenced by BarrierArriveAndWait(), ConditionVariableTimedSleep(), InvalidateObsoleteReplicationSlots(), ReplicationSlotAcquireInternal(), and RequestCheckpoint().
void ConditionVariableSignal | ( | ConditionVariable * | cv | ) |
Definition at line 256 of file condition_variable.c.
References ConditionVariable::mutex, PGPROC::procLatch, proclist_is_empty(), proclist_pop_head_node, SetLatch(), SpinLockAcquire, SpinLockRelease, and ConditionVariable::wakeup.
Referenced by _bt_parallel_release(), _bt_parallel_scan_and_sort(), and ConditionVariableCancelSleep().
void ConditionVariableSleep | ( | ConditionVariable * | cv, |
uint32 | wait_event_info | ||
) |
Definition at line 98 of file condition_variable.c.
References ConditionVariableTimedSleep().
Referenced by _bt_parallel_heapscan(), _bt_parallel_seize(), BarrierArriveAndWait(), BitmapShouldInitializeSharedState(), ReplicationSlotAcquireInternal(), replorigin_drop(), and RequestCheckpoint().
bool ConditionVariableTimedSleep | ( | ConditionVariable * | cv, |
long | timeout, | ||
uint32 | wait_event_info | ||
) |
Definition at line 112 of file condition_variable.c.
References Assert, CHECK_FOR_INTERRUPTS, ConditionVariablePrepareToSleep(), INSTR_TIME_GET_MILLISEC, INSTR_TIME_SET_CURRENT, INSTR_TIME_SUBTRACT, ConditionVariable::mutex, MyLatch, MyProc, PGPROC::pgprocno, proclist_contains, proclist_push_tail, ResetLatch(), SpinLockAcquire, SpinLockRelease, start_time, WaitLatch(), ConditionVariable::wakeup, WL_EXIT_ON_PM_DEATH, WL_LATCH_SET, and WL_TIMEOUT.
Referenced by ConditionVariableSleep(), and InvalidateObsoleteReplicationSlots().
|
static |
Definition at line 31 of file condition_variable.c.
Referenced by ConditionVariableCancelSleep().