crc16.h revision c4dcb1c10ae5e3d523823fe0a2c84d0841ca2ea1
19e24049bef26b6289cce9ac9b483c5cbb096e3aeTed Kremenek/* 29e24049bef26b6289cce9ac9b483c5cbb096e3aeTed Kremenek * crc16.h - CRC-16 routine 39e24049bef26b6289cce9ac9b483c5cbb096e3aeTed Kremenek * 49e24049bef26b6289cce9ac9b483c5cbb096e3aeTed Kremenek * Implements the standard CRC-16: 59e24049bef26b6289cce9ac9b483c5cbb096e3aeTed Kremenek * Width 16 69e24049bef26b6289cce9ac9b483c5cbb096e3aeTed Kremenek * Poly 0x8005 (x16 + x15 + x2 + 1) 79e24049bef26b6289cce9ac9b483c5cbb096e3aeTed Kremenek * Init 0 89e24049bef26b6289cce9ac9b483c5cbb096e3aeTed Kremenek * 99e24049bef26b6289cce9ac9b483c5cbb096e3aeTed Kremenek * Copyright (c) 2005 Ben Gardner <bgardner@wabtec.com> 109e24049bef26b6289cce9ac9b483c5cbb096e3aeTed Kremenek * 119e24049bef26b6289cce9ac9b483c5cbb096e3aeTed Kremenek * This source code is licensed under the GNU General Public License, 129e24049bef26b6289cce9ac9b483c5cbb096e3aeTed Kremenek * Version 2. See the file COPYING for more details. 139e24049bef26b6289cce9ac9b483c5cbb096e3aeTed Kremenek */ 149e24049bef26b6289cce9ac9b483c5cbb096e3aeTed Kremenek 159e24049bef26b6289cce9ac9b483c5cbb096e3aeTed Kremenek#ifndef __CRC16_H 169e24049bef26b6289cce9ac9b483c5cbb096e3aeTed Kremenek#define __CRC16_H 179e24049bef26b6289cce9ac9b483c5cbb096e3aeTed Kremenek 189e24049bef26b6289cce9ac9b483c5cbb096e3aeTed Kremenek#include <ext2fs/ext2_types.h> 19993f1c72913417be7c534ec7a634363cdfc84fa5Ted Kremenek 20993f1c72913417be7c534ec7a634363cdfc84fa5Ted Kremenek/* for an unknown reason, PPC treats __u16 as signed and keeps doing sign 21993f1c72913417be7c534ec7a634363cdfc84fa5Ted Kremenek * extension on the value. Instead, use only the low 16 bits of an 2222ab7a4d900ed53285fd0b6720e7b43af84724d8Zhongxing Xu * unsigned int for holding the CRC value to avoid this. 23a693d4fa7a6dc31b23837cf38cba7aa2af8f00f3Ted Kremenek */ 249e24049bef26b6289cce9ac9b483c5cbb096e3aeTed Kremenektypedef unsigned int crc16_t; 259e24049bef26b6289cce9ac9b483c5cbb096e3aeTed Kremenek 26dc0a25d9bff956cdbe54ea0bfc8fbbe3ceb4eb92Zhongxing Xuextern crc16_t ext2fs_crc16(crc16_t crc, const void *buffer, unsigned int len); 27dc0a25d9bff956cdbe54ea0bfc8fbbe3ceb4eb92Zhongxing Xu 289e24049bef26b6289cce9ac9b483c5cbb096e3aeTed Kremenek#endif /* __CRC16_H */ 299e24049bef26b6289cce9ac9b483c5cbb096e3aeTed Kremenek