Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src Add a test to ensure that PAGE_SIZE is available in kernel m...
details: https://anonhg.NetBSD.org/src/rev/5bc29ddd0c64
branches: trunk
changeset: 777415:5bc29ddd0c64
user: jmmv <jmmv%NetBSD.org@localhost>
date: Fri Feb 17 22:36:50 2012 +0000
description:
Add a test to ensure that PAGE_SIZE is available in kernel modules.
This test reproduces the error condition in PR port-macppc/46041 and
therefore it is an xfail in this particular platform.
diffstat:
distrib/sets/lists/tests/module.mi | 5 +-
tests/modules/Makefile | 6 +-
tests/modules/k_uvm/Makefile | 14 ++++
tests/modules/k_uvm/k_uvm.c | 113 +++++++++++++++++++++++++++++++++++++
tests/modules/t_abi_uvm.sh | 60 +++++++++++++++++++
5 files changed, 195 insertions(+), 3 deletions(-)
diffs (240 lines):
diff -r 2b35e3c33f2c -r 5bc29ddd0c64 distrib/sets/lists/tests/module.mi
--- a/distrib/sets/lists/tests/module.mi Fri Feb 17 20:17:38 2012 +0000
+++ b/distrib/sets/lists/tests/module.mi Fri Feb 17 22:36:50 2012 +0000
@@ -1,4 +1,4 @@
-# $NetBSD: module.mi,v 1.5 2010/08/27 10:01:04 pooka Exp $
+# $NetBSD: module.mi,v 1.6 2012/02/17 22:36:50 jmmv Exp $
#
# These are only made for ports doing modules.
#
@@ -7,6 +7,9 @@
./usr/tests/modules/k_helper/k_helper.kmod tests-sys-tests atf
./usr/tests/modules/k_helper2 tests-sys-tests atf
./usr/tests/modules/k_helper2/k_helper2.kmod tests-sys-tests atf
+./usr/tests/modules/k_uvm tests-sys-tests atf
+./usr/tests/modules/k_uvm/k_uvm.kmod tests-sys-tests atf
+./usr/tests/modules/t_abi_uvm tests-sys-tests atf
./usr/tests/modules/t_builtin tests-sys-tests atf
./usr/tests/modules/t_modctl tests-sys-tests atf
./usr/tests/modules/t_modload tests-sys-tests atf
diff -r 2b35e3c33f2c -r 5bc29ddd0c64 tests/modules/Makefile
--- a/tests/modules/Makefile Fri Feb 17 20:17:38 2012 +0000
+++ b/tests/modules/Makefile Fri Feb 17 22:36:50 2012 +0000
@@ -1,4 +1,4 @@
-# $NetBSD: Makefile,v 1.8 2010/08/27 09:56:40 pooka Exp $
+# $NetBSD: Makefile,v 1.9 2012/02/17 22:36:50 jmmv Exp $
.include <bsd.own.mk>
@@ -14,9 +14,11 @@
LDADD= -lprop
LDADD+= -lrumpfs_kernfs -lrumpvfs -lrump -lrumpuser -lpthread
-TESTS_SH= t_modload
+TESTS_SH= t_abi_uvm
+TESTS_SH+= t_modload
SUBDIR= k_helper
SUBDIR+= k_helper2
+SUBDIR+= k_uvm
.include <bsd.test.mk>
diff -r 2b35e3c33f2c -r 5bc29ddd0c64 tests/modules/k_uvm/Makefile
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/modules/k_uvm/Makefile Fri Feb 17 22:36:50 2012 +0000
@@ -0,0 +1,14 @@
+# $NetBSD: Makefile,v 1.1 2012/02/17 22:36:50 jmmv Exp $
+
+.include <bsd.own.mk>
+
+KMOD= k_uvm
+KMODULEDIR= ${DESTDIR}/${TESTSBASE}/modules/${KMOD}
+
+SRCS= k_uvm.c
+
+ATFFILE= no
+NOMAN= # defined
+
+.include <bsd.test.mk>
+.include <bsd.kmodule.mk>
diff -r 2b35e3c33f2c -r 5bc29ddd0c64 tests/modules/k_uvm/k_uvm.c
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/modules/k_uvm/k_uvm.c Fri Feb 17 22:36:50 2012 +0000
@@ -0,0 +1,113 @@
+/* $NetBSD: k_uvm.c,v 1.1 2012/02/17 22:36:50 jmmv Exp $ */
+/*
+ * Copyright (c) 2012 The NetBSD Foundation, Inc.
+ * All rights reserved.
+ *
+ * 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 NETBSD FOUNDATION, INC. 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 FOUNDATION 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.
+ */
+
+#include <sys/cdefs.h>
+__KERNEL_RCSID(0, "$NetBSD: k_uvm.c,v 1.1 2012/02/17 22:36:50 jmmv Exp $");
+
+#include <sys/param.h>
+#include <sys/kernel.h>
+#include <sys/module.h>
+#include <sys/sysctl.h>
+
+MODULE(MODULE_CLASS_MISC, k_uvm, NULL);
+
+/* --------------------------------------------------------------------- */
+/* Sysctl interface to query information about the module. */
+/* --------------------------------------------------------------------- */
+
+static struct sysctllog *clogp;
+static int page_size;
+
+#define K_UVM 0x12345678
+#define K_UVM_VALUE 0
+
+SYSCTL_SETUP(sysctl_k_uvm_setup, "sysctl k_uvm subtree setup")
+{
+
+ sysctl_createv(clog, 0, NULL, NULL,
+ CTLFLAG_PERMANENT,
+ CTLTYPE_NODE, "k_uvm", NULL,
+ NULL, 0, NULL, 0,
+ CTL_VENDOR, K_UVM, CTL_EOL);
+
+ sysctl_createv(clog, 0, NULL, NULL,
+ CTLFLAG_PERMANENT,
+ CTLTYPE_INT, "page_size",
+ SYSCTL_DESCR("Value of PAGE_SIZE"),
+ NULL, 0, &page_size, 0,
+ CTL_VENDOR, K_UVM, K_UVM_VALUE, CTL_EOL);
+}
+
+/* --------------------------------------------------------------------- */
+/* Module management. */
+/* --------------------------------------------------------------------- */
+
+static
+int
+k_uvm_init(prop_dictionary_t props)
+{
+
+ page_size = PAGE_SIZE;
+
+ sysctl_k_uvm_setup(&clogp);
+
+ return 0;
+}
+
+static
+int
+k_uvm_fini(void *arg)
+{
+
+ sysctl_teardown(&clogp);
+
+ return 0;
+}
+
+static
+int
+k_uvm_modcmd(modcmd_t cmd, void *arg)
+{
+ int ret;
+
+ switch (cmd) {
+ case MODULE_CMD_INIT:
+ ret = k_uvm_init(arg);
+ break;
+
+ case MODULE_CMD_FINI:
+ ret = k_uvm_fini(arg);
+ break;
+
+ case MODULE_CMD_STAT:
+ default:
+ ret = ENOTTY;
+ }
+
+ return ret;
+}
diff -r 2b35e3c33f2c -r 5bc29ddd0c64 tests/modules/t_abi_uvm.sh
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/modules/t_abi_uvm.sh Fri Feb 17 22:36:50 2012 +0000
@@ -0,0 +1,60 @@
+# $NetBSD: t_abi_uvm.sh,v 1.1 2012/02/17 22:36:50 jmmv Exp $
+#
+# Copyright (c) 2012 The NetBSD Foundation, Inc.
+# All rights reserved.
+#
+# 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 NETBSD FOUNDATION, INC. 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 FOUNDATION 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.
+#
+
+atf_test_case PAGE_SIZE cleanup
+PAGE_SIZE_head() {
+ atf_set "descr" "Ensures that modules have access to PAGE_SIZE"
+ atf_set "require.user" "root"
+}
+PAGE_SIZE_body() {
+ if modload $(atf_get_srcdir)/k_uvm/k_uvm.kmod; then
+ :
+ else
+ case "$(uname -m)" in
+ macppc)
+ atf_expect_fail "PR port-macppc/46041"
+ ;;
+ esac
+ atf_fail "Failed to load k_uvm; missing uvmexp_pagesize?"
+ fi
+
+ kernel_pagesize="$(sysctl -n hw.pagesize || echo fail1)"
+ module_pagesize="$(sysctl -n vendor.k_uvm.page_size || echo fail2)"
+ echo "Kernel PAGE_SIZE: ${kernel_pagesize}"
+ echo "Module PAGE_SIZE: ${module_pagesize}"
+ atf_check_equal "${kernel_pagesize}" "${module_pagesize}"
+
+ atf_check -s eq:0 -o empty -e empty modunload k_uvm
+}
+PAGE_SIZE_cleanup() {
+ modunload k_uvm >/dev/null 2>&1 || true
+}
+
+atf_init_test_cases()
+{
+ atf_add_test_case PAGE_SIZE
+}
Home |
Main Index |
Thread Index |
Old Index