blob: 41c34fc559cec11e7f3fdf99c5195599c12a0a96 [file] [log] [blame]
plars99a68d02003-05-21 17:38:00 +00001/*
2 *
3 * Copyright (c) International Business Machines Corp., 2003
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
13 * the GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with this program; if not, write to the Free Software
Wanlong Gao4548c6c2012-10-19 18:03:36 +080017 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
plars99a68d02003-05-21 17:38:00 +000018 */
19
20/*
21 * NAME
22 * aiotest1.c
23 *
24 * DESCRIPTION
25 * Perform aio read, write operations for given number of requests.
26 * Submit i/o for each request individually.
27 * Repeat the test for each of the following cases and measure time.
28 * Testblock1: Write one request at a time.
29 * Testblock2: Read one request at a time.
30 * Testblock3: Prepare, Write one request at a time.
31 * Testblock4: Prepare, Read one request at a time.
32 * Testblock5: Prepare, Write/Read one request at a time.
33 * Testblock6: Prepare, Write/Read/Verify one request at a time.
34 *
plars99a68d02003-05-21 17:38:00 +000035 * Author
36 * 08/24/2002 Narasimha Sharoff nsharoff@us.ibm.com
37*/
38
39/*
40 * History
plars5be62592003-05-21 17:40:32 +000041 * 04/18/2003 nsharoff@us.ibm.com
42 * Updated
43 * 05/21/2003 Paul Larson plars@linuxtestproject.org
44 * Rewrote the test under LTP, using LTP test harness
45 * and other minor improvements and fixes
plars99a68d02003-05-21 17:38:00 +000046*/
47
48#define _XOPEN_SOURCE 600
49
subrata_modakdd876292009-01-28 06:43:09 +000050#include "test.h"
subrata_modak030e7532009-06-09 17:54:34 +000051#include "config.h"
subrata_modakdd876292009-01-28 06:43:09 +000052
53char *TCID = "aio01";
Wanlong Gao354ebb42012-12-07 10:10:04 +080054int TST_TOTAL = 6;
subrata_modakdd876292009-01-28 06:43:09 +000055
56#ifdef HAVE_LIBAIO_H
57
plars99a68d02003-05-21 17:38:00 +000058#include <stdio.h>
59#include <stdlib.h>
60#include <unistd.h>
61#include <fcntl.h>
62#include <time.h>
63#include <errno.h>
64#include <libaio.h>
65#include <sys/types.h>
66#include <sys/stat.h>
67#include <sys/time.h>
68#include <sys/resource.h>
plars99a68d02003-05-21 17:38:00 +000069
subrata_modakd1e19732009-08-30 17:04:40 +000070static void help(void);
71static void setup(void);
72static void cleanup(void);
plars99a68d02003-05-21 17:38:00 +000073
74#define mapsize (1 << 14)
75
plars99a68d02003-05-21 17:38:00 +000076int fd;
77char *maddr;
78
Wanlong Gao354ebb42012-12-07 10:10:04 +080079size_t bufsize; /* Size of I/O, 8k default */
80io_context_t io_ctx; /* I/O Context */
81struct iocb **iocbs; /* I/O Control Blocks */
82char *srcbuf, *dstbuf;
83char fname[128];
84char tbuf[80];
85int pos, nr;
86struct stat s;
plars99a68d02003-05-21 17:38:00 +000087
88struct test_case_t {
89 off_t newsize;
90 char *desc;
91} TC[] = {
Wanlong Gao354ebb42012-12-07 10:10:04 +080092 {
93 mapsize - 8192, "ftruncate mmaped file to a smaller size"}, {
94 mapsize + 1024, "ftruncate mmaped file to a larger size"}, {
950, "ftruncate mmaped file to 0 size"},};
plars99a68d02003-05-21 17:38:00 +000096
subrata_modakd1e19732009-08-30 17:04:40 +000097int main(int argc, char **argv)
98{
plars99a68d02003-05-21 17:38:00 +000099 int i, j, sec, usec;
Wanlong Gao354ebb42012-12-07 10:10:04 +0800100 int failflag = 0;
101 int bflag = 0, nflag = 0, Fflag = 0;
plars99a68d02003-05-21 17:38:00 +0000102 char *optb, *optn, *optF;
Cyril Hrubis0b9589f2014-05-27 17:40:33 +0200103 const char *msg;
plars99a68d02003-05-21 17:38:00 +0000104 struct io_event event;
105 static struct timespec ts;
106 struct timeval stv, etv;
107
108 option_t options[] = {
Wanlong Gao354ebb42012-12-07 10:10:04 +0800109 {"b:", &bflag, &optb},
110 {"n:", &nflag, &optn},
111 {"F:", &Fflag, &optF},
112 {NULL, NULL, NULL}
plars99a68d02003-05-21 17:38:00 +0000113 };
114
115 msg = parse_opts(argc, argv, options, &help);
Cyril Hrubiscf0d6262014-09-23 14:03:31 +0200116 if (msg != NULL) {
plars99a68d02003-05-21 17:38:00 +0000117 tst_brkm(TBROK, NULL, "OPTION PARSING ERROR - %s", msg);
118 tst_exit();
119 }
120
Wanlong Gao354ebb42012-12-07 10:10:04 +0800121 bufsize = (bflag ? atoi(optb) : 8192);
122 nr = (nflag ? atoi(optn) : 10);
plars99a68d02003-05-21 17:38:00 +0000123 if (Fflag) {
124 sprintf(fname, optF);
125 } else {
126 sprintf(fname, "aiofile");
127 }
128
129 setup();
130
131/* TEST 1 */
132 pos = 0;
133 gettimeofday(&stv, NULL);
134 io_prep_pwrite(iocbs[0], fd, srcbuf, bufsize, pos);
Wanlong Gao354ebb42012-12-07 10:10:04 +0800135 for (i = 0; i < nr; i++) {
plars99a68d02003-05-21 17:38:00 +0000136 ts.tv_sec = 30;
137 ts.tv_nsec = 0;
subrata_modak967caaf2008-07-12 21:31:07 +0000138 do {
139 TEST(io_submit(io_ctx, 1, iocbs));
140 } while (TEST_RETURN == -EAGAIN);
141 if (TEST_RETURN < 0) {
Jan Stancek17ea0a92013-04-17 11:05:33 +0200142 tst_resm(TFAIL, "Test 1: io_submit failed - retval=%ld"
143 ", errno=%d", TEST_RETURN, TEST_ERRNO);
Wanlong Gao354ebb42012-12-07 10:10:04 +0800144 failflag = 1;
plars99a68d02003-05-21 17:38:00 +0000145 continue;
146 }
Wanlong Gao354ebb42012-12-07 10:10:04 +0800147 while (io_getevents(io_ctx, 1, 1, &event, &ts) != 1) ;
plars99a68d02003-05-21 17:38:00 +0000148 gettimeofday(&etv, NULL);
149 }
150 if (!failflag) {
151 sec = etv.tv_sec - stv.tv_sec;
152 usec = etv.tv_usec - stv.tv_usec;
153 if (usec < 0) {
154 usec += 1000000;
155 sec--;
156 }
157 tst_resm(TPASS, "Test 1: %d writes in %3d.%06d sec",
Wanlong Gao354ebb42012-12-07 10:10:04 +0800158 nr, sec, usec);
plars99a68d02003-05-21 17:38:00 +0000159 }
160
161/* TEST 2 */
162 pos = 0;
Wanlong Gao354ebb42012-12-07 10:10:04 +0800163 failflag = 0;
plars99a68d02003-05-21 17:38:00 +0000164 gettimeofday(&stv, NULL);
165 io_prep_pread(iocbs[0], fd, dstbuf, bufsize, pos);
Wanlong Gao354ebb42012-12-07 10:10:04 +0800166 for (i = 0; i < nr; i++) {
plars99a68d02003-05-21 17:38:00 +0000167 ts.tv_sec = 30;
168 ts.tv_nsec = 0;
subrata_modak967caaf2008-07-12 21:31:07 +0000169 do {
170 TEST(io_submit(io_ctx, 1, iocbs));
171 } while (TEST_RETURN == -EAGAIN);
172 if (TEST_RETURN < 0) {
Jan Stancek17ea0a92013-04-17 11:05:33 +0200173 tst_resm(TFAIL, "Test 2: io_submit failed - retval=%ld"
174 ", errno=%d", TEST_RETURN, TEST_ERRNO);
Wanlong Gao354ebb42012-12-07 10:10:04 +0800175 failflag = 1;
plars99a68d02003-05-21 17:38:00 +0000176 continue;
177 }
Wanlong Gao354ebb42012-12-07 10:10:04 +0800178 while (io_getevents(io_ctx, 1, 1, &event, &ts) != 1) ;
plars99a68d02003-05-21 17:38:00 +0000179 gettimeofday(&etv, NULL);
180 }
181 if (!failflag) {
182 sec = etv.tv_sec - stv.tv_sec;
183 usec = etv.tv_usec - stv.tv_usec;
184 if (usec < 0) {
185 usec += 1000000;
186 sec--;
187 }
188 tst_resm(TPASS, "Test 2: %d reads in %3d.%06d sec",
Wanlong Gao354ebb42012-12-07 10:10:04 +0800189 nr, sec, usec);
plars99a68d02003-05-21 17:38:00 +0000190 }
191
192/* TEST 3 */
193 pos = 0;
Wanlong Gao354ebb42012-12-07 10:10:04 +0800194 failflag = 0;
plars99a68d02003-05-21 17:38:00 +0000195 gettimeofday(&stv, NULL);
Wanlong Gao354ebb42012-12-07 10:10:04 +0800196 for (i = 0; i < nr; i++) {
plars99a68d02003-05-21 17:38:00 +0000197 io_prep_pwrite(iocbs[0], fd, srcbuf, bufsize, pos);
198 ts.tv_sec = 30;
199 ts.tv_nsec = 0;
subrata_modak967caaf2008-07-12 21:31:07 +0000200 do {
201 TEST(io_submit(io_ctx, 1, iocbs));
202 } while (TEST_RETURN == -EAGAIN);
203 if (TEST_RETURN < 0) {
Jan Stancek17ea0a92013-04-17 11:05:33 +0200204 tst_resm(TFAIL, "Test 3: io_submit failed - retval=%ld"
205 ", errno=%d", TEST_RETURN, TEST_ERRNO);
Wanlong Gao354ebb42012-12-07 10:10:04 +0800206 failflag = 1;
plars99a68d02003-05-21 17:38:00 +0000207 continue;
208 }
Wanlong Gao354ebb42012-12-07 10:10:04 +0800209 while (io_getevents(io_ctx, 1, 1, &event, &ts) != 1) ;
plars99a68d02003-05-21 17:38:00 +0000210 gettimeofday(&etv, NULL);
211 }
212 if (!failflag) {
213 sec = etv.tv_sec - stv.tv_sec;
214 usec = etv.tv_usec - stv.tv_usec;
215 if (usec < 0) {
216 usec += 1000000;
217 sec--;
218 }
219 tst_resm(TPASS, "Test 3: %d prep,writes in %3d.%06d sec",
Wanlong Gao354ebb42012-12-07 10:10:04 +0800220 nr, sec, usec);
plars99a68d02003-05-21 17:38:00 +0000221 }
222
223/* TEST 4 */
224 pos = 0;
Wanlong Gao354ebb42012-12-07 10:10:04 +0800225 failflag = 0;
plars99a68d02003-05-21 17:38:00 +0000226 gettimeofday(&stv, NULL);
Wanlong Gao354ebb42012-12-07 10:10:04 +0800227 for (i = 0; i < nr; i++) {
plars99a68d02003-05-21 17:38:00 +0000228 io_prep_pread(iocbs[0], fd, dstbuf, bufsize, pos);
229 ts.tv_sec = 30;
230 ts.tv_nsec = 0;
subrata_modak967caaf2008-07-12 21:31:07 +0000231 do {
232 TEST(io_submit(io_ctx, 1, iocbs));
233 } while (TEST_RETURN == -EAGAIN);
234 if (TEST_RETURN < 0) {
Jan Stancek17ea0a92013-04-17 11:05:33 +0200235 tst_resm(TFAIL, "Test 4: io_submit failed - retval=%ld"
236 ", errno=%d", TEST_RETURN, TEST_ERRNO);
Wanlong Gao354ebb42012-12-07 10:10:04 +0800237 failflag = 1;
plars99a68d02003-05-21 17:38:00 +0000238 continue;
239 }
Wanlong Gao354ebb42012-12-07 10:10:04 +0800240 while (io_getevents(io_ctx, 1, 1, &event, &ts) != 1) ;
plars99a68d02003-05-21 17:38:00 +0000241 gettimeofday(&etv, NULL);
242 }
243 if (!failflag) {
244 sec = etv.tv_sec - stv.tv_sec;
245 usec = etv.tv_usec - stv.tv_usec;
246 if (usec < 0) {
247 usec += 1000000;
248 sec--;
249 }
250 tst_resm(TPASS, "Test 4: %d prep,reads in %3d.%06d sec",
Wanlong Gao354ebb42012-12-07 10:10:04 +0800251 nr, sec, usec);
plars99a68d02003-05-21 17:38:00 +0000252 }
253
254/* TEST 5 */
255 pos = 0;
Wanlong Gao354ebb42012-12-07 10:10:04 +0800256 failflag = 0;
plars99a68d02003-05-21 17:38:00 +0000257 gettimeofday(&stv, NULL);
Wanlong Gao354ebb42012-12-07 10:10:04 +0800258 for (i = 0; i < nr; i++) {
plars99a68d02003-05-21 17:38:00 +0000259 io_prep_pwrite(iocbs[0], fd, srcbuf, bufsize, pos);
260 ts.tv_sec = 30;
261 ts.tv_nsec = 0;
subrata_modak967caaf2008-07-12 21:31:07 +0000262 do {
263 TEST(io_submit(io_ctx, 1, iocbs));
264 } while (TEST_RETURN == -EAGAIN);
265 if (TEST_RETURN < 0) {
plars99a68d02003-05-21 17:38:00 +0000266 tst_resm(TFAIL, "Test 5: write io_submit failed - "
Jan Stancek17ea0a92013-04-17 11:05:33 +0200267 "retval=%ld, errno=%d", TEST_RETURN,
Wanlong Gao354ebb42012-12-07 10:10:04 +0800268 TEST_ERRNO);
269 failflag = 1;
plars99a68d02003-05-21 17:38:00 +0000270 continue;
271 }
Wanlong Gao354ebb42012-12-07 10:10:04 +0800272 while (io_getevents(io_ctx, 1, 1, &event, &ts) != 1) ;
plars99a68d02003-05-21 17:38:00 +0000273 io_prep_pread(iocbs[0], fd, dstbuf, bufsize, pos);
274 ts.tv_sec = 30;
275 ts.tv_nsec = 0;
subrata_modak967caaf2008-07-12 21:31:07 +0000276 do {
277 TEST(io_submit(io_ctx, 1, iocbs));
278 } while (TEST_RETURN == -EAGAIN);
279 if (TEST_RETURN < 0) {
plars99a68d02003-05-21 17:38:00 +0000280 tst_resm(TFAIL, "Test 5: read io_submit failed - "
Jan Stancek17ea0a92013-04-17 11:05:33 +0200281 "retval=%ld, errno=%d", TEST_RETURN,
Wanlong Gao354ebb42012-12-07 10:10:04 +0800282 TEST_ERRNO);
283 failflag = 1;
plars99a68d02003-05-21 17:38:00 +0000284 continue;
285 }
Wanlong Gao354ebb42012-12-07 10:10:04 +0800286 while (io_getevents(io_ctx, 1, 1, &event, &ts) != 1) ;
plars99a68d02003-05-21 17:38:00 +0000287 gettimeofday(&etv, NULL);
288 }
289 if (!failflag) {
290 sec = etv.tv_sec - stv.tv_sec;
291 usec = etv.tv_usec - stv.tv_usec;
292 if (usec < 0) {
293 usec += 1000000;
294 sec--;
295 }
296 tst_resm(TPASS, "Test 5: %d reads and writes in %3d.%06d sec",
Wanlong Gao354ebb42012-12-07 10:10:04 +0800297 nr, sec, usec);
plars99a68d02003-05-21 17:38:00 +0000298 }
299
300/* TEST 6 */
301 pos = 0;
Wanlong Gao354ebb42012-12-07 10:10:04 +0800302 failflag = 0;
plars99a68d02003-05-21 17:38:00 +0000303 gettimeofday(&stv, NULL);
Wanlong Gao354ebb42012-12-07 10:10:04 +0800304 for (i = 0; i < nr; i++) {
plars99a68d02003-05-21 17:38:00 +0000305 io_prep_pwrite(iocbs[0], fd, srcbuf, bufsize, pos);
306 ts.tv_sec = 30;
307 ts.tv_nsec = 0;
subrata_modak967caaf2008-07-12 21:31:07 +0000308 do {
309 TEST(io_submit(io_ctx, 1, iocbs));
310 } while (TEST_RETURN == -EAGAIN);
311 if (TEST_RETURN < 0) {
plars99a68d02003-05-21 17:38:00 +0000312 tst_resm(TFAIL, "Test 6: write io_submit failed - "
Jan Stancek17ea0a92013-04-17 11:05:33 +0200313 "retval=%ld, errno=%d", TEST_RETURN,
Wanlong Gao354ebb42012-12-07 10:10:04 +0800314 TEST_ERRNO);
315 failflag = 1;
plars99a68d02003-05-21 17:38:00 +0000316 continue;
317 }
Wanlong Gao354ebb42012-12-07 10:10:04 +0800318 while (io_getevents(io_ctx, 1, 1, &event, &ts) != 1) ;
plars99a68d02003-05-21 17:38:00 +0000319 io_prep_pread(iocbs[0], fd, dstbuf, bufsize, pos);
320 ts.tv_sec = 30;
321 ts.tv_nsec = 0;
subrata_modak967caaf2008-07-12 21:31:07 +0000322 do {
323 TEST(io_submit(io_ctx, 1, iocbs));
324 } while (TEST_RETURN == -EAGAIN);
325 if (TEST_RETURN < 0) {
plars99a68d02003-05-21 17:38:00 +0000326 tst_resm(TFAIL, "Test 6: read io_submit failed - "
Jan Stancek17ea0a92013-04-17 11:05:33 +0200327 "retval=%ld, errno=%d", TEST_RETURN,
Wanlong Gao354ebb42012-12-07 10:10:04 +0800328 TEST_ERRNO);
329 failflag = 1;
plars99a68d02003-05-21 17:38:00 +0000330 continue;
331 }
Wanlong Gao354ebb42012-12-07 10:10:04 +0800332 while (io_getevents(io_ctx, 1, 1, &event, &ts) != 1) ;
plars99a68d02003-05-21 17:38:00 +0000333 for (j = 0; j < bufsize; j++) {
Jan Stancekc0e21fd2013-04-17 11:09:48 +0200334 if (srcbuf[j] != dstbuf[j]) {
plars99a68d02003-05-21 17:38:00 +0000335 tst_resm(TFAIL, "Test 6: compare failed - "
Wanlong Gao354ebb42012-12-07 10:10:04 +0800336 "read: %c, " "actual: %c",
337 dstbuf[j], srcbuf[j]);
Jan Stancekc0e21fd2013-04-17 11:09:48 +0200338 break;
339 }
plars99a68d02003-05-21 17:38:00 +0000340 }
341 gettimeofday(&etv, NULL);
342 }
343 if (!failflag) {
344 sec = etv.tv_sec - stv.tv_sec;
345 usec = etv.tv_usec - stv.tv_usec;
346 if (usec < 0) {
347 usec += 1000000;
348 sec--;
349 }
350 tst_resm(TPASS, "Test 6: %d read,write,verify in %d.%06d sec",
Wanlong Gao354ebb42012-12-07 10:10:04 +0800351 i, sec, usec);
plars99a68d02003-05-21 17:38:00 +0000352 }
subrata_modakbdbaec52009-02-26 12:14:51 +0000353
plars99a68d02003-05-21 17:38:00 +0000354 cleanup();
355
Garrett Cooper2c282152010-12-16 00:55:50 -0800356 tst_exit();
plars99a68d02003-05-21 17:38:00 +0000357}
358
subrata_modakd1e19732009-08-30 17:04:40 +0000359static void help(void)
360{
plars99a68d02003-05-21 17:38:00 +0000361 printf(" -b n Buffersize\n");
362 printf(" -n n Number of requests\n");
363 printf(" -F s Filename to run the tests against\n");
364}
365
subrata_modakd1e19732009-08-30 17:04:40 +0000366static void setup(void)
367{
plars99a68d02003-05-21 17:38:00 +0000368 int ret;
369
370 tst_sig(NOFORK, DEF_HANDLER, cleanup);
371
372 /* Pause if option was specified */
373 TEST_PAUSE;
374
375 tst_tmpdir();
376
377 if ((fd = open(fname, O_RDWR | O_CREAT, 0600)) < 0)
378 tst_brkm(TFAIL, cleanup, "failed to open %s "
Wanlong Gao354ebb42012-12-07 10:10:04 +0800379 "file, errno: %d", fname, errno);
plars99a68d02003-05-21 17:38:00 +0000380 stat(fname, &s);
Wanlong Gao354ebb42012-12-07 10:10:04 +0800381 if ((iocbs = malloc(sizeof(int) * nr)) == NULL)
plars99a68d02003-05-21 17:38:00 +0000382 tst_brkm(TFAIL, cleanup, "malloc for iocbs failed - "
Wanlong Gao354ebb42012-12-07 10:10:04 +0800383 "errno: %d", errno);
plars99a68d02003-05-21 17:38:00 +0000384 if ((iocbs[0] = malloc(sizeof(struct iocb))) == NULL)
385 tst_brkm(TFAIL, cleanup, "malloc for iocbs elements failed - "
Wanlong Gao354ebb42012-12-07 10:10:04 +0800386 "errno: %d", errno);
plars99a68d02003-05-21 17:38:00 +0000387 if (S_ISCHR(s.st_mode)) {
Wanlong Gao354ebb42012-12-07 10:10:04 +0800388 if ((ret =
389 posix_memalign((void **)&srcbuf, bufsize, bufsize)) != 0)
390 tst_brkm(TFAIL, cleanup,
391 "posix_memalign for srcbuf "
392 "failed - errno: %d", errno);
393 if ((ret =
394 posix_memalign((void **)&dstbuf, bufsize, bufsize)) != 0)
395 tst_brkm(TFAIL, cleanup,
396 "posix_memalign for dstbuf "
397 "failed - errno: %d", errno);
plars99a68d02003-05-21 17:38:00 +0000398 } else {
Wanlong Gao354ebb42012-12-07 10:10:04 +0800399 if ((srcbuf = malloc(sizeof(char) * bufsize)) == NULL)
plars99a68d02003-05-21 17:38:00 +0000400 tst_brkm(TFAIL, cleanup, "malloc for srcbuf "
Wanlong Gao354ebb42012-12-07 10:10:04 +0800401 "failed - errno: %d", errno);
402 if ((dstbuf = malloc(sizeof(char) * bufsize)) == NULL)
plars99a68d02003-05-21 17:38:00 +0000403 tst_brkm(TFAIL, cleanup, "malloc for dstbuf "
Wanlong Gao354ebb42012-12-07 10:10:04 +0800404 "failed - errno: %d", errno);
plars99a68d02003-05-21 17:38:00 +0000405 }
406 memset((void *)srcbuf, 65, bufsize);
407 if ((ret = io_queue_init(1, &io_ctx)) != 0)
408 tst_brkm(TFAIL, cleanup, "io_queue_init failed: %s",
Wanlong Gao354ebb42012-12-07 10:10:04 +0800409 strerror(ret));
plars99a68d02003-05-21 17:38:00 +0000410}
411
Wanlong Gao354ebb42012-12-07 10:10:04 +0800412static void cleanup(void)
413{
plars99a68d02003-05-21 17:38:00 +0000414 free(dstbuf);
415 free(srcbuf);
416 free(iocbs[0]);
417 free(iocbs);
418 close(fd);
419 io_queue_release(io_ctx);
420 tst_rmdir();
Garrett Cooper2c282152010-12-16 00:55:50 -0800421
plars99a68d02003-05-21 17:38:00 +0000422}
subrata_modakdd876292009-01-28 06:43:09 +0000423
424#else
425
426int main(void)
427{
Cyril Hrubis526fdf82014-12-04 14:35:01 +0100428 tst_brkm(TCONF, NULL, "libaio missing");
subrata_modakdd876292009-01-28 06:43:09 +0000429}
430
Chris Dearmanec6edca2012-10-17 19:54:01 -0700431#endif