@@ -56,7 +56,24 @@ CollectorShmqHeader *collector_hdr = NULL;
56
56
/* Receiver (backend) local shm_mq pointers and lock */
57
57
shm_mq * recv_mq = NULL ;
58
58
shm_mq_handle * recv_mqh = NULL ;
59
- LOCKTAG queueTag ;
59
+
60
+ const LOCKTAG queueTag = {
61
+ .locktag_field1 = PG_WAIT_SAMPLING_MAGIC ,
62
+ .locktag_field2 = PGWS_QUEUE_LOCK ,
63
+ .locktag_field3 = 0 ,
64
+ .locktag_field4 = 0 ,
65
+ .locktag_type = LOCKTAG_USERLOCK ,
66
+ .locktag_lockmethodid = USER_LOCKMETHOD
67
+ };
68
+
69
+ const LOCKTAG collectorTag = {
70
+ .locktag_field1 = PG_WAIT_SAMPLING_MAGIC ,
71
+ .locktag_field2 = PGWS_COLLECTOR_LOCK ,
72
+ .locktag_field3 = 0 ,
73
+ .locktag_field4 = 0 ,
74
+ .locktag_type = LOCKTAG_USERLOCK ,
75
+ .locktag_lockmethodid = USER_LOCKMETHOD
76
+ };
60
77
61
78
#if PG_VERSION_NUM >= 150000
62
79
static shmem_request_hook_type prev_shmem_request_hook = NULL ;
@@ -563,21 +580,9 @@ typedef struct
563
580
ProfileItem * items ;
564
581
} Profile ;
565
582
566
- void
567
- init_lock_tag (LOCKTAG * tag , uint32 lock )
568
- {
569
- tag -> locktag_field1 = PG_WAIT_SAMPLING_MAGIC ;
570
- tag -> locktag_field2 = lock ;
571
- tag -> locktag_field3 = 0 ;
572
- tag -> locktag_field4 = 0 ;
573
- tag -> locktag_type = LOCKTAG_USERLOCK ;
574
- tag -> locktag_lockmethodid = USER_LOCKMETHOD ;
575
- }
576
-
577
583
static void *
578
584
receive_array (SHMRequest request , Size item_size , Size * count )
579
585
{
580
- LOCKTAG collectorTag ;
581
586
shm_mq_result res ;
582
587
Size len ,
583
588
i ;
@@ -587,13 +592,10 @@ receive_array(SHMRequest request, Size item_size, Size *count)
587
592
MemoryContext oldctx ;
588
593
589
594
/* Ensure nobody else trying to send request to queue */
590
- init_lock_tag (& queueTag , PGWS_QUEUE_LOCK );
591
595
LockAcquire (& queueTag , ExclusiveLock , false, false);
592
596
593
- recv_mq = shm_mq_create (collector_mq , COLLECTOR_QUEUE_SIZE );
594
-
595
- init_lock_tag (& collectorTag , PGWS_COLLECTOR_LOCK );
596
597
LockAcquire (& collectorTag , ExclusiveLock , false, false);
598
+ recv_mq = shm_mq_create (collector_mq , COLLECTOR_QUEUE_SIZE );
597
599
collector_hdr -> request = request ;
598
600
LockRelease (& collectorTag , ExclusiveLock , false);
599
601
@@ -754,23 +756,17 @@ PG_FUNCTION_INFO_V1(pg_wait_sampling_reset_profile);
754
756
Datum
755
757
pg_wait_sampling_reset_profile (PG_FUNCTION_ARGS )
756
758
{
757
- LOCKTAG tag ;
758
- LOCKTAG collectorTag ;
759
-
760
759
check_shmem ();
761
760
762
- init_lock_tag (& tag , PGWS_QUEUE_LOCK );
763
-
764
- LockAcquire (& tag , ExclusiveLock , false, false);
761
+ LockAcquire (& queueTag , ExclusiveLock , false, false);
765
762
766
- init_lock_tag (& collectorTag , PGWS_COLLECTOR_LOCK );
767
763
LockAcquire (& collectorTag , ExclusiveLock , false, false);
768
764
collector_hdr -> request = PROFILE_RESET ;
769
765
LockRelease (& collectorTag , ExclusiveLock , false);
770
766
771
767
SetLatch (collector_hdr -> latch );
772
768
773
- LockRelease (& tag , ExclusiveLock , false);
769
+ LockRelease (& queueTag , ExclusiveLock , false);
774
770
775
771
PG_RETURN_VOID ();
776
772
}
0 commit comments