u_hash.c

Go to the documentation of this file.
00001 /**************************************************************************
00002  *
00003  * Copyright 2008 VMware, Inc.
00004  * All Rights Reserved.
00005  *
00006  * Permission is hereby granted, free of charge, to any person obtaining a
00007  * copy of this software and associated documentation files (the
00008  * "Software"), to deal in the Software without restriction, including
00009  * without limitation the rights to use, copy, modify, merge, publish,
00010  * distribute, sub license, and/or sell copies of the Software, and to
00011  * permit persons to whom the Software is furnished to do so, subject to
00012  * the following conditions:
00013  *
00014  * The above copyright notice and this permission notice (including the
00015  * next paragraph) shall be included in all copies or substantial portions
00016  * of the Software.
00017  *
00018  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
00019  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
00020  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
00021  * IN NO EVENT SHALL VMWARE AND/OR ITS SUPPLIERS BE LIABLE FOR
00022  * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
00023  * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
00024  * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
00025  *
00026  **************************************************************************/
00027 
00036 #include "u_hash.h"
00037 
00038 
00039 static const uint32_t 
00040 util_crc32_table[256] = {
00041    0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 
00042    0x076dc419, 0x706af48f, 0xe963a535, 0x9e6495a3, 
00043    0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988, 
00044    0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91, 
00045    0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de, 
00046    0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7, 
00047    0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 
00048    0x14015c4f, 0x63066cd9, 0xfa0f3d63, 0x8d080df5, 
00049    0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172, 
00050    0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b, 
00051    0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940, 
00052    0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59, 
00053    0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116, 
00054    0x21b4f4b5, 0x56b3c423, 0xcfba9599, 0xb8bda50f, 
00055    0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924, 
00056    0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 
00057    0x76dc4190, 0x01db7106, 0x98d220bc, 0xefd5102a, 
00058    0x71b18589, 0x06b6b51f, 0x9fbfe4a5, 0xe8b8d433, 
00059    0x7807c9a2, 0x0f00f934, 0x9609a88e, 0xe10e9818, 
00060    0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01, 
00061    0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, 
00062    0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 
00063    0x65b0d9c6, 0x12b7e950, 0x8bbeb8ea, 0xfcb9887c, 
00064    0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65, 
00065    0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, 
00066    0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb, 
00067    0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0, 
00068    0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9, 
00069    0x5005713c, 0x270241aa, 0xbe0b1010, 0xc90c2086, 
00070    0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f, 
00071    0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 
00072    0x59b33d17, 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad, 
00073    0xedb88320, 0x9abfb3b6, 0x03b6e20c, 0x74b1d29a, 
00074    0xead54739, 0x9dd277af, 0x04db2615, 0x73dc1683, 
00075    0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8, 
00076    0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1, 
00077    0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 
00078    0xf762575d, 0x806567cb, 0x196c3671, 0x6e6b06e7, 
00079    0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc, 
00080    0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5, 
00081    0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, 
00082    0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b, 
00083    0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60, 
00084    0xdf60efc3, 0xa867df55, 0x316e8eef, 0x4669be79, 
00085    0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236, 
00086    0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 
00087    0xc5ba3bbe, 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, 
00088    0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d, 
00089    0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x026d930a, 
00090    0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713, 
00091    0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, 
00092    0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 
00093    0x86d3d2d4, 0xf1d4e242, 0x68ddb3f8, 0x1fda836e, 
00094    0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777, 
00095    0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, 
00096    0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45, 
00097    0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2, 
00098    0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db, 
00099    0xaed16a4a, 0xd9d65adc, 0x40df0b66, 0x37d83bf0, 
00100    0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9, 
00101    0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 
00102    0xbad03605, 0xcdd70693, 0x54de5729, 0x23d967bf, 
00103    0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94, 
00104    0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d
00105 };
00106 
00107 
00111 uint32_t
00112 util_hash_crc32(const void *data, size_t size)
00113 {
00114    uint8_t *p = (uint8_t *)data;
00115    uint32_t crc = 0xffffffff;
00116  
00117    while (size--)
00118       crc = util_crc32_table[(crc ^ *p++) & 0xff] ^ (crc >> 8);
00119    
00120    return crc;
00121 }

Generated on Tue Sep 29 06:25:15 2009 for Gallium3D by  doxygen 1.5.4