~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

Linux Cross Reference
Nginx/core/ngx_crc.h

Version: ~ [ nginx-0.8.20 ] ~ [ nginx-0.7.62 ] ~ [ nginx-0.6.39 ] ~

  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 #include <ngx_config.h>
 12 #include <ngx_core.h>
 13 
 14 
 15 /* 32-bit crc16 */
 16 
 17 static ngx_inline uint32_t
 18 ngx_crc(u_char *data, size_t len)
 19 {
 20     uint32_t  sum;
 21 
 22     for (sum = 0; len; len--) {
 23 
 24         /*
 25          * gcc 2.95.2 x86 and icc 7.1.006 compile
 26          * that operator into the single "rol" opcode,
 27          * msvc 6.0sp2 compiles it into four opcodes.
 28          */
 29         sum = sum >> 1 | sum << 31;
 30 
 31         sum += *data++;
 32     }
 33 
 34     return sum;
 35 }
 36 
 37 
 38 #endif /* _NGX_CRC_H_INCLUDED_ */
 39 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

This page was automatically generated by the LXR engine.
Visit the LXR main site for more information.