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.4 (Berkeley) 05/14/92 8 */ 9 10 #include <sys/param.h> 11 #include <sys/vnode.h> 12 13 #include <ufs/lfs/lfs.h> 14 #include <ufs/lfs/lfs_extern.h> 15 16 /* 17 * Simple, general purpose, fast checksum. Data must be short-aligned. 18 * Returns a u_long in case we ever want to do something more rigorous. 19 * 20 * XXX 21 * Use the TCP/IP checksum instead. 22 */ 23 u_long 24 cksum(str, len) 25 register void *str; 26 register size_t len; 27 { 28 register u_long sum; 29 30 len &= ~(sizeof(u_short) - 1); 31 for (sum = 0; len; len -= sizeof(u_short)) { 32 sum ^= *(u_short *)str; 33 ++(u_short *)str; 34 } 35 return (sum); 36 } 37