blob: cea4b01c966356ca05925665ca96489e636a3e2b [file] [log] [blame]
/* 6.t
- huge reads (pinned pages) (6.t)
- huge writes (6.t)
*/
#include "aio_setup.h"
#include <sys/mman.h>
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;
}