3 * libjio - A library for Journaled I/O
4 * Alberto Bertogli (albertogli@telpin.com.ar)
7 * Based on RFC 1071, "Computing the Internet Checksum"
16 int checksum(int fd
, size_t len
, uint32_t *csum
)
20 map
= (uint8_t *) mmap(NULL
, len
, PROT_READ
, MAP_SHARED
, fd
, 0);
21 if (map
== MAP_FAILED
)
24 *csum
= checksum_map(map
, len
);
30 uint32_t checksum_map(uint8_t *map
, size_t count
)
35 sum
+= * (uint16_t *) map
++;
40 sum
+= * (uint8_t *) map
;
43 sum
= (sum
& 0xffff) + (sum
>> 16);