diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2018-07-26 12:03:45 +0200 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2018-07-26 12:03:45 +0200 |
commit | 6fb003f5880405d664f532ce9313f0bd666ca675 (patch) | |
tree | 69f4042fce391bf1c705f5b2535ca0e309306a53 | |
parent | Avoid malloc() in getsockaddr() (diff) | |
download | rtems-libbsd-6fb003f5880405d664f532ce9313f0bd666ca675.tar.bz2 |
Fix sporadic test failures via uma_timeout()
-rw-r--r-- | freebsd/sys/vm/uma.h | 3 | ||||
-rw-r--r-- | freebsd/sys/vm/uma_core.c | 12 | ||||
-rw-r--r-- | testsuite/syscalls01/test_main.c | 17 | ||||
-rw-r--r-- | testsuite/thread01/test_main.c | 11 |
4 files changed, 30 insertions, 13 deletions
diff --git a/freebsd/sys/vm/uma.h b/freebsd/sys/vm/uma.h index 5e0bdd7c..c968e67e 100644 --- a/freebsd/sys/vm/uma.h +++ b/freebsd/sys/vm/uma.h @@ -695,4 +695,7 @@ struct uma_percpu_stat { void uma_reclaim_wakeup(void); void uma_reclaim_worker(void *); +#ifdef __rtems__ +void rtems_uma_drain_timeout(void); +#endif /* __rtems__ */ #endif /* _VM_UMA_H_ */ diff --git a/freebsd/sys/vm/uma_core.c b/freebsd/sys/vm/uma_core.c index fbae47cb..02f743d2 100644 --- a/freebsd/sys/vm/uma_core.c +++ b/freebsd/sys/vm/uma_core.c @@ -3814,3 +3814,15 @@ DB_SHOW_COMMAND(umacache, db_show_umacache) } #endif /* DDB */ #endif /* __rtems__ */ +#ifdef __rtems__ +/* + * This is a helper routine for test programs. The uma_timeout() may need some + * dynamic memory. This could disturb out of memory tests. + */ +void +rtems_uma_drain_timeout(void) +{ + + callout_drain(&uma_callout); +} +#endif /* __rtems__ */ diff --git a/testsuite/syscalls01/test_main.c b/testsuite/syscalls01/test_main.c index a00151bf..af77d48a 100644 --- a/testsuite/syscalls01/test_main.c +++ b/testsuite/syscalls01/test_main.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013 embedded brains GmbH. All rights reserved. + * Copyright (c) 2013, 2018 embedded brains GmbH. All rights reserved. * * embedded brains GmbH * Dornierstr. 4 @@ -38,6 +38,7 @@ #include <sys/socket.h> #include <sys/time.h> #include <sys/filio.h> +#include <vm/uma.h> #include <netinet/in.h> #include <arpa/inet.h> #include <err.h> @@ -1599,23 +1600,15 @@ test_setgethostname(void) assert(in[sizeof(in) - 1] == '\0'); } -static void set_self_prio(rtems_task_priority prio) -{ - rtems_status_code sc; - - sc = rtems_task_set_priority(RTEMS_SELF, prio, &prio); - assert(sc == RTEMS_SUCCESSFUL); -} - static void test_main(void) { /* - * No interruptions by the timer server. The uma_timeout() may need - * some dynamic memory. This could disturb the no memory tests. + * Stop interferences of uma_timeout() which may need some dynamic + * memory. This could disturb the no memory tests. */ - set_self_prio(1); + rtems_uma_drain_timeout(); /* Must be first test to ensure resource checks work */ test_sockets(); diff --git a/testsuite/thread01/test_main.c b/testsuite/thread01/test_main.c index f1cef304..fa15b9f6 100644 --- a/testsuite/thread01/test_main.c +++ b/testsuite/thread01/test_main.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013-2014 embedded brains GmbH. All rights reserved. + * Copyright (c) 2013, 2018 embedded brains GmbH. All rights reserved. * * embedded brains GmbH * Dornierstr. 4 @@ -43,6 +43,8 @@ #include <sys/kthread.h> #include <sys/errno.h> +#include <vm/uma.h> + #include <rtems/bsd/bsd.h> #include <rtems.h> @@ -284,8 +286,15 @@ test_rtems_bsd_get_curthread_or_null(void) static void test_main(void) { + main_task_id = rtems_task_self(); + /* + * Stop interferences of uma_timeout() which may need some dynamic + * memory. This could disturb the no memory tests. + */ + rtems_uma_drain_timeout(); + test_non_bsd_thread(); test_kproc_start(); test_kthread_start(); |