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

Quelle  test_dsm_registry.c

  Sprache: C
 

/*--------------------------------------------------------------------------
 *
 * test_dsm_registry.c
 *   Test the dynamic shared memory registry.
 *
 * Copyright (c) 2024-2025, PostgreSQL Global Development Group
 *
 * IDENTIFICATION
 *  src/test/modules/test_dsm_registry/test_dsm_registry.c
 *
 * -------------------------------------------------------------------------
 */

#include "postgres.h"

#include "fmgr.h"
#include "storage/dsm_registry.h"
#include "storage/lwlock.h"

PG_MODULE_MAGIC;

typedef struct TestDSMRegistryStruct
{
 int   val;
 LWLock  lck;
} TestDSMRegistryStruct;

static TestDSMRegistryStruct *tdr_state;

static void
tdr_init_shmem(void *ptr)
{
 TestDSMRegistryStruct *state = (TestDSMRegistryStruct *) ptr;

 LWLockInitialize(&state->lck, LWLockNewTrancheId());
 state->val = 0;
}

static void
tdr_attach_shmem(void)
{
 bool  found;

 tdr_state = GetNamedDSMSegment("test_dsm_registry",
           sizeof(TestDSMRegistryStruct),
           tdr_init_shmem,
           &found);
 LWLockRegisterTranche(tdr_state->lck.tranche, "test_dsm_registry");
}

PG_FUNCTION_INFO_V1(set_val_in_shmem);
Datum
set_val_in_shmem(PG_FUNCTION_ARGS)
{
 tdr_attach_shmem();

 LWLockAcquire(&tdr_state->lck, LW_EXCLUSIVE);
 tdr_state->val = PG_GETARG_INT32(0);
 LWLockRelease(&tdr_state->lck);

 PG_RETURN_VOID();
}

PG_FUNCTION_INFO_V1(get_val_in_shmem);
Datum
get_val_in_shmem(PG_FUNCTION_ARGS)
{
 int   ret;

 tdr_attach_shmem();

 LWLockAcquire(&tdr_state->lck, LW_SHARED);
 ret = tdr_state->val;
 LWLockRelease(&tdr_state->lck);

 PG_RETURN_INT32(ret);
}

Messung V0.5 in Prozent
C=90 H=78 G=83

¤ Dauer der Verarbeitung: 0.12 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.