1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- #ifndef CHECKSUM32_SOURCE
- #define CHECKSUM32_SOURCE
- #include <string.h>
- #include <stdint.h>
- #include <memory.h>
- #include "../tools/memory.h"
- uint32_t checksum32 (void const * vmemory, size_t extent, uint32_t checksum)
- {
- uint32_t temp;
- const uint8_t *memory = vmemory;
- while (extent >= sizeof (checksum))
- {
-
- memcpy (&temp, memory, sizeof (temp));
- checksum ^= temp;
- memory += sizeof (checksum);
- extent -= sizeof (checksum);
- }
- return (~checksum);
- }
- #if 0
- #include <stdio.h>
- int main (int argc, char const * argv [])
- {
- uint32_t data [100];
- read (0, data, sizeof (data));
- data [10] = 0;
- data [10] = checksum32 (data, sizeof (data), data [10]);
- printf ("data [10] = 0x%08x\n", data [10]);
- data [10] = checksum32 (data, sizeof (data), data [10]);
- printf ("data [10] = 0x%08x\n", data [10]);
- data [10] = checksum32 (data, sizeof (data), 0);
- printf ("data [10] = 0x%08x\n", data [10]);
- data [10] = checksum32 (data, sizeof (data), 0);
- printf ("data [10] = 0x%08x\n", data [10]);
- return (0);
- }
- #endif
- #endif
|