summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorgjb <gjb@FreeBSD.org>2016-03-02 16:14:46 +0000
committergjb <gjb@FreeBSD.org>2016-03-02 16:14:46 +0000
commit955ce29ea33f5aa2d5477a1fe1a2735ac278cd0d (patch)
tree9c83d6fb30867514fbcff33f80605a1fb118d720 /tests
parent4719e40f5bedd0f88591120e071741635f07993b (diff)
parent774a6245596e60bf04f03e8cccab06a3194504f5 (diff)
downloadFreeBSD-src-955ce29ea33f5aa2d5477a1fe1a2735ac278cd0d.zip
FreeBSD-src-955ce29ea33f5aa2d5477a1fe1a2735ac278cd0d.tar.gz
MFH
Sponsored by: The FreeBSD Foundation
Diffstat (limited to 'tests')
-rw-r--r--tests/sys/aio/aio_kqueue_test.c2
-rw-r--r--tests/sys/aio/aio_test.c5
-rw-r--r--tests/sys/aio/lio_kqueue_test.c2
-rw-r--r--tests/sys/aio/local.h74
4 files changed, 83 insertions, 0 deletions
diff --git a/tests/sys/aio/aio_kqueue_test.c b/tests/sys/aio/aio_kqueue_test.c
index 97c2c38f..08d57f8 100644
--- a/tests/sys/aio/aio_kqueue_test.c
+++ b/tests/sys/aio/aio_kqueue_test.c
@@ -47,6 +47,7 @@
#include <unistd.h>
#include "freebsd_test_suite/macros.h"
+#include "local.h"
#define PATH_TEMPLATE "aio.XXXXXXXXXX"
@@ -70,6 +71,7 @@ main (int argc, char *argv[])
unsigned i, j;
PLAIN_REQUIRE_KERNEL_MODULE("aio", 0);
+ PLAIN_REQUIRE_UNSAFE_AIO(0);
kq = kqueue();
if (kq < 0) {
diff --git a/tests/sys/aio/aio_test.c b/tests/sys/aio/aio_test.c
index 4134e78..607f46d 100644
--- a/tests/sys/aio/aio_test.c
+++ b/tests/sys/aio/aio_test.c
@@ -60,6 +60,7 @@
#include <atf-c.h>
#include "freebsd_test_suite/macros.h"
+#include "local.h"
#define PATH_TEMPLATE "aio.XXXXXXXXXX"
@@ -340,6 +341,7 @@ ATF_TC_BODY(aio_file_test, tc)
int fd;
ATF_REQUIRE_KERNEL_MODULE("aio");
+ ATF_REQUIRE_UNSAFE_AIO();
strcpy(pathname, PATH_TEMPLATE);
fd = mkstemp(pathname);
@@ -386,6 +388,7 @@ ATF_TC_BODY(aio_fifo_test, tc)
struct aio_context ac;
ATF_REQUIRE_KERNEL_MODULE("aio");
+ ATF_REQUIRE_UNSAFE_AIO();
/*
* In theory, mkstemp() can return a name that is then collided with.
@@ -497,6 +500,7 @@ ATF_TC_BODY(aio_pty_test, tc)
int error;
ATF_REQUIRE_KERNEL_MODULE("aio");
+ ATF_REQUIRE_UNSAFE_AIO();
ATF_REQUIRE_MSG(openpty(&read_fd, &write_fd, NULL, NULL, NULL) == 0,
"openpty failed: %s", strerror(errno));
@@ -544,6 +548,7 @@ ATF_TC_BODY(aio_pipe_test, tc)
int pipes[2];
ATF_REQUIRE_KERNEL_MODULE("aio");
+ ATF_REQUIRE_UNSAFE_AIO();
ATF_REQUIRE_MSG(pipe(pipes) != -1,
"pipe failed: %s", strerror(errno));
diff --git a/tests/sys/aio/lio_kqueue_test.c b/tests/sys/aio/lio_kqueue_test.c
index e69b9c9..5178a1d 100644
--- a/tests/sys/aio/lio_kqueue_test.c
+++ b/tests/sys/aio/lio_kqueue_test.c
@@ -50,6 +50,7 @@
#include <unistd.h>
#include "freebsd_test_suite/macros.h"
+#include "local.h"
#define PATH_TEMPLATE "aio.XXXXXXXXXX"
@@ -74,6 +75,7 @@ main(int argc, char *argv[])
int tmp_file = 0, failed = 0;
PLAIN_REQUIRE_KERNEL_MODULE("aio", 0);
+ PLAIN_REQUIRE_UNSAFE_AIO(0);
kq = kqueue();
if (kq < 0)
diff --git a/tests/sys/aio/local.h b/tests/sys/aio/local.h
new file mode 100644
index 0000000..308b700
--- /dev/null
+++ b/tests/sys/aio/local.h
@@ -0,0 +1,74 @@
+/*-
+ * Copyright (c) 2016 Chelsio Communications, Inc.
+ * All rights reserved.
+ * Written by: John Baldwin <jhb@FreeBSD.org>
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+#ifndef _AIO_TEST_LOCAL_H_
+#define _AIO_TEST_LOCAL_H_
+
+#include <sys/types.h>
+#include <sys/sysctl.h>
+#include <errno.h>
+#include <stdio.h>
+#include <string.h>
+#include <unistd.h>
+
+#include <atf-c.h>
+
+#define ATF_REQUIRE_UNSAFE_AIO() do { \
+ size_t _len; \
+ int _unsafe; \
+ \
+ _len = sizeof(_unsafe); \
+ if (sysctlbyname("vfs.aio.enable_unsafe", &_unsafe, &_len, NULL,\
+ 0) < 0) { \
+ if (errno != ENOENT) \
+ atf_libc_error(errno, \
+ "Failed to read vfs.aio.enable_unsafe"); \
+ } else if (_unsafe == 0) \
+ atf_tc_skip("Unsafe AIO is disabled"); \
+} while (0)
+
+#define PLAIN_REQUIRE_UNSAFE_AIO(_exit_code) do { \
+ size_t _len; \
+ int _unsafe; \
+ \
+ _len = sizeof(_unsafe); \
+ if (sysctlbyname("vfs.aio.enable_unsafe", &_unsafe, &_len, NULL,\
+ 0) < 0) { \
+ if (errno != ENOENT) { \
+ printf("Failed to read vfs.aio.enable_unsafe: %s\n",\
+ strerror(errno)); \
+ _exit(1); \
+ } \
+ } else if (_unsafe == 0) { \
+ printf("Unsafe AIO is disabled"); \
+ _exit(_exit_code); \
+ } \
+} while (0)
+
+#endif /* !_AIO_TEST_LOCAL_H_ */
OpenPOWER on IntegriCloud