PostgreSQL Source Code git master
Loading...
Searching...
No Matches
checksum_block.inc.c
Go to the documentation of this file.
1/*-------------------------------------------------------------------------
2 *
3 * checksum_block.inc.c
4 * Core algorithm for page checksums, semi-private to checksum_impl.h
5 * and checksum.c.
6 *
7 * Portions Copyright (c) 1996-2026, PostgreSQL Global Development Group
8 * Portions Copyright (c) 1994, Regents of the University of California
9 *
10 * src/include/storage/checksum_block.inc.c
11 *
12 *-------------------------------------------------------------------------
13 */
14
15/* there is deliberately not an #ifndef CHECKSUM_BLOCK_INC_C here */
16
21
22/* ensure that the size is compatible with the algorithm */
24
25/* initialize partial checksums to their corresponding offsets */
27
28/* main checksum calculation */
29for (i = 0; i < (uint32) (BLCKSZ / (sizeof(uint32) * N_SUMS)); i++)
30 for (j = 0; j < N_SUMS; j++)
31 CHECKSUM_COMP(sums[j], page->data[i][j]);
32
33/* finally add in two rounds of zeroes for additional mixing */
34for (i = 0; i < 2; i++)
35 for (j = 0; j < N_SUMS; j++)
36 CHECKSUM_COMP(sums[j], 0);
37
38/* xor fold partial checksums together */
39for (i = 0; i < N_SUMS; i++)
40 result ^= sums[i];
41
42return result;
#define Assert(condition)
Definition c.h:943
uint32_t uint32
Definition c.h:624
uint32 sums[N_SUMS]
uint32 j
uint32 result
uint32 i
memcpy(sums, checksumBaseOffsets, sizeof(checksumBaseOffsets))
static const uint32 checksumBaseOffsets[N_SUMS]
#define CHECKSUM_COMP(checksum, value)
#define N_SUMS
static int fb(int x)