xref: /csrg-svn/sys/ufs/lfs/lfs_cksum.c (revision 51215)
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