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

Quelle  fsm_internals.h

  Sprache: C
 

/*-------------------------------------------------------------------------
 *
 * fsm_internals.h
 *   internal functions for free space map
 *
 *
 * Portions Copyright (c) 1996-2025, PostgreSQL Global Development Group
 * Portions Copyright (c) 1994, Regents of the University of California
 *
 * src/include/storage/fsm_internals.h
 *
 *-------------------------------------------------------------------------
 */

#ifndef FSM_INTERNALS_H
#define FSM_INTERNALS_H

#include "storage/buf.h"
#include "storage/bufpage.h"

/*
 * Structure of a FSM page. See src/backend/storage/freespace/README for
 * details.
 */

typedef struct
{
 /*
  * fsm_search_avail() tries to spread the load of multiple backends by
  * returning different pages to different backends in a round-robin
  * fashion. fp_next_slot points to the next slot to be returned (assuming
  * there's enough space on it for the request). It's defined as an int,
  * because it's updated without an exclusive lock. uint16 would be more
  * appropriate, but int is more likely to be atomically
  * fetchable/storable.
 */

 int   fp_next_slot;

 /*
  * fp_nodes contains the binary tree, stored in array. The first
  * NonLeafNodesPerPage elements are upper nodes, and the following
  * LeafNodesPerPage elements are leaf nodes. Unused nodes are zero.
 */

 uint8  fp_nodes[FLEXIBLE_ARRAY_MEMBER];
} FSMPageData;

typedef FSMPageData *FSMPage;

/*
 * Number of non-leaf and leaf nodes, and nodes in total, on an FSM page.
 * These definitions are internal to fsmpage.c.
 */

#define NodesPerPage (BLCKSZ - MAXALIGN(SizeOfPageHeaderData) - \
       offsetof(FSMPageData, fp_nodes))

#define NonLeafNodesPerPage (BLCKSZ / 2 - 1)
#define LeafNodesPerPage (NodesPerPage - NonLeafNodesPerPage)

/*
 * Number of FSM "slots" on a FSM page. This is what should be used
 * outside fsmpage.c.
 */

#define SlotsPerFSMPage LeafNodesPerPage

/* Prototypes for functions in fsmpage.c */
extern int fsm_search_avail(Buffer buf, uint8 minvalue, bool advancenext,
        bool exclusive_lock_held);
extern uint8 fsm_get_avail(Page page, int slot);
extern uint8 fsm_get_max_avail(Page page);
extern bool fsm_set_avail(Page page, int slot, uint8 value);
extern bool fsm_truncate_avail(Page page, int nslots);
extern bool fsm_rebuild_page(Page page);

#endif       /* FSM_INTERNALS_H */

Messung V0.5 in Prozent
C=88 H=99 G=93

¤ 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.