PostgreSQL Source Code git master
injection_stats.h File Reference
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Functions

void pgstat_register_inj (void)
 
void pgstat_create_inj (const char *name)
 
void pgstat_drop_inj (const char *name)
 
void pgstat_report_inj (const char *name)
 
void pgstat_register_inj_fixed (void)
 
void pgstat_report_inj_fixed (uint32 numattach, uint32 numdetach, uint32 numrun, uint32 numcached, uint32 numloaded)
 

Variables

bool inj_stats_enabled
 

Function Documentation

◆ pgstat_create_inj()

void pgstat_create_inj ( const char *  name)

Definition at line 125 of file injection_stats.c.

126{
127 PgStat_EntryRef *entry_ref;
129
130 /* leave if disabled */
132 return;
133
135 PGSTAT_INJ_IDX(name), NULL);
136
137 shstatent = (PgStatShared_InjectionPoint *) entry_ref->shared_stats;
138
139 /* initialize shared memory data */
140 memset(&shstatent->stats, 0, sizeof(shstatent->stats));
141}
bool inj_stats_enabled
static bool inj_stats_loaded
#define PGSTAT_INJ_IDX(name)
#define PGSTAT_KIND_INJECTION
PgStat_EntryRef * pgstat_prep_pending_entry(PgStat_Kind kind, Oid dboid, uint64 objid, bool *created_entry)
Definition: pgstat.c:1265
#define InvalidOid
Definition: postgres_ext.h:37
PgStat_StatInjEntry stats
PgStatShared_Common * shared_stats
const char * name

References inj_stats_enabled, inj_stats_loaded, InvalidOid, name, PGSTAT_INJ_IDX, PGSTAT_KIND_INJECTION, pgstat_prep_pending_entry(), PgStat_EntryRef::shared_stats, and PgStatShared_InjectionPoint::stats.

Referenced by injection_points_attach().

◆ pgstat_drop_inj()

void pgstat_drop_inj ( const char *  name)

Definition at line 147 of file injection_stats.c.

148{
149 /* leave if disabled */
151 return;
152
156}
void pgstat_request_entry_refs_gc(void)
Definition: pgstat_shmem.c:745
bool pgstat_drop_entry(PgStat_Kind kind, Oid dboid, uint64 objid)

References inj_stats_enabled, inj_stats_loaded, InvalidOid, name, pgstat_drop_entry(), PGSTAT_INJ_IDX, PGSTAT_KIND_INJECTION, and pgstat_request_entry_refs_gc().

Referenced by injection_points_cleanup(), and injection_points_detach().

◆ pgstat_register_inj()

void pgstat_register_inj ( void  )

Definition at line 113 of file injection_stats.c.

114{
116
117 /* mark stats as loaded */
118 inj_stats_loaded = true;
119}
static const PgStat_KindInfo injection_stats
void pgstat_register_kind(PgStat_Kind kind, const PgStat_KindInfo *kind_info)
Definition: pgstat.c:1463

References inj_stats_loaded, injection_stats, PGSTAT_KIND_INJECTION, and pgstat_register_kind().

Referenced by _PG_init().

◆ pgstat_register_inj_fixed()

void pgstat_register_inj_fixed ( void  )

Definition at line 130 of file injection_stats_fixed.c.

131{
133
134 /* mark stats as loaded */
135 inj_fixed_loaded = true;
136}
static bool inj_fixed_loaded
#define PGSTAT_KIND_INJECTION_FIXED
static const PgStat_KindInfo injection_stats_fixed

References inj_fixed_loaded, injection_stats_fixed, PGSTAT_KIND_INJECTION_FIXED, and pgstat_register_kind().

Referenced by _PG_init().

◆ pgstat_report_inj()

void pgstat_report_inj ( const char *  name)

Definition at line 165 of file injection_stats.c.

166{
167 PgStat_EntryRef *entry_ref;
168 PgStat_StatInjEntry *pending;
169
170 /* leave if disabled */
172 return;
173
175 PGSTAT_INJ_IDX(name), NULL);
176
177 pending = (PgStat_StatInjEntry *) entry_ref->pending;
178
179 /* Update the injection point pending statistics */
180 pending->numcalls++;
181}
PgStat_Counter numcalls

References inj_stats_enabled, inj_stats_loaded, InvalidOid, name, PgStat_StatInjEntry::numcalls, PgStat_EntryRef::pending, PGSTAT_INJ_IDX, PGSTAT_KIND_INJECTION, and pgstat_prep_pending_entry().

Referenced by injection_error(), injection_notice(), and injection_wait().

◆ pgstat_report_inj_fixed()

void pgstat_report_inj_fixed ( uint32  numattach,
uint32  numdetach,
uint32  numrun,
uint32  numcached,
uint32  numloaded 
)

Definition at line 142 of file injection_stats_fixed.c.

147{
149
150 /* leave if disabled */
152 return;
153
155
156 LWLockAcquire(&stats_shmem->lock, LW_EXCLUSIVE);
157
159 stats_shmem->stats.numattach += numattach;
160 stats_shmem->stats.numdetach += numdetach;
161 stats_shmem->stats.numrun += numrun;
162 stats_shmem->stats.numcached += numcached;
163 stats_shmem->stats.numloaded += numloaded;
165
166 LWLockRelease(&stats_shmem->lock);
167}
bool LWLockAcquire(LWLock *lock, LWLockMode mode)
Definition: lwlock.c:1174
void LWLockRelease(LWLock *lock)
Definition: lwlock.c:1894
@ LW_EXCLUSIVE
Definition: lwlock.h:112
static void * pgstat_get_custom_shmem_data(PgStat_Kind kind)
static void pgstat_end_changecount_write(uint32 *cc)
static void pgstat_begin_changecount_write(uint32 *cc)

References PgStatShared_InjectionPointFixed::changecount, inj_fixed_loaded, inj_stats_enabled, PgStatShared_InjectionPointFixed::lock, LW_EXCLUSIVE, LWLockAcquire(), LWLockRelease(), PgStat_StatInjFixedEntry::numattach, PgStat_StatInjFixedEntry::numcached, PgStat_StatInjFixedEntry::numdetach, PgStat_StatInjFixedEntry::numloaded, PgStat_StatInjFixedEntry::numrun, pgstat_begin_changecount_write(), pgstat_end_changecount_write(), pgstat_get_custom_shmem_data(), PGSTAT_KIND_INJECTION_FIXED, and PgStatShared_InjectionPointFixed::stats.

Referenced by injection_points_attach(), injection_points_attach_func(), injection_points_cached(), injection_points_detach(), injection_points_load(), and injection_points_run().

Variable Documentation

◆ inj_stats_enabled