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 5.2 (Berkeley) 10/02/91 8 */ 9 10 #ifdef LOGFS 11 #include <sys/types.h> 12 13 /* 14 * Simple, general purpose, fast checksum. Data must be short-aligned. 15 * Returns a u_long in case we ever want to do something more rigorous. 16 */ 17 u_long 18 cksum(str, len) 19 register void *str; 20 register size_t len; 21 { 22 register u_long sum; 23 24 len &= ~(sizeof(u_short) - 1); 25 for (sum = 0; len; len -= sizeof(u_short)) 26 sum ^= *((u_short *)str)++; 27 return (sum); 28 } 29 #endif /* LOGFS */ 30