1 /*-------------------------------------------------------------------------- 2 * 3 * test_shm_mq.h 4 * Definitions for shared memory message queues 5 * 6 * Copyright (c) 2013-2018, PostgreSQL Global Development Group 7 * 8 * IDENTIFICATION 9 * src/test/modules/test_shm_mq/test_shm_mq.h 10 * 11 * ------------------------------------------------------------------------- 12 */ 13 14 #ifndef TEST_SHM_MQ_H 15 #define TEST_SHM_MQ_H 16 17 #include "storage/dsm.h" 18 #include "storage/shm_mq.h" 19 #include "storage/spin.h" 20 21 /* Identifier for shared memory segments used by this extension. */ 22 #define PG_TEST_SHM_MQ_MAGIC 0x79fb2447 23 24 /* 25 * This structure is stored in the dynamic shared memory segment. We use 26 * it to determine whether all workers started up OK and successfully 27 * attached to their respective shared message queues. 28 */ 29 typedef struct 30 { 31 slock_t mutex; 32 int workers_total; 33 int workers_attached; 34 int workers_ready; 35 } test_shm_mq_header; 36 37 /* Set up dynamic shared memory and background workers for test run. */ 38 extern void test_shm_mq_setup(int64 queue_size, int32 nworkers, 39 dsm_segment **seg, shm_mq_handle **output, 40 shm_mq_handle **input); 41 42 /* Main entrypoint for a worker. */ 43 extern void test_shm_mq_main(Datum) pg_attribute_noreturn(); 44 45 #endif 46