Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Postgres/src/include/utils/   (Postgres Database Version 18.4©)  Datei vom 11.4.2026 mit Größe 3 kB image not shown  

Quelle  wait_event.h

  Sprache: C
 

/*-------------------------------------------------------------------------
 * wait_event.h
 *   Definitions related to wait event reporting
 *
 * Copyright (c) 2001-2025, PostgreSQL Global Development Group
 *
 * src/include/utils/wait_event.h
 * ----------
 */

#ifndef WAIT_EVENT_H
#define WAIT_EVENT_H

/* enums for wait events */
#include "utils/wait_event_types.h"

extern const char *pgstat_get_wait_event(uint32 wait_event_info);
extern const char *pgstat_get_wait_event_type(uint32 wait_event_info);
static inline void pgstat_report_wait_start(uint32 wait_event_info);
static inline void pgstat_report_wait_end(void);
extern void pgstat_set_wait_event_storage(uint32 *wait_event_info);
extern void pgstat_reset_wait_event_storage(void);

extern PGDLLIMPORT uint32 *my_wait_event_info;


/*
 * Wait Events - Extension, InjectionPoint
 *
 * Use InjectionPoint when the server process is waiting in an injection
 * point.  Use Extension for other cases of the server process waiting for
 * some condition defined by an extension module.
 *
 * Extensions can define their own wait events in these categories.  They
 * should call one of these functions with a wait event string.  If the wait
 * event associated to a string is already allocated, it returns the wait
 * event information to use.  If not, it gets one wait event ID allocated from
 * a shared counter, associates the string to the ID in the shared dynamic
 * hash and returns the wait event information.
 *
 * The ID retrieved can be used with pgstat_report_wait_start() or equivalent.
 */

extern uint32 WaitEventExtensionNew(const char *wait_event_name);
extern uint32 WaitEventInjectionPointNew(const char *wait_event_name);

extern void WaitEventCustomShmemInit(void);
extern Size WaitEventCustomShmemSize(void);
extern char **GetWaitEventCustomNames(uint32 classId, int *nwaitevents);

/* ----------
 * pgstat_report_wait_start() -
 *
 * Called from places where server process needs to wait.  This is called
 * to report wait event information.  The wait information is stored
 * as 4-bytes where first byte represents the wait event class (type of
 * wait, for different types of wait, refer WaitClass) and the next
 * 3-bytes represent the actual wait event.  Currently 2-bytes are used
 * for wait event which is sufficient for current usage, 1-byte is
 * reserved for future usage.
 *
 * Historically we used to make this reporting conditional on
 * pgstat_track_activities, but the check for that seems to add more cost
 * than it saves.
 *
 * my_wait_event_info initially points to local memory, making it safe to
 * call this before MyProc has been initialized.
 * ----------
 */

static inline void
pgstat_report_wait_start(uint32 wait_event_info)
{
 /*
  * Since this is a four-byte field which is always read and written as
  * four-bytes, updates are atomic.
 */

 *(volatile uint32 *) my_wait_event_info = wait_event_info;
}

/* ----------
 * pgstat_report_wait_end() -
 *
 * Called to report end of a wait.
 * ----------
 */

static inline void
pgstat_report_wait_end(void)
{
 /* see pgstat_report_wait_start() */
 *(volatile uint32 *) my_wait_event_info = 0;
}


#endif       /* WAIT_EVENT_H */

Messung V0.5 in Prozent
C=99 H=94 G=96

¤ Dauer der Verarbeitung: 0.11 Sekunden  (vorverarbeitet am  2026-08-08) ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

PVS Prover

Isabelle Prover

NIST Cobol Testsuite

Cephes Mathematical Library

Vienna Development Method

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.