Annotation of embedaddon/nginx/src/core/ngx_crc.h, revision 1.1.1.1

1.1       misho       1: 
                      2: /*
                      3:  * Copyright (C) Igor Sysoev
                      4:  * Copyright (C) Nginx, Inc.
                      5:  */
                      6: 
                      7: 
                      8: #ifndef _NGX_CRC_H_INCLUDED_
                      9: #define _NGX_CRC_H_INCLUDED_
                     10: 
                     11: 
                     12: #include <ngx_config.h>
                     13: #include <ngx_core.h>
                     14: 
                     15: 
                     16: /* 32-bit crc16 */
                     17: 
                     18: static ngx_inline uint32_t
                     19: ngx_crc(u_char *data, size_t len)
                     20: {
                     21:     uint32_t  sum;
                     22: 
                     23:     for (sum = 0; len; len--) {
                     24: 
                     25:         /*
                     26:          * gcc 2.95.2 x86 and icc 7.1.006 compile
                     27:          * that operator into the single "rol" opcode,
                     28:          * msvc 6.0sp2 compiles it into four opcodes.
                     29:          */
                     30:         sum = sum >> 1 | sum << 31;
                     31: 
                     32:         sum += *data++;
                     33:     }
                     34: 
                     35:     return sum;
                     36: }
                     37: 
                     38: 
                     39: #endif /* _NGX_CRC_H_INCLUDED_ */

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>