diff --git a/src/backend/utils/activity/wait_event.c b/src/backend/utils/activity/wait_event.c index 300de90..aaf9f3d 100644 --- a/src/backend/utils/activity/wait_event.c +++ b/src/backend/utils/activity/wait_event.c @@ -47,11 +47,11 @@ uint32 *my_wait_event_info = &local_my_wait_event_info; * Hash tables for storing custom wait event ids and their names in * shared memory. * - * WaitEventCustomHashById is used to find the name from an event id. - * Any backend can search it to find custom wait events. + * WaitEventCustomHashByInfo is used to find the name from wait event + * information. Any backend can search it to find custom wait events. * - * WaitEventCustomHashByName is used to find the ID from a name. - * It is used to ensure that no duplicated entries are registered. + * WaitEventCustomHashByName is used to find the wait event information from a + * name. It is used to ensure that no duplicated entries are registered. * * For simplicity, we use the same ID counter across types of custom events. * We could end that anytime the need arises. @@ -61,18 +61,18 @@ uint32 *my_wait_event_info = &local_my_wait_event_info; * unlikely that the number of entries will reach * WAIT_EVENT_CUSTOM_HASH_MAX_SIZE. */ -static HTAB *WaitEventCustomHashById; /* find names from IDs */ -static HTAB *WaitEventCustomHashByName; /* find IDs from names */ +static HTAB *WaitEventCustomHashByInfo; /* find names from infos */ +static HTAB *WaitEventCustomHashByName; /* find infos from names */ #define WAIT_EVENT_CUSTOM_HASH_INIT_SIZE 16 #define WAIT_EVENT_CUSTOM_HASH_MAX_SIZE 128 /* hash table entries */ -typedef struct WaitEventCustomEntryById +typedef struct WaitEventCustomEntryByInfo { - uint16 event_id; /* hash key */ + uint32 wait_event_info; /* hash key */ char wait_event_name[NAMEDATALEN]; /* custom wait event name */ -} WaitEventCustomEntryById; +} WaitEventCustomEntryByInfo; typedef struct WaitEventCustomEntryByName { @@ -95,7 +95,7 @@ static WaitEventCustomCounterData *WaitEventCustomCounter; #define WAIT_EVENT_CUSTOM_INITIAL_ID 1 static uint32 WaitEventCustomNew(uint32 classId, const char *wait_event_name); -static const char *GetWaitEventCustomIdentifier(uint16 eventId); +static const char *GetWaitEventCustomIdentifier(uint32 wait_event_info); /* * Return the space for dynamic shared hash tables and dynamic allocation counter. @@ -107,7 +107,7 @@ WaitEventCustomShmemSize(void) sz = MAXALIGN(sizeof(WaitEventCustomCounterData)); sz = add_size(sz, hash_estimate_size(WAIT_EVENT_CUSTOM_HASH_MAX_SIZE, - sizeof(WaitEventCustomEntryById))); + sizeof(WaitEventCustomEntryByInfo))); sz = add_size(sz, hash_estimate_size(WAIT_EVENT_CUSTOM_HASH_MAX_SIZE, sizeof(WaitEventCustomEntryByName))); return sz; @@ -134,13 +134,13 @@ WaitEventCustomShmemInit(void) } /* initialize or attach the hash tables to store custom wait events */ - info.keysize = sizeof(uint16); - info.entrysize = sizeof(WaitEventCustomEntryById); - WaitEventCustomHashById = ShmemInitHash("WaitEventCustom hash by id", - WAIT_EVENT_CUSTOM_HASH_INIT_SIZE, - WAIT_EVENT_CUSTOM_HASH_MAX_SIZE, - &info, - HASH_ELEM | HASH_BLOBS); + info.keysize = sizeof(uint32); + info.entrysize = sizeof(WaitEventCustomEntryByInfo); + WaitEventCustomHashByInfo = ShmemInitHash("WaitEventCustom hash by wait event information", + WAIT_EVENT_CUSTOM_HASH_INIT_SIZE, + WAIT_EVENT_CUSTOM_HASH_MAX_SIZE, + &info, + HASH_ELEM | HASH_BLOBS); /* key is a NULL-terminated string */ info.keysize = sizeof(char[NAMEDATALEN]); @@ -176,7 +176,7 @@ WaitEventCustomNew(uint32 classId, const char *wait_event_name) uint16 eventId; bool found; WaitEventCustomEntryByName *entry_by_name; - WaitEventCustomEntryById *entry_by_id; + WaitEventCustomEntryByInfo *entry_by_info; uint32 wait_event_info; /* Check the limit of the length of the event name */ @@ -249,18 +249,18 @@ WaitEventCustomNew(uint32 classId, const char *wait_event_name) SpinLockRelease(&WaitEventCustomCounter->mutex); /* Register the new wait event */ - entry_by_id = (WaitEventCustomEntryById *) - hash_search(WaitEventCustomHashById, &eventId, + wait_event_info = classId | eventId; + entry_by_info = (WaitEventCustomEntryByInfo *) + hash_search(WaitEventCustomHashByInfo, &wait_event_info, HASH_ENTER, &found); Assert(!found); - strlcpy(entry_by_id->wait_event_name, wait_event_name, - sizeof(entry_by_id->wait_event_name)); + strlcpy(entry_by_info->wait_event_name, wait_event_name, + sizeof(entry_by_info->wait_event_name)); entry_by_name = (WaitEventCustomEntryByName *) hash_search(WaitEventCustomHashByName, wait_event_name, HASH_ENTER, &found); Assert(!found); - wait_event_info = classId | eventId; entry_by_name->wait_event_info = wait_event_info; LWLockRelease(WaitEventCustomLock); @@ -269,28 +269,29 @@ WaitEventCustomNew(uint32 classId, const char *wait_event_name) } /* - * Return the name of a custom wait event ID. + * Return the name of a custom wait event information. */ static const char * -GetWaitEventCustomIdentifier(uint16 eventId) +GetWaitEventCustomIdentifier(uint32 wait_event_info) { bool found; - WaitEventCustomEntryById *entry; + WaitEventCustomEntryByInfo *entry; /* Built-in event? */ - if (eventId < WAIT_EVENT_CUSTOM_INITIAL_ID) + if (wait_event_info == PG_WAIT_EXTENSION) return "Extension"; /* It is a user-defined wait event, so lookup hash table. */ LWLockAcquire(WaitEventCustomLock, LW_SHARED); - entry = (WaitEventCustomEntryById *) - hash_search(WaitEventCustomHashById, &eventId, + entry = (WaitEventCustomEntryByInfo *) + hash_search(WaitEventCustomHashByInfo, &wait_event_info, HASH_FIND, &found); LWLockRelease(WaitEventCustomLock); if (!entry) - elog(ERROR, "could not find custom wait event name for ID %u", - eventId); + elog(ERROR, + "could not find custom name for wait event information %u", + wait_event_info); return entry->wait_event_name; } @@ -449,7 +450,7 @@ pgstat_get_wait_event(uint32 wait_event_info) break; case PG_WAIT_EXTENSION: case PG_WAIT_INJECTIONPOINT: - event_name = GetWaitEventCustomIdentifier(eventId); + event_name = GetWaitEventCustomIdentifier(wait_event_info); break; case PG_WAIT_BUFFERPIN: { diff --git a/src/tools/pgindent/typedefs.list b/src/tools/pgindent/typedefs.list index 5696604..75433b3 100644 --- a/src/tools/pgindent/typedefs.list +++ b/src/tools/pgindent/typedefs.list @@ -3100,7 +3100,7 @@ WaitEventActivity WaitEventBufferPin WaitEventClient WaitEventCustomCounterData -WaitEventCustomEntryById +WaitEventCustomEntryByInfo WaitEventCustomEntryByName WaitEventIO WaitEventIPC