kernel: move do_padconf and add a test case
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
This commit is contained in:
parent
4593804bf0
commit
9f4b8dc11b
8 changed files with 95 additions and 7 deletions
|
@ -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 \
|
||||
|
|
|
@ -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 \
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
#!/bin/sh
|
||||
|
||||
tests="sys_vumap"
|
||||
tests="sys_padconf sys_vumap"
|
||||
|
||||
for i in $tests; do (cd $i && ./run); done
|
||||
|
|
16
test/kernel/sys_padconf/Makefile
Normal file
16
test/kernel/sys_padconf/Makefile
Normal file
|
@ -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>
|
59
test/kernel/sys_padconf/padconftest.c
Normal file
59
test/kernel/sys_padconf/padconftest.c
Normal file
|
@ -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;
|
||||
}
|
14
test/kernel/sys_padconf/run
Executable file
14
test/kernel/sys_padconf/run
Executable file
|
@ -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"
|
4
test/kernel/sys_padconf/system.conf
Normal file
4
test/kernel/sys_padconf/system.conf
Normal file
|
@ -0,0 +1,4 @@
|
|||
service padconftest {
|
||||
system PADCONF;
|
||||
};
|
||||
|
Loading…
Reference in a new issue