LFS version 2; no changes required
[unix-history] / usr / src / sys / ufs / lfs / lfs_cksum.c
CommitLineData
e4c3f0d8
KB
1/*-
2 * Copyright (c) 1991 The Regents of the University of California.
3 * All rights reserved.
4 *
5 * %sccs.include.redist.c%
6 *
de24a38d 7 * @(#)lfs_cksum.c 7.2 (Berkeley) %G%
e4c3f0d8
KB
8 */
9
f6437c6d
KB
10#include <sys/param.h>
11
7688a3ec
KB
12#include <ufs/lfs/lfs.h>
13#include <ufs/lfs/lfs_extern.h>
e4c3f0d8
KB
14
15/*
275ca4f0
KB
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.
f6437c6d
KB
18 *
19 * XXX
20 * Use the TCP/IP checksum instead.
e4c3f0d8
KB
21 */
22u_long
23cksum(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}