diff --git a/os/common/oslib/include/chmempools.h b/os/common/oslib/include/chmempools.h index d617f648a..71f53a67d 100644 --- a/os/common/oslib/include/chmempools.h +++ b/os/common/oslib/include/chmempools.h @@ -120,21 +120,19 @@ typedef struct { */ #define _GUARDEDMEMORYPOOL_DATA(name, size) { \ _SEMAPHORE_DATA(name.sem, (cnt_t)0), \ - NULL, \ - size, \ - NULL \ + _MEMORYPOOL_DATA(NULL, size, NULL) \ } /** * @brief Static guarded memory pool initializer. - * @details Statically initialized guardedmemory pools require no explicit + * @details Statically initialized guarded memory pools require no explicit * initialization using @p chGuardedPoolInit(). * * @param[in] name the name of the guarded memory pool variable * @param[in] size size of the memory pool contained objects */ #define GUARDEDMEMORYPOOL_DECL(name, size) \ - memory_pool_t name = _MEMORYPOOL_DATA(name, size) + guarded_memory_pool_t name = _GUARDEDMEMORYPOOL_DATA(name, size) #endif /* CH_CFG_USE_SEMAPHORES == TRUE */ /*===========================================================================*/ diff --git a/os/hal/ports/STM32/LLD/OTGv1/usb_lld.h b/os/hal/ports/STM32/LLD/OTGv1/usb_lld.h index b08657008..8b3ee8957 100644 --- a/os/hal/ports/STM32/LLD/OTGv1/usb_lld.h +++ b/os/hal/ports/STM32/LLD/OTGv1/usb_lld.h @@ -265,7 +265,7 @@ typedef struct { #endif /* End of the mandatory fields.*/ /** - * @brief Total transmit transfer size. + * @brief Total receive transfer size. */ size_t totsize; } USBOutEndpointState; diff --git a/test/nasa_osal/patch.xml b/test/nasa_osal/patch.xml index 879b2ed23..c617cd8f6 100644 --- a/test/nasa_osal/patch.xml +++ b/test/nasa_osal/patch.xml @@ -1,5 +1,28 @@ - + + + + + + + + diff --git a/test/nil/configuration.xml b/test/nil/configuration.xml index 7488bf61f..118c70153 100644 --- a/test/nil/configuration.xml +++ b/test/nil/configuration.xml @@ -818,9 +818,9 @@ test_assert(msg1 == MSG_OK, "wrong wake-up message");]]> - @@ -927,23 +927,24 @@ test_assert(msg1 == MSG_TIMEOUT, "wrong wake-up message");]]> This sequence tests the ChibiOS/NIL functionalities related to memory pools. - - Loading and empting the memory pool. + Loading and empting a memory pool. The memory pool functionality is tested by loading and empting it, all conditions are tested. @@ -982,7 +983,7 @@ static void *null_provider(size_t size, unsigned align) { - @@ -1005,7 +1006,7 @@ static void *null_provider(size_t size, unsigned align) { - @@ -1017,7 +1018,7 @@ static void *null_provider(size_t size, unsigned align) { - @@ -1040,12 +1041,140 @@ static void *null_provider(size_t size, unsigned align) { - + + + Loading and empting a guarded memory pool without waiting. + + + The memory pool functionality is tested by loading and empting it, all conditions are tested. + + + + + + + + + + + + + + + + + + + Adding the objects to the pool using chGuardedPoolLoadArray(). + + + + + + + + + + + Emptying the pool using chGuardedPoolAllocTimeout(). + + + + + + + + + + + Now must be empty. + + + + + + + + + + + Adding the objects to the pool using chGuardedPoolFree(). + + + + + + + + + + + Emptying the pool using chGuardedPoolAllocTimeout() again. + + + + + + + + + + + Now must be empty again. + + + + + + + + + + + + + Guarded Memory Pools timeout. + + + The timeout features for the Guarded Memory Pools is tested. + + + + + + + + + + + + + + + + + + + Trying to allocate with 100mS timeout, must fail because the pool is empty. + + + + + + + + + + diff --git a/test/nil/patch.xml b/test/nil/patch.xml index 879b2ed23..c617cd8f6 100644 --- a/test/nil/patch.xml +++ b/test/nil/patch.xml @@ -1,5 +1,28 @@ - + + + + + + + + diff --git a/test/nil/source/test/test_root.c b/test/nil/source/test/test_root.c index f261965cb..1516898c5 100644 --- a/test/nil/source/test/test_root.c +++ b/test/nil/source/test/test_root.c @@ -61,38 +61,38 @@ const testcase_t * const *test_suite[] = { /* Shared code. */ /*===========================================================================*/ -semaphore_t gsem1, gsem2; -thread_reference_t gtr1; - -/* - * Support thread. - */ -THD_WORKING_AREA(wa_test_support, 128); -THD_FUNCTION(test_support, arg) { -#if CH_CFG_USE_EVENTS == TRUE - thread_t *tp = (thread_t *)arg; -#else - (void)arg; -#endif - - /* Initializing global resources.*/ - chSemObjectInit(&gsem1, 0); - chSemObjectInit(&gsem2, 0); - - while (true) { - chSysLock(); - if (chSemGetCounterI(&gsem1) < 0) - chSemSignalI(&gsem1); - chSemResetI(&gsem2, 0); - chThdResumeI(>r1, MSG_OK); -#if CH_CFG_USE_EVENTS == TRUE - chEvtSignalI(tp, 0x55); -#endif - chSchRescheduleS(); - chSysUnlock(); - - chThdSleepMilliseconds(250); - } +semaphore_t gsem1, gsem2; +thread_reference_t gtr1; + +/* + * Support thread. + */ +THD_WORKING_AREA(wa_test_support, 128); +THD_FUNCTION(test_support, arg) { +#if CH_CFG_USE_EVENTS == TRUE + thread_t *tp = (thread_t *)arg; +#else + (void)arg; +#endif + + /* Initializing global resources.*/ + chSemObjectInit(&gsem1, 0); + chSemObjectInit(&gsem2, 0); + + while (true) { + chSysLock(); + if (chSemGetCounterI(&gsem1) < 0) + chSemSignalI(&gsem1); + chSemResetI(&gsem2, 0); + chThdResumeI(>r1, MSG_OK); +#if CH_CFG_USE_EVENTS == TRUE + chEvtSignalI(tp, 0x55); +#endif + chSchRescheduleS(); + chSysUnlock(); + + chThdSleepMilliseconds(250); + } } /** @} */ diff --git a/test/nil/source/test/test_root.h b/test/nil/source/test/test_root.h index ce6d8d457..ee0c42d0b 100644 --- a/test/nil/source/test/test_root.h +++ b/test/nil/source/test/test_root.h @@ -1,5 +1,5 @@ /* - ChibiOS - Copyright (C) 2006..2016 Giovanni Di Sirio + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -48,12 +48,12 @@ extern "C" { /* Shared definitions. */ /*===========================================================================*/ -#define TEST_SUITE_NAME "ChibiOS/NIL Test Suite" - -extern semaphore_t gsem1, gsem2; -extern thread_reference_t gtr1; -extern THD_WORKING_AREA(wa_test_support, 128); - +#define TEST_SUITE_NAME "ChibiOS/NIL Test Suite" + +extern semaphore_t gsem1, gsem2; +extern thread_reference_t gtr1; +extern THD_WORKING_AREA(wa_test_support, 128); + THD_FUNCTION(test_support, arg); #endif /* _SPC5_TEST_ROOT_H_ */ diff --git a/test/nil/source/test/test_sequence_001.c b/test/nil/source/test/test_sequence_001.c index 858930775..4be1c4785 100644 --- a/test/nil/source/test/test_sequence_001.c +++ b/test/nil/source/test/test_sequence_001.c @@ -1,5 +1,5 @@ /* - ChibiOS - Copyright (C) 2006..2016 Giovanni Di Sirio + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/test/nil/source/test/test_sequence_001.h b/test/nil/source/test/test_sequence_001.h index 9ba5dc4be..83ef96518 100644 --- a/test/nil/source/test/test_sequence_001.h +++ b/test/nil/source/test/test_sequence_001.h @@ -1,5 +1,5 @@ /* - ChibiOS - Copyright (C) 2006..2016 Giovanni Di Sirio + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/test/nil/source/test/test_sequence_002.c b/test/nil/source/test/test_sequence_002.c index 946b6d05e..bd626683b 100644 --- a/test/nil/source/test/test_sequence_002.c +++ b/test/nil/source/test/test_sequence_002.c @@ -1,5 +1,5 @@ /* - ChibiOS - Copyright (C) 2006..2016 Giovanni Di Sirio + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -38,8 +38,8 @@ * Shared code. ****************************************************************************/ -#include "ch.h" - +#include "ch.h" + static semaphore_t sem1; /**************************************************************************** diff --git a/test/nil/source/test/test_sequence_002.h b/test/nil/source/test/test_sequence_002.h index b408f96f4..bd7b6c764 100644 --- a/test/nil/source/test/test_sequence_002.h +++ b/test/nil/source/test/test_sequence_002.h @@ -1,5 +1,5 @@ /* - ChibiOS - Copyright (C) 2006..2016 Giovanni Di Sirio + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/test/nil/source/test/test_sequence_003.c b/test/nil/source/test/test_sequence_003.c index e0ae074e8..b58bd3b69 100644 --- a/test/nil/source/test/test_sequence_003.c +++ b/test/nil/source/test/test_sequence_003.c @@ -1,5 +1,5 @@ /* - ChibiOS - Copyright (C) 2006..2016 Giovanni Di Sirio + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/test/nil/source/test/test_sequence_003.h b/test/nil/source/test/test_sequence_003.h index ca7045528..587acc5de 100644 --- a/test/nil/source/test/test_sequence_003.h +++ b/test/nil/source/test/test_sequence_003.h @@ -1,5 +1,5 @@ /* - ChibiOS - Copyright (C) 2006..2016 Giovanni Di Sirio + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/test/nil/source/test/test_sequence_004.c b/test/nil/source/test/test_sequence_004.c index 4cddf5fe4..6cf37b289 100644 --- a/test/nil/source/test/test_sequence_004.c +++ b/test/nil/source/test/test_sequence_004.c @@ -1,5 +1,5 @@ /* - ChibiOS - Copyright (C) 2006..2016 Giovanni Di Sirio + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -38,10 +38,10 @@ * Shared code. ****************************************************************************/ -#define ALLOWED_DELAY MS2ST(5) -#define MB_SIZE 4 - -static msg_t mb_buffer[MB_SIZE]; +#define ALLOWED_DELAY MS2ST(5) +#define MB_SIZE 4 + +static msg_t mb_buffer[MB_SIZE]; static MAILBOX_DECL(mb1, mb_buffer, MB_SIZE); /**************************************************************************** diff --git a/test/nil/source/test/test_sequence_004.h b/test/nil/source/test/test_sequence_004.h index 4e0e48f6a..3ecaa4259 100644 --- a/test/nil/source/test/test_sequence_004.h +++ b/test/nil/source/test/test_sequence_004.h @@ -1,5 +1,5 @@ /* - ChibiOS - Copyright (C) 2006..2016 Giovanni Di Sirio + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/test/nil/source/test/test_sequence_005.c b/test/nil/source/test/test_sequence_005.c index 9d14cfdb6..fa3fc8eab 100644 --- a/test/nil/source/test/test_sequence_005.c +++ b/test/nil/source/test/test_sequence_005.c @@ -1,5 +1,5 @@ /* - ChibiOS - Copyright (C) 2006..2016 Giovanni Di Sirio + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -29,6 +29,8 @@ * *

Test Cases

* - @subpage test_005_001 + * - @subpage test_005_002 + * - @subpage test_005_003 * . */ @@ -36,17 +38,18 @@ * Shared code. ****************************************************************************/ -#define MEMORY_POOL_SIZE 4 - -static uint32_t objects[MEMORY_POOL_SIZE]; -static MEMORYPOOL_DECL(mp1, sizeof (uint32_t), NULL); - -static void *null_provider(size_t size, unsigned align) { - - (void)size; - (void)align; - - return NULL; +#define MEMORY_POOL_SIZE 4 + +static uint32_t objects[MEMORY_POOL_SIZE]; +static MEMORYPOOL_DECL(mp1, sizeof (uint32_t), NULL); +static GUARDEDMEMORYPOOL_DECL(gmp1, sizeof (uint32_t)); + +static void *null_provider(size_t size, unsigned align) { + + (void)size; + (void)align; + + return NULL; } /**************************************************************************** @@ -54,7 +57,7 @@ static void *null_provider(size_t size, unsigned align) { ****************************************************************************/ /** - * @page test_005_001 Loading and empting the memory pool + * @page test_005_001 Loading and empting a memory pool * *

Description

* The memory pool functionality is tested by loading and empting it, @@ -128,12 +131,116 @@ static void test_005_001_execute(void) { } static const testcase_t test_005_001 = { - "Loading and empting the memory pool", + "Loading and empting a memory pool", test_005_001_setup, NULL, test_005_001_execute }; +/** + * @page test_005_002 Loading and empting a guarded memory pool without waiting + * + *

Description

+ * The memory pool functionality is tested by loading and empting it, + * all conditions are tested. + * + *

Test Steps

+ * - Adding the objects to the pool using chGuardedPoolLoadArray(). + * - Emptying the pool using chGuardedPoolAllocTimeout(). + * - Now must be empty. + * - Adding the objects to the pool using chGuardedPoolFree(). + * - Emptying the pool using chGuardedPoolAllocTimeout() again. + * - Now must be empty again. + * . + */ + +static void test_005_002_setup(void) { + chGuardedPoolObjectInit(&gmp1, sizeof (uint32_t)); +} + +static void test_005_002_execute(void) { + unsigned i; + + /* Adding the objects to the pool using chGuardedPoolLoadArray().*/ + test_set_step(1); + { + chGuardedPoolLoadArray(&gmp1, objects, MEMORY_POOL_SIZE); + } + + /* Emptying the pool using chGuardedPoolAllocTimeout().*/ + test_set_step(2); + { + for (i = 0; i < MEMORY_POOL_SIZE; i++) + test_assert(chGuardedPoolAllocTimeout(&gmp1, TIME_IMMEDIATE) != NULL, "list empty"); + } + + /* Now must be empty.*/ + test_set_step(3); + { + test_assert(chGuardedPoolAllocTimeout(&gmp1, TIME_IMMEDIATE) == NULL, "list not empty"); + } + + /* Adding the objects to the pool using chGuardedPoolFree().*/ + test_set_step(4); + { + for (i = 0; i < MEMORY_POOL_SIZE; i++) + chGuardedPoolFree(&gmp1, &objects[i]); + } + + /* Emptying the pool using chGuardedPoolAllocTimeout() again.*/ + test_set_step(5); + { + for (i = 0; i < MEMORY_POOL_SIZE; i++) + test_assert(chGuardedPoolAllocTimeout(&gmp1, TIME_IMMEDIATE) != NULL, "list empty"); + } + + /* Now must be empty again.*/ + test_set_step(6); + { + test_assert(chGuardedPoolAllocTimeout(&gmp1, TIME_IMMEDIATE) == NULL, "list not empty"); + } +} + +static const testcase_t test_005_002 = { + "Loading and empting a guarded memory pool without waiting", + test_005_002_setup, + NULL, + test_005_002_execute +}; + +/** + * @page test_005_003 Guarded Memory Pools timeout + * + *

Description

+ * The timeout features for the Guarded Memory Pools is tested. + * + *

Test Steps

+ * - Trying to allocate with 100mS timeout, must fail because the pool + * is empty. + * . + */ + +static void test_005_003_setup(void) { + chGuardedPoolObjectInit(&gmp1, sizeof (uint32_t)); +} + +static void test_005_003_execute(void) { + + /* Trying to allocate with 100mS timeout, must fail because the pool + is empty.*/ + test_set_step(1); + { + test_assert(chGuardedPoolAllocTimeout(&gmp1, MS2ST(100)) == NULL, "list not empty"); + } +} + +static const testcase_t test_005_003 = { + "Guarded Memory Pools timeout", + test_005_003_setup, + NULL, + test_005_003_execute +}; + /**************************************************************************** * Exported data. ****************************************************************************/ @@ -143,5 +250,7 @@ static const testcase_t test_005_001 = { */ const testcase_t * const test_sequence_005[] = { &test_005_001, + &test_005_002, + &test_005_003, NULL }; diff --git a/test/nil/source/test/test_sequence_005.h b/test/nil/source/test/test_sequence_005.h index a6d54f033..4cb8e1db0 100644 --- a/test/nil/source/test/test_sequence_005.h +++ b/test/nil/source/test/test_sequence_005.h @@ -1,5 +1,5 @@ /* - ChibiOS - Copyright (C) 2006..2016 Giovanni Di Sirio + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License.