comparison src/core/ngx_crc.h @ 0:f0b350454894 NGINX_0_1_0

nginx 0.1.0 *) The first public version.
author Igor Sysoev <http://sysoev.ru>
date Mon, 04 Oct 2004 00:00:00 +0400
parents
children 74b1868dd3cd
comparison
equal deleted inserted replaced
-1:000000000000 0:f0b350454894
1
2 /*
3 * Copyright (C) Igor Sysoev
4 */
5
6
7 #ifndef _NGX_CRC_H_INCLUDED_
8 #define _NGX_CRC_H_INCLUDED_
9
10
11 /* 32-bit crc16 */
12
13 ngx_inline static uint32_t ngx_crc(char *data, size_t len)
14 {
15 uint32_t sum;
16
17 for (sum = 0; len; len--) {
18
19 /*
20 * gcc 2.95.2 x86 and icc 7.1.006 compile that operator
21 * into the single "rol" opcode.
22 * msvc 6.0sp2 compiles it into four opcodes.
23 */
24 sum = sum >> 1 | sum << 31;
25
26 sum += *data++;
27 }
28
29 return sum;
30 }
31
32
33 #endif /* _NGX_CRC_H_INCLUDED_ */