/* 6.t - huge reads (pinned pages) (6.t) - huge writes (6.t) */ #include "aio_setup.h" #include long getmemsize(void) { FILE *f = fopen("/proc/meminfo", "r"); long size; int gotit = 0; char str[256]; assert(f != NULL); while (NULL != fgets(str, 255, f)) { str[255] = 0; if (0 == memcmp(str, "MemTotal:", 9)) { if (1 == sscanf(str + 9, "%ld", &size)) { gotit = 1; break; } } } fclose(f); assert(gotit != 0); return size; } int test_main(void) { char *buf; int rwfd; int status = 0, res; long size; size = getmemsize(); printf("size = %ld\n", size); assert(size >= (16 * 1024)); if (size > (768 * 1024)) size = 768 * 1024; size *= 1024; rwfd = open("testdir/rwfile", O_RDWR); assert(rwfd != -1); res = ftruncate(rwfd, 0); assert(res == 0); buf = malloc(size); assert(buf != NULL); //memset(buf, 0, size); status |= attempt_rw(rwfd, buf, size, 0, WRITE, size); status |= attempt_rw(rwfd, buf, size, 0, READ, size); //res = ftruncate(rwfd, 0); assert(res == 0); return status; }