1/* Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
2
3 This program is free software; you can redistribute it and/or modify
4 it under the terms of the GNU General Public License as published by
5 the Free Software Foundation; version 2 of the License.
6
7 This program is distributed in the hope that it will be useful,
8 but WITHOUT ANY WARRANTY; without even the implied warranty of
9 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10 GNU General Public License for more details.
11
12 You should have received a copy of the GNU General Public License
13 along with this program; if not, write to the Free Software
14 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
15
16
17#include <my_global.h>
18#include <my_sys.h>
19#include <zlib.h>
20
21/*
22 Calculate a long checksum for a memoryblock.
23
24 SYNOPSIS
25 my_checksum()
26 crc start value for crc
27 pos pointer to memory block
28 length length of the block
29*/
30
31ha_checksum my_checksum(ha_checksum crc, const uchar *pos, size_t length)
32{
33#ifdef HAVE_CRC32_VPMSUM
34 extern unsigned int crc32ieee_vpmsum(unsigned int crc, const unsigned char *p,
35 unsigned long len);
36 crc= (ha_checksum) crc32ieee_vpmsum((uint) crc, pos, (uint) length);
37#else
38 crc= (ha_checksum) crc32((uint)crc, pos, (uint) length);
39#endif
40 DBUG_PRINT("info", ("crc: %lu", (ulong) crc));
41 return crc;
42}
43