]> Zhao Yanbai Git Server - minix.git/commitdiff
kernel: move do_padconf and add a test case 96/796/1
authorThomas Cort <tcort@minix3.org>
Thu, 29 Aug 2013 12:56:27 +0000 (08:56 -0400)
committerThomas Cort <tcort@minix3.org>
Thu, 29 Aug 2013 13:23:10 +0000 (09:23 -0400)
padconf is specific to arm, so it's being moved to kernel/arch/earm.

Add a test case to ensure the proper error is returned on non-ARM
systems.

Change-Id: I07ebbe64825d59bc0ef9c818d3d54891dafb4419

kernel/arch/earm/Makefile.inc
kernel/arch/earm/do_padconf.c [moved from kernel/system/do_padconf.c with 100% similarity]
kernel/system/Makefile.inc
test/kernel/run
test/kernel/sys_padconf/Makefile [new file with mode: 0644]
test/kernel/sys_padconf/padconftest.c [new file with mode: 0644]
test/kernel/sys_padconf/run [new file with mode: 0755]
test/kernel/sys_padconf/system.conf [new file with mode: 0644]

index 2ca8212cb5558fb48073de7fc54701dcae4824a1..cd61e526aa0fb5913d7d3e8438146f7226cd9298 100644 (file)
@@ -63,7 +63,7 @@ ORIG_UNPAGED_OBJS += ${unpaged_obj}
 
 CLEANFILES+= ${ORIG_UNPAGED_OBJS}
 
-SRCS+= mpx.S arch_clock.c arch_do_vmctl.c arch_system.c \
+SRCS+= mpx.S arch_clock.c arch_do_vmctl.c arch_system.c do_padconf.c \
        omap_serial.c omap_timer.c omap_padconf.c omap_intr.c omap_rtc.c \
        omap_reset.c exception.c klib.S memory.c \
        protect.c direct_tty_utils.c arch_reset.c \
index 627e28cab8748eb9c745d9ca104f7af960e4ddc2..e90b476402b13f8a067f77adc1b62c169f7faab9 100644 (file)
@@ -40,11 +40,6 @@ SRCS+=       \
        do_schedctl.c \
        do_statectl.c
 
-.if ${MACHINE_ARCH} == "earm"
-SRCS+= \
-       do_padconf.c
-.endif
-
 .if ${MACHINE_ARCH} == "i386"
 SRCS+=  \
        do_devio.c \
index c1e8b1d04d33fa55120334cc8ebbe369bc506ee9..39d931e1964bc6576de94585124a334c3e95f69f 100755 (executable)
@@ -1,5 +1,5 @@
 #!/bin/sh
 
-tests="sys_vumap"
+tests="sys_padconf sys_vumap"
 
 for i in $tests; do (cd $i && ./run); done
diff --git a/test/kernel/sys_padconf/Makefile b/test/kernel/sys_padconf/Makefile
new file mode 100644 (file)
index 0000000..ad82370
--- /dev/null
@@ -0,0 +1,16 @@
+# Makefile for the sys_padconf test.
+
+.include <bsd.own.mk>
+
+PROG=  padconftest
+SRCS=  padconftest.c
+
+DPADD+=        ${LIBSYS}
+LDADD+=        -lsys
+
+MAN=
+
+BINDIR?= /usr/tests/minix-posix
+
+.include "${NETBSDSRCDIR}/drivers/Makefile.inc"
+.include <minix.service.mk>
diff --git a/test/kernel/sys_padconf/padconftest.c b/test/kernel/sys_padconf/padconftest.c
new file mode 100644 (file)
index 0000000..b0e06bb
--- /dev/null
@@ -0,0 +1,59 @@
+/* Test for sys_padconf() */
+#include <errno.h>
+#include <stdio.h>
+#include <minix/com.h>
+#include <minix/syslib.h>
+#include <minix/padconf.h>
+#include <minix/drivers.h>
+#include <assert.h>
+
+static unsigned int failures = 0;
+
+/*
+ * padconf is only supported on ARM. On other systems sys_padconf() should
+ * return -EBADREQUEST.
+ */
+static void test_badrequest(void)
+{
+#if !defined(__arm__)
+       int r;
+
+       r = sys_padconf(0xffffffff, 0xffffffff, 0xffffffff);
+       if (r != -EBADREQUEST) {
+               printf("Expected r=%d | Got r=%d\n", -EBADREQUEST, r);
+               failures++;
+       }
+#endif
+       return;
+}
+
+static void do_tests(void)
+{
+       test_badrequest();
+}
+
+static int sef_cb_init_fresh(int UNUSED(type), sef_init_info_t *UNUSED(info))
+{
+       do_tests();
+
+       /* The returned code will determine the outcome of the RS call, and
+        * thus the entire test. The actual error code does not matter.
+        */
+       return (failures) ? EINVAL : 0;
+}
+
+static void sef_local_startup(void)
+{
+       sef_setcb_init_fresh(sef_cb_init_fresh);
+
+       sef_startup();
+}
+
+int main(int argc, char **argv)
+{
+       env_setargs(argc, argv);
+
+       sef_local_startup();
+
+       return 0;
+}
diff --git a/test/kernel/sys_padconf/run b/test/kernel/sys_padconf/run
new file mode 100755 (executable)
index 0000000..c47743c
--- /dev/null
@@ -0,0 +1,14 @@
+#!/bin/sh
+
+make >/dev/null
+
+echo -n "Kernel test (sys_padconf): "
+service up `pwd`/padconftest -config system.conf -label padconftest -script /etc/rs.single
+r=$?
+
+if [ $r -ne 0 ]; then
+  echo "failure"
+  exit 1
+fi
+
+echo "ok"
diff --git a/test/kernel/sys_padconf/system.conf b/test/kernel/sys_padconf/system.conf
new file mode 100644 (file)
index 0000000..0e2f330
--- /dev/null
@@ -0,0 +1,4 @@
+service padconftest {
+       system PADCONF;
+};
+