diff options
author | Jennifer Averett <jennifer.averett@oarcorp.com> | 2013-12-16 13:13:14 -0600 |
---|---|---|
committer | Jennifer Averett <jennifer.averett@oarcorp.com> | 2013-12-19 14:11:09 -0600 |
commit | fe011a59a4b6fe2879f2c2354e8771c3f8aad6aa (patch) | |
tree | db34e117b4d9add862dc35f3ec0707c8c15be909 /testsuites/sptests/spcpuset01/init.c | |
parent | cpukit/capture: Update the capture engine. (diff) | |
download | rtems-fe011a59a4b6fe2879f2c2354e8771c3f8aad6aa.tar.bz2 |
sptests/spcpuset*: Add tests for fixed size cpu_set_t operations.
This adds five tests for <sys/cpuset.h>. It does not include
tests for CPU_XXX_S methods. The autotools should be able to
avoid enabling the tests unless the toolset has <sys/cpuset.h>.
Diffstat (limited to '')
-rw-r--r-- | testsuites/sptests/spcpuset01/init.c | 155 |
1 files changed, 155 insertions, 0 deletions
diff --git a/testsuites/sptests/spcpuset01/init.c b/testsuites/sptests/spcpuset01/init.c new file mode 100644 index 0000000000..fa0e6a8d7c --- /dev/null +++ b/testsuites/sptests/spcpuset01/init.c @@ -0,0 +1,155 @@ +/* + * Fully exercise CPU_SET() methods + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#define CONFIGURE_INIT +#include <rtems.h> +#include <stdlib.h> +#include <stdio.h> +#include <assert.h> + +#include <sys/cpuset.h> +#include "system.h" + +static void test_cpu_zero_case_1(void) +{ + size_t i; + + /* + * Set to all zeros and verify + */ + puts( "Exercise CPU_ZERO, CPU_ISSET, and CPU_COUNT" ); + CPU_ZERO(&set3); + + /* test if all bits clear */ + for (i=0 ; i<CPU_SETSIZE ; i++) { + rtems_test_assert( CPU_ISSET(i, &set3) == 0 ); + } + rtems_test_assert( CPU_COUNT(&set3) == 0 ); + +} + +static void test_cpu_fill_case_1(void) +{ + size_t i; + + /* + * Set to all zeros and verify + */ + puts( "Exercise CPU_FILL, CPU_ISSET, and CPU_COUNT" ); + CPU_FILL(&set1); + + /* test if all bits clear */ + for (i=0 ; i<CPU_SETSIZE ; i++) { + rtems_test_assert( CPU_ISSET(i, &set1) == 1 ); + } + rtems_test_assert( CPU_COUNT(&set1) == _NCPUBITS ); +} + +static void test_cpu_equal_case_1(void) +{ + /* + * CPU_EQUAL + */ + puts( "Exercise CPU_ZERO, CPU_EQUAL, CPU_CMP, and CPU_EMPTY" ); + CPU_ZERO(&set1); + CPU_ZERO(&set2); + + /* test that all bits are equal */ + rtems_test_assert( CPU_EQUAL(&set1, &set2) ); + + /* compare all bits */ + rtems_test_assert( CPU_CMP(&set1, &set2) ); + + /* compare all bits */ + rtems_test_assert( CPU_EMPTY(&set1) ); +} + +static void test_cpu_set_case_1(size_t cpu) +{ + size_t i; + + /* + * Set to all zeros and verify + */ + printf( "Exercise CPU_ZERO, CPU_SET(%u), and CPU_ISET\n", cpu ); + CPU_ZERO(&set1); + CPU_SET(cpu, &set1); + + /* test if all bits except 1 clear */ + for (i=0 ; i<CPU_SETSIZE ; i++) { + if (i==cpu) + rtems_test_assert( CPU_ISSET(i, &set1) == 1 ); + else + rtems_test_assert( CPU_ISSET(i, &set1) == 0 ); + + rtems_test_assert( ! CPU_EMPTY(&set1) ); + } +} + +static void test_cpu_clr_case_1(size_t cpu) +{ + size_t i; + + /* + * Set to all zeros and verify + */ + printf( "Exercise CPU_FILL, CPU_CLR(%u), and CPU_ISET\n", cpu ); + CPU_FILL(&set1); + CPU_CLR(cpu, &set1); + + /* test if all bits except 5 are set */ + for (i=0 ; i<CPU_SETSIZE ; i++) { + if (i==cpu) + rtems_test_assert( CPU_ISSET(i, &set1) == 0 ); + else + rtems_test_assert( CPU_ISSET(i, &set1) == 1 ); + } +} + +static void test_cpu_copy_case_1(void) +{ + size_t i; + + /* + * CPU_EQUAL + */ + puts( "Exercise CPU_ZERO, CPU_COPY, and CPU_ISET" ); + CPU_ZERO(&set1); + CPU_FILL(&set2); + + CPU_COPY(&set2, &set1); + + /* test if all bits clear in set2 */ + for (i=0 ; i<CPU_SETSIZE ; i++) { + rtems_test_assert( CPU_ISSET(i, &set2) == 0 ); + } +} + +rtems_task Init( + rtems_task_argument ignored +) +{ + size_t i; + + puts( "*** CPUSET01 Test ***" ); + + test_cpu_zero_case_1(); + test_cpu_fill_case_1(); + test_cpu_equal_case_1(); + test_cpu_copy_case_1(); + + for (i=0 ; i<CPU_SETSIZE ; i++) { + test_cpu_set_case_1(i); + test_cpu_clr_case_1(i); + } + + cpuset_logic_test(); + + puts( "*** END OF CPUSET01 Test ***" ); + exit( 0 ); +} |