| 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 |  | 
| 31 | ha_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 |  |