📄 13.t
字号:
/* 13.t - uses testdir/rwfile- Submit multiple writes larger than aio-max-size (deadlocks on older aio code)*/#include "aio_setup.h"#include <sys/time.h>#include <sys/resource.h>#include <unistd.h>int test_main(void){#define SIZE (1024 * 1024)#define IOS 8 struct iocb iocbs[IOS]; struct iocb *iocb_list[IOS]; char *bufs[IOS]; int rwfd; int status = 0, res; int i; rwfd = open("testdir/rwfile", O_RDWR|O_CREAT|O_TRUNC, 0600); assert(rwfd != -1); res = ftruncate(rwfd, 0); assert(res == 0); for (i=0; i<IOS; i++) { bufs[i] = malloc(SIZE); assert(bufs[i] != NULL); memset(bufs[i], 0, SIZE); io_prep_pwrite(&iocbs[i], rwfd, bufs[i], SIZE, i * SIZE); iocb_list[i] = &iocbs[i]; } status |= attempt_io_submit(io_ctx, IOS, iocb_list, IOS); for (i=0; i<IOS; i++) { struct timespec ts = { tv_sec: 30, tv_nsec: 0 }; struct io_event event; struct iocb *iocb; res = io_getevents(io_ctx, 0, 1, &event, &ts); if (res != 1) { status |= 1; printf("io_getevents failed [%d] with res=%d [%s]\n", i, res, (res < 0) ? strerror(-res) : "okay"); break; } if (event.res != SIZE) status |= 1; iocb = (void *)event.obj; printf("event[%d]: write[%d] %s, returned: %ld [%s]\n", i, (int)(iocb - &iocbs[0]), (event.res != SIZE) ? "failed" : "okay", (long)event.res, (event.res < 0) ? strerror(-event.res) : "okay" ); } res = ftruncate(rwfd, 0); assert(res == 0); res = close(rwfd); assert(res == 0); return status;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -