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