X-Git-Url: https://git.kernel.dk/?p=fio.git;a=blobdiff_plain;f=crc%2Fcrc16.h;fp=crc%2Fcrc16.h;h=841378d4c587e05ee39993116bcbb0eaa100bab6;hp=0000000000000000000000000000000000000000;hb=eef6eea1b935a67f1ae26b38e06a69d4410a12aa;hpb=546dfd9ff99eec4af5d1c6c2ca702b7cf9656334 diff --git a/crc/crc16.h b/crc/crc16.h new file mode 100644 index 00000000..841378d4 --- /dev/null +++ b/crc/crc16.h @@ -0,0 +1,28 @@ +/* + * crc16.h - CRC-16 routine + * + * Implements the standard CRC-16: + * Width 16 + * Poly 0x8005 (x^16 + x^15 + x^2 + 1) + * Init 0 + * + * Copyright (c) 2005 Ben Gardner + * + * This source code is licensed under the GNU General Public License, + * Version 2. See the file COPYING for more details. + */ + +#ifndef __CRC16_H +#define __CRC16_H + +extern unsigned short const crc16_table[256]; + +extern unsigned short crc16(const unsigned char *buffer, unsigned int len); + +static inline unsigned short crc16_byte(unsigned short crc, + const unsigned char data) +{ + return (crc >> 8) ^ crc16_table[(crc ^ data) & 0xff]; +} + +#endif /* __CRC16_H */