PostgreSQL Source Code
git master
|
Go to the source code of this file.
Data Structures | |
struct | shm_mq_iovec |
Typedefs | |
typedef struct shm_mq | shm_mq |
typedef struct shm_mq_handle | shm_mq_handle |
Enumerations | |
enum | shm_mq_result { SHM_MQ_SUCCESS, SHM_MQ_WOULD_BLOCK, SHM_MQ_DETACHED } |
Functions | |
shm_mq * | shm_mq_create (void *address, Size size) |
void | shm_mq_set_receiver (shm_mq *mq, PGPROC *) |
void | shm_mq_set_sender (shm_mq *mq, PGPROC *) |
PGPROC * | shm_mq_get_receiver (shm_mq *) |
PGPROC * | shm_mq_get_sender (shm_mq *) |
shm_mq_handle * | shm_mq_attach (shm_mq *mq, dsm_segment *seg, BackgroundWorkerHandle *handle) |
void | shm_mq_set_handle (shm_mq_handle *, BackgroundWorkerHandle *) |
void | shm_mq_detach (shm_mq_handle *mqh) |
shm_mq * | shm_mq_get_queue (shm_mq_handle *mqh) |
shm_mq_result | shm_mq_send (shm_mq_handle *mqh, Size nbytes, const void *data, bool nowait) |
shm_mq_result | shm_mq_sendv (shm_mq_handle *mqh, shm_mq_iovec *iov, int iovcnt, bool nowait) |
shm_mq_result | shm_mq_receive (shm_mq_handle *mqh, Size *nbytesp, void **datap, bool nowait) |
shm_mq_result | shm_mq_wait_for_attach (shm_mq_handle *mqh) |
Variables | |
PGDLLIMPORT const Size | shm_mq_minimum_size |
typedef struct shm_mq_handle shm_mq_handle |
enum shm_mq_result |
Enumerator | |
---|---|
SHM_MQ_SUCCESS | |
SHM_MQ_WOULD_BLOCK | |
SHM_MQ_DETACHED |
shm_mq_handle* shm_mq_attach | ( | shm_mq * | mq, |
dsm_segment * | seg, | ||
BackgroundWorkerHandle * | handle | ||
) |
Definition at line 283 of file shm_mq.c.
References Assert, CurrentMemoryContext, shm_mq::mq_receiver, shm_mq::mq_sender, shm_mq_handle::mqh_buffer, shm_mq_handle::mqh_buflen, shm_mq_handle::mqh_consume_pending, shm_mq_handle::mqh_context, shm_mq_handle::mqh_counterparty_attached, shm_mq_handle::mqh_expected_bytes, shm_mq_handle::mqh_handle, shm_mq_handle::mqh_length_word_complete, shm_mq_handle::mqh_partial_bytes, shm_mq_handle::mqh_queue, shm_mq_handle::mqh_segment, MyProc, on_dsm_detach(), palloc(), PointerGetDatum, and shm_mq_detach_callback().
Referenced by attach_to_queues(), ExecParallelGetReceiver(), ExecParallelSetupTupleQueues(), InitializeParallelDSM(), ParallelWorkerMain(), ReinitializeParallelDSM(), and test_shm_mq_setup().
Definition at line 170 of file shm_mq.c.
References Assert, MAXALIGN, MAXALIGN_DOWN, shm_mq::mq_bytes_read, shm_mq::mq_bytes_written, shm_mq::mq_detached, shm_mq::mq_mutex, shm_mq::mq_receiver, shm_mq::mq_ring, shm_mq::mq_ring_offset, shm_mq::mq_ring_size, shm_mq::mq_sender, offsetof, pg_atomic_init_u64(), and SpinLockInit.
Referenced by ExecParallelSetupTupleQueues(), InitializeParallelDSM(), ReinitializeParallelDSM(), and setup_dynamic_shared_memory().
void shm_mq_detach | ( | shm_mq_handle * | mqh | ) |
Definition at line 817 of file shm_mq.c.
References cancel_on_dsm_detach(), shm_mq_handle::mqh_buffer, shm_mq_handle::mqh_queue, shm_mq_handle::mqh_segment, pfree(), PointerGetDatum, shm_mq_detach_callback(), and shm_mq_detach_internal().
Referenced by DestroyParallelContext(), ExecParallelFinish(), HandleParallelMessage(), LaunchParallelWorkers(), mq_putmessage(), tqueueDestroyReceiver(), and tqueueShutdownReceiver().
shm_mq* shm_mq_get_queue | ( | shm_mq_handle * | mqh | ) |
Definition at line 872 of file shm_mq.c.
References shm_mq_handle::mqh_queue.
Referenced by WaitForParallelWorkersToAttach(), and WaitForParallelWorkersToFinish().
Definition at line 235 of file shm_mq.c.
References shm_mq::mq_mutex, shm_mq::mq_receiver, SpinLockAcquire, and SpinLockRelease.
Referenced by shm_mq_send_bytes(), and shm_mq_wait_for_attach().
Definition at line 250 of file shm_mq.c.
References shm_mq::mq_mutex, shm_mq::mq_sender, SpinLockAcquire, and SpinLockRelease.
Referenced by shm_mq_receive(), shm_mq_wait_for_attach(), WaitForParallelWorkersToAttach(), and WaitForParallelWorkersToFinish().
shm_mq_result shm_mq_receive | ( | shm_mq_handle * | mqh, |
Size * | nbytesp, | ||
void ** | datap, | ||
bool | nowait | ||
) |
Definition at line 548 of file shm_mq.c.
References Assert, ereport, errcode(), errmsg(), ERROR, Max, MAXALIGN, MaxAllocSize, MemoryContextAlloc(), Min, shm_mq::mq_detached, shm_mq::mq_receiver, shm_mq::mq_ring_size, shm_mq::mq_sender, shm_mq_handle::mqh_buffer, shm_mq_handle::mqh_buflen, shm_mq_handle::mqh_consume_pending, shm_mq_handle::mqh_context, shm_mq_handle::mqh_counterparty_attached, shm_mq_handle::mqh_expected_bytes, shm_mq_handle::mqh_handle, MQH_INITIAL_BUFSIZE, shm_mq_handle::mqh_length_word_complete, shm_mq_handle::mqh_partial_bytes, shm_mq_handle::mqh_queue, MyProc, pfree(), shm_mq_counterparty_gone(), SHM_MQ_DETACHED, shm_mq_get_sender(), shm_mq_inc_bytes_read(), shm_mq_receive_bytes(), SHM_MQ_SUCCESS, shm_mq_wait_internal(), and SHM_MQ_WOULD_BLOCK.
Referenced by copy_messages(), HandleParallelMessages(), test_shm_mq(), test_shm_mq_pipelined(), and TupleQueueReaderNext().
shm_mq_result shm_mq_send | ( | shm_mq_handle * | mqh, |
Size | nbytes, | ||
const void * | data, | ||
bool | nowait | ||
) |
Definition at line 321 of file shm_mq.c.
References shm_mq_iovec::data, shm_mq_iovec::len, and shm_mq_sendv().
Referenced by copy_messages(), test_shm_mq(), test_shm_mq_pipelined(), and tqueueReceiveSlot().
shm_mq_result shm_mq_sendv | ( | shm_mq_handle * | mqh, |
shm_mq_iovec * | iov, | ||
int | iovcnt, | ||
bool | nowait | ||
) |
Definition at line 347 of file shm_mq.c.
References Assert, shm_mq_iovec::data, ereport, errcode(), errmsg(), ERROR, i, shm_mq_iovec::len, MAXALIGN_DOWN, MaxAllocSize, shm_mq::mq_detached, shm_mq::mq_mutex, shm_mq::mq_receiver, shm_mq::mq_sender, shm_mq_handle::mqh_counterparty_attached, shm_mq_handle::mqh_length_word_complete, shm_mq_handle::mqh_partial_bytes, shm_mq_handle::mqh_queue, MyProc, PGPROC::procLatch, SetLatch(), SHM_MQ_DETACHED, shm_mq_send_bytes(), SHM_MQ_SUCCESS, SpinLockAcquire, SpinLockRelease, and tmpbuf.
Referenced by mq_putmessage(), and shm_mq_send().
void shm_mq_set_handle | ( | shm_mq_handle * | , |
BackgroundWorkerHandle * | |||
) |
Definition at line 311 of file shm_mq.c.
References Assert, and shm_mq_handle::mqh_handle.
Referenced by ExecParallelCreateReaders(), and LaunchParallelWorkers().
Definition at line 199 of file shm_mq.c.
References Assert, shm_mq::mq_mutex, shm_mq::mq_receiver, shm_mq::mq_sender, PGPROC::procLatch, SetLatch(), SpinLockAcquire, and SpinLockRelease.
Referenced by attach_to_queues(), ExecParallelSetupTupleQueues(), InitializeParallelDSM(), ReinitializeParallelDSM(), and setup_dynamic_shared_memory().
Definition at line 217 of file shm_mq.c.
References Assert, shm_mq::mq_mutex, shm_mq::mq_receiver, shm_mq::mq_sender, PGPROC::procLatch, SetLatch(), SpinLockAcquire, and SpinLockRelease.
Referenced by attach_to_queues(), ExecParallelGetReceiver(), ParallelWorkerMain(), and setup_dynamic_shared_memory().
shm_mq_result shm_mq_wait_for_attach | ( | shm_mq_handle * | mqh | ) |
Definition at line 794 of file shm_mq.c.
References Assert, shm_mq::mq_receiver, shm_mq::mq_sender, shm_mq_handle::mqh_handle, shm_mq_handle::mqh_queue, MyProc, SHM_MQ_DETACHED, shm_mq_get_receiver(), shm_mq_get_sender(), SHM_MQ_SUCCESS, and shm_mq_wait_internal().
PGDLLIMPORT const Size shm_mq_minimum_size |
Definition at line 161 of file shm_mq.c.
Referenced by setup_dynamic_shared_memory().