LCOV - code coverage report
Current view: top level - src/backend/storage/page - checksum.c (source / functions) Coverage Total Hit
Test: PostgreSQL 19devel Lines: 85.7 % 7 6
Test Date: 2026-04-07 14:16:30 Functions: 66.7 % 3 2
Legend: Lines:     hit not hit

            Line data    Source code
       1              : /*-------------------------------------------------------------------------
       2              :  *
       3              :  * checksum.c
       4              :  *    Checksum implementation for data pages.
       5              :  *
       6              :  * Portions Copyright (c) 1996-2026, PostgreSQL Global Development Group
       7              :  * Portions Copyright (c) 1994, Regents of the University of California
       8              :  *
       9              :  * IDENTIFICATION
      10              :  *    src/backend/storage/page/checksum.c
      11              :  *
      12              :  *-------------------------------------------------------------------------
      13              :  */
      14              : #include "postgres.h"
      15              : 
      16              : #include "port/pg_cpu.h"
      17              : #include "storage/checksum.h"
      18              : /*
      19              :  * The actual code is in storage/checksum_impl.h.  This is done so that
      20              :  * external programs can incorporate the checksum code by #include'ing
      21              :  * that file from the exported Postgres headers.  (Compare our legacy
      22              :  * CRC code in pg_crc.h.)
      23              :  * The PG_CHECKSUM_INTERNAL symbol allows core to use hardware-specific
      24              :  * coding without affecting external programs.
      25              :  */
      26              : #define PG_CHECKSUM_INTERNAL
      27              : #include "storage/checksum_impl.h"    /* IWYU pragma: keep */
      28              : 
      29              : 
      30              : static uint32
      31            0 : pg_checksum_block_fallback(const PGChecksummablePage *page)
      32              : {
      33              : #include "storage/checksum_block_internal.h"
      34              : }
      35              : 
      36              : /*
      37              :  * AVX2-optimized block checksum algorithm.
      38              :  */
      39              : #ifdef USE_AVX2_WITH_RUNTIME_CHECK
      40              : pg_attribute_target("avx2")
      41              : static uint32
      42      2628547 : pg_checksum_block_avx2(const PGChecksummablePage *page)
      43              : {
      44              : #include "storage/checksum_block_internal.h"
      45              : }
      46              : #endif                          /* USE_AVX2_WITH_RUNTIME_CHECK */
      47              : 
      48              : /*
      49              :  * Choose the best available checksum implementation.
      50              :  */
      51              : static uint32
      52        11127 : pg_checksum_choose(const PGChecksummablePage *page)
      53              : {
      54        11127 :     pg_checksum_block = pg_checksum_block_fallback;
      55              : 
      56              : #ifdef USE_AVX2_WITH_RUNTIME_CHECK
      57        11127 :     if (x86_feature_available(PG_AVX2))
      58        11127 :         pg_checksum_block = pg_checksum_block_avx2;
      59              : #endif
      60              : 
      61        11127 :     return pg_checksum_block(page);
      62              : }
      63              : 
      64              : static uint32 (*pg_checksum_block) (const PGChecksummablePage *page) = pg_checksum_choose;
        

Generated by: LCOV version 2.0-1