mirror of
https://github.com/xen-project/xen.git
synced 2026-10-29 02:30:03 +01:00
58 lines
1.0 KiB
Raku
58 lines
1.0 KiB
Raku
/* 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;
|
|
}
|
|
|