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

Linux Cross Reference
Nginx/core/ngx_crc32.h

Version: ~ [ nginx-0.6.26 ] ~ [ nginx-0.5.35 ] ~ [ nginx-0.5.20 ] ~ [ nginx-0.5.19 ] ~

  1 
  2 /*
  3  * Copyright (C) Igor Sysoev
  4  */
  5 
  6 
  7 #ifndef _NGX_CRC32_H_INCLUDED_
  8 #define _NGX_CRC32_H_INCLUDED_
  9 
 10 
 11 #include <ngx_config.h>
 12 #include <ngx_core.h>
 13 
 14 
 15 extern uint32_t  *ngx_crc32_table_short;
 16 extern uint32_t   ngx_crc32_table256[];
 17 
 18 
 19 static ngx_inline uint32_t
 20 ngx_crc32_short(u_char *p, size_t len)
 21 {
 22     u_char    c;
 23     uint32_t  crc;
 24 
 25     crc = 0xffffffff;
 26 
 27     while (len--) {
 28         c = *p++;
 29         crc = ngx_crc32_table_short[(crc ^ (c & 0xf)) & 0xf] ^ (crc >> 4);
 30         crc = ngx_crc32_table_short[(crc ^ (c >> 4)) & 0xf] ^ (crc >> 4);
 31     }
 32 
 33     return crc ^ 0xffffffff;
 34 }
 35 
 36 
 37 static ngx_inline uint32_t
 38 ngx_crc32_long(u_char *p, size_t len)
 39 {
 40     uint32_t  crc;
 41 
 42     crc = 0xffffffff;
 43 
 44     while (len--) {
 45         crc = ngx_crc32_table256[(crc ^ *p++) & 0xff] ^ (crc >> 8);
 46     }
 47 
 48     return crc ^ 0xffffffff;
 49 }
 50 
 51 
 52 #define ngx_crc32_init(crc)                                                   \
 53     crc = 0xffffffff
 54 
 55 
 56 static ngx_inline void
 57 ngx_crc32_update(uint32_t *crc, u_char *p, size_t len)
 58 {
 59     uint32_t  c;
 60 
 61     c = *crc;
 62 
 63     while (len--) {
 64         c = ngx_crc32_table256[(c ^ *p++) & 0xff] ^ (c >> 8);
 65     }
 66 
 67     *crc = c;
 68 }
 69 
 70 
 71 #define ngx_crc32_final(crc)                                                  \
 72     crc ^= 0xffffffff
 73 
 74 
 75 ngx_int_t ngx_crc32_table_init(void);
 76 
 77 
 78 #endif /* _NGX_CRC32_H_INCLUDED_ */
 79 

~ [ 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.