1 /*- 2 * Copyright (c) 1991 The Regents of the University of California. 3 * All rights reserved. 4 * 5 * %sccs.include.redist.c% 6 * 7 * @(#)lfs_cksum.c 7.2 (Berkeley) 12/06/91 8 */ 9 10 #include <sys/param.h> 11 12 #include <ufs/lfs/lfs.h> 13 #include <ufs/lfs/lfs_extern.h> 14 15 /* 16 * Simple, general purpose, fast checksum. Data must be short-aligned. 17 * Returns a u_long in case we ever want to do something more rigorous. 18 * 19 * XXX 20 * Use the TCP/IP checksum instead. 21 */ 22 u_long 23 cksum(str, len) 24 register void *str; 25 register size_t len; 26 { 27 register u_long sum; 28 29 len &= ~(sizeof(u_short) - 1); 30 for (sum = 0; len; len -= sizeof(u_short)) 31 sum ^= *((u_short *)str)++; 32 return (sum); 33 } 34