#include #include #include #define STARTOFFSET 64 #define MAXOFFSET 128 #ifdef VERIFY #define SIZE 1024 #define MAXSETSIZE 520 #define SIZEINC 1 #define OFFSETINC 1 #else #define SIZE 102400 #define MAXSETSIZE 51200 #define SIZEINC 1 #define OFFSETINC 1 #endif /* MEMSETVAL must be a value that VAL will never return. */ #define VAL(N) ((N % 6) + 13) #define MEMSETVAL 0 signed char dst[SIZE]; extern void *MEMSET_NAME(void *, int, size_t); test(int offset, int size) { int i; char *x; #ifdef VERIFY for (i = 0; i < SIZE; i++) { dst[i] = VAL(i); } #endif MEMSET_NAME(&dst[offset], MEMSETVAL, size); #ifdef VERIFY /* printf("Test memset of dst[%d] (0x%p), size = %d\n", offset, &dst[offset], size); */ for (i = 0; i < offset; i++) { if (dst[i] != VAL(i)) printf("FAIL, dst[%d] got changed before it should be (%d instead of %d)\n", i, VAL(i), dst[i]); } for (i = offset; i < offset+size; i++) { if (dst[i] != MEMSETVAL) printf("FAIL, dst[%d] was not changed when it should be (%d instead of %d)\n", i, dst[i], MEMSETVAL); } for (i = offset+size; i < SIZE; i++) { if (dst[i] != VAL(i)) printf("FAIL, dst[%d] got changed after it should be (%d instead of %d)\n", i, dst[i], VAL(i)); } #endif } main() { int i, j; for (i = STARTOFFSET; i < MAXOFFSET; i = i + OFFSETINC) { for (j = 1; j < MAXSETSIZE; j = j + SIZEINC) { test(i, j); } } exit(0); }