Module Name:    src
Committed By:   riz
Date:           Thu May 17 19:03:24 UTC 2012

Modified Files:
        src/distrib/sets/lists/tests [netbsd-6]: module.mi
        src/tests/modules [netbsd-6]: Makefile
Added Files:
        src/tests/modules [netbsd-6]: t_abi_uvm.sh
        src/tests/modules/k_uvm [netbsd-6]: Makefile k_uvm.c

Log Message:
Pull up following revision(s) (requested by jmmv in ticket #8):
        tests/modules/t_abi_uvm.sh: revision 1.1
        tests/modules/k_uvm/k_uvm.c: revision 1.1
        tests/modules/k_uvm/Makefile: revision 1.1
        distrib/sets/lists/tests/module.mi: revision 1.6
        tests/modules/Makefile: revision 1.9
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.


To generate a diff of this commit:
cvs rdiff -u -r1.5 -r1.5.8.1 src/distrib/sets/lists/tests/module.mi
cvs rdiff -u -r1.8 -r1.8.8.1 src/tests/modules/Makefile
cvs rdiff -u -r0 -r1.3.2.2 src/tests/modules/t_abi_uvm.sh
cvs rdiff -u -r0 -r1.1.4.2 src/tests/modules/k_uvm/Makefile \
    src/tests/modules/k_uvm/k_uvm.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/distrib/sets/lists/tests/module.mi
diff -u src/distrib/sets/lists/tests/module.mi:1.5 src/distrib/sets/lists/tests/module.mi:1.5.8.1
--- src/distrib/sets/lists/tests/module.mi:1.5	Fri Aug 27 10:01:04 2010
+++ src/distrib/sets/lists/tests/module.mi	Thu May 17 19:03:24 2012
@@ -1,4 +1,4 @@
-# $NetBSD: module.mi,v 1.5 2010/08/27 10:01:04 pooka Exp $
+# $NetBSD: module.mi,v 1.5.8.1 2012/05/17 19:03:24 riz 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

Index: src/tests/modules/Makefile
diff -u src/tests/modules/Makefile:1.8 src/tests/modules/Makefile:1.8.8.1
--- src/tests/modules/Makefile:1.8	Fri Aug 27 09:56:40 2010
+++ src/tests/modules/Makefile	Thu May 17 19:03:23 2012
@@ -1,4 +1,4 @@
-# $NetBSD: Makefile,v 1.8 2010/08/27 09:56:40 pooka Exp $
+# $NetBSD: Makefile,v 1.8.8.1 2012/05/17 19:03:23 riz Exp $
 
 .include <bsd.own.mk>
 
@@ -14,9 +14,11 @@ TESTS_C+=	t_builtin
 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>

Added files:

Index: src/tests/modules/t_abi_uvm.sh
diff -u /dev/null src/tests/modules/t_abi_uvm.sh:1.3.2.2
--- /dev/null	Thu May 17 19:03:24 2012
+++ src/tests/modules/t_abi_uvm.sh	Thu May 17 19:03:23 2012
@@ -0,0 +1,60 @@
+# $NetBSD: t_abi_uvm.sh,v 1.3.2.2 2012/05/17 19:03:23 riz 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
+}

Index: src/tests/modules/k_uvm/Makefile
diff -u /dev/null src/tests/modules/k_uvm/Makefile:1.1.4.2
--- /dev/null	Thu May 17 19:03:24 2012
+++ src/tests/modules/k_uvm/Makefile	Thu May 17 19:03:24 2012
@@ -0,0 +1,14 @@
+#	$NetBSD: Makefile,v 1.1.4.2 2012/05/17 19:03:24 riz 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>
Index: src/tests/modules/k_uvm/k_uvm.c
diff -u /dev/null src/tests/modules/k_uvm/k_uvm.c:1.1.4.2
--- /dev/null	Thu May 17 19:03:24 2012
+++ src/tests/modules/k_uvm/k_uvm.c	Thu May 17 19:03:23 2012
@@ -0,0 +1,113 @@
+/*	$NetBSD: k_uvm.c,v 1.1.4.2 2012/05/17 19:03:23 riz 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.4.2 2012/05/17 19:03:23 riz 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;
+}

Reply via email to