84 (
errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
85 errmsg(
"unable to map dynamic shared memory segment")));
89 (
errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
90 errmsg(
"bad magic number in dynamic shared memory segment")));
106 (
errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
107 errmsg(
"too many message queue testing workers already")));
127 if (registrant == NULL)
129 elog(
DEBUG1,
"registrant backend has exited prematurely");
208 int save_errno = errno;
PGPROC * BackendPidGetProc(int pid)
dsm_segment * dsm_attach(dsm_handle h)
int errcode(int sqlerrcode)
BackgroundWorker * MyBgworkerEntry
void SetLatch(Latch *latch)
#define SpinLockAcquire(lock)
static void copy_messages(shm_mq_handle *inqh, shm_mq_handle *outqh)
void shm_mq_set_sender(shm_mq *mq, PGPROC *proc)
#define ereport(elevel, rest)
#define SpinLockRelease(lock)
shm_toc * shm_toc_attach(uint64 magic, void *address)
pqsigfunc pqsignal(int signum, pqsigfunc handler)
void * dsm_segment_address(dsm_segment *seg)
volatile sig_atomic_t ProcDiePending
bool proc_exit_inprogress
shm_mq_result shm_mq_send(shm_mq_handle *mqh, Size nbytes, const void *data, bool nowait)
volatile sig_atomic_t InterruptPending
static void handle_sigterm(SIGNAL_ARGS)
shm_mq_handle * shm_mq_attach(shm_mq *mq, dsm_segment *seg, BackgroundWorkerHandle *handle)
void dsm_detach(dsm_segment *seg)
void test_shm_mq_main(Datum main_arg)
int errmsg(const char *fmt,...)
#define CHECK_FOR_INTERRUPTS()
void shm_mq_set_receiver(shm_mq *mq, PGPROC *proc)
shm_mq_result shm_mq_receive(shm_mq_handle *mqh, Size *nbytesp, void **datap, bool nowait)
static void attach_to_queues(dsm_segment *seg, shm_toc *toc, int myworkernumber, shm_mq_handle **inqhp, shm_mq_handle **outqhp)
void * shm_toc_lookup(shm_toc *toc, uint64 key, bool noError)
#define PG_TEST_SHM_MQ_MAGIC
void BackgroundWorkerUnblockSignals(void)