/* * __wt_global_once -- * Global initialization, run once. */ static void __wt_global_once(void) { WT_DECL_RET; if ((ret = __system_is_little_endian()) != 0) { __wt_pthread_once_failed = ret; return; } if ((ret = __wt_spin_init(NULL, &__wt_process.spinlock, "global")) != 0) { __wt_pthread_once_failed = ret; return; } __wt_cksum_init(); TAILQ_INIT(&__wt_process.connqh); #ifdef HAVE_DIAGNOSTIC /* Verify the pre-computed metadata hash. */ WT_ASSERT(NULL, WT_METAFILE_NAME_HASH == __wt_hash_city64(WT_METAFILE_URI, strlen(WT_METAFILE_URI))); /* Load debugging code the compiler might optimize out. */ (void)__wt_breakpoint(); #endif }
/* * __wt_global_once -- * Global initialization, run once. */ static void __wt_global_once(void) { WT_DECL_RET; if ((ret = __system_is_little_endian()) != 0) { __wt_pthread_once_failed = ret; return; } if ((ret = __wt_spin_init(NULL, &__wt_process.spinlock, "global")) != 0) { __wt_pthread_once_failed = ret; return; } __wt_cksum_init(); TAILQ_INIT(&__wt_process.connqh); #ifdef HAVE_DIAGNOSTIC /* Load debugging code the compiler might optimize out. */ (void)__wt_breakpoint(); #endif }
int main(void) { WT_RAND_STATE rnd; size_t len; uint32_t hw, sw; u_int i, j; uint8_t *data; /* Allocate aligned memory for the data. */ data = dcalloc(DATASIZE, sizeof(uint8_t)); /* Initialize the RNG. */ testutil_check(__wt_random_init_seed(NULL, &rnd)); /* Initialize the WiredTiger library checksum functions. */ __wt_cksum_init(); /* * Some simple known checksums. */ len = 1; hw = __wt_cksum(data, len); check(hw, (uint32_t)0x527d5351, len, "nul x1: hardware"); sw = cksum_sw(data, len); check(sw, (uint32_t)0x527d5351, len, "nul x1: software"); len = 2; hw = __wt_cksum(data, len); check(hw, (uint32_t)0xf16177d2, len, "nul x2: hardware"); sw = cksum_sw(data, len); check(sw, (uint32_t)0xf16177d2, len, "nul x2: software"); len = 3; hw = __wt_cksum(data, len); check(hw, (uint32_t)0x6064a37a, len, "nul x3: hardware"); sw = cksum_sw(data, len); check(sw, (uint32_t)0x6064a37a, len, "nul x3: software"); len = 4; hw = __wt_cksum(data, len); check(hw, (uint32_t)0x48674bc7, len, "nul x4: hardware"); sw = cksum_sw(data, len); check(sw, (uint32_t)0x48674bc7, len, "nul x4: software"); len = strlen("123456789"); memcpy(data, "123456789", len); hw = __wt_cksum(data, len); check(hw, (uint32_t)0xe3069283, len, "known string #1: hardware"); sw = cksum_sw(data, len); check(sw, (uint32_t)0xe3069283, len, "known string #1: software"); len = strlen("The quick brown fox jumps over the lazy dog"); memcpy(data, "The quick brown fox jumps over the lazy dog", len); hw = __wt_cksum(data, len); check(hw, (uint32_t)0x22620404, len, "known string #2: hardware"); sw = cksum_sw(data, len); check(sw, (uint32_t)0x22620404, len, "known string #2: software"); /* * Checksums of power-of-two data chunks. */ for (i = 0, len = 512; i < 1000; ++i) { for (j = 0; j < len; ++j) data[j] = __wt_random(&rnd) & 0xff; hw = __wt_cksum(data, len); sw = cksum_sw(data, len); check(hw, sw, len, "random power-of-two"); len *= 2; if (len > DATASIZE) len = 512; } /* * Checksums of random data chunks. */ for (i = 0; i < 1000; ++i) { len = __wt_random(&rnd) % DATASIZE; for (j = 0; j < len; ++j) data[j] = __wt_random(&rnd) & 0xff; hw = __wt_cksum(data, len); sw = cksum_sw(data, len); check(hw, sw, len, "random"); } free(data); return (EXIT_SUCCESS); }