[rtems commit] psxtmonce01: New test written by Himanshu40 as part of GCI2018

Sebastian Huber sebastian.huber at embedded-brains.de
Wed Nov 7 06:36:14 UTC 2018


It would be nice if GCI2018 patches are sent to devel at rtems.org for 
review before they are committed.

On 07/11/2018 01:36, Joel Sherrill wrote:
> Module:    rtems
> Branch:    master
> Commit:    9bb395167a1cc7d8551d217825313bffcd0d8e1b
> Changeset: http://git.rtems.org/rtems/commit/?id=9bb395167a1cc7d8551d217825313bffcd0d8e1b
>
> Author:    Himanshu40 <himanshuwindows8.1 at gmail.com>
> Date:      Wed Nov  7 00:17:10 2018 +0530
>
> psxtmonce01: New test written by Himanshu40 as part of GCI2018
>
> ---
>
>   testsuites/psxtmtests/Makefile.am                 | 11 +++
>   testsuites/psxtmtests/configure.ac                |  1 +
>   testsuites/psxtmtests/psxtmonce01/Makefile.am     | 27 ++++++++
>   testsuites/psxtmtests/psxtmonce01/init.c          | 82 +++++++++++++++++++++++
>   testsuites/psxtmtests/psxtmonce01/psxtmonce01.doc | 18 +++++
>   5 files changed, 139 insertions(+)
>
> diff --git a/testsuites/psxtmtests/Makefile.am b/testsuites/psxtmtests/Makefile.am
> index 2669107..1607ac6 100644
> --- a/testsuites/psxtmtests/Makefile.am
> +++ b/testsuites/psxtmtests/Makefile.am
> @@ -338,6 +338,17 @@ psxtmnanosleep02_CPPFLAGS = $(AM_CPPFLAGS) \
>   	-DOPERATION_COUNT=$(OPERATION_COUNT)
>   endif
>   
> +if TEST_psxtmonce01
> +psxtm_tests += psxtmonce01
> +psxtm_docs += psxtmonce01/psxtmonce01.doc
> +psxtmonce01_SOURCES = psxtmonce01/init.c \
> +	../tmtests/include/timesys.h ../support/src/tmtests_empty_function.c \
> +	../support/src/tmtests_support.c
> +psxtmonce01_CPPFLAGS = $(AM_CPPFLAGS) $(TEST_FLAGS_psxtmonce01) \
> +	$(support_includes) -I$(top_srcdir)/../tmtests/include \
> +	-DOPERATION_COUNT=$(OPERATION_COUNT)
> +endif
> +
>   if TEST_psxtmrwlock01
>   psxtm_tests += psxtmrwlock01
>   psxtm_docs += psxtmrwlock01/psxtmrwlock01.doc
> diff --git a/testsuites/psxtmtests/configure.ac b/testsuites/psxtmtests/configure.ac
> index 59192d0..0c3b143 100644
> --- a/testsuites/psxtmtests/configure.ac
> +++ b/testsuites/psxtmtests/configure.ac
> @@ -59,6 +59,7 @@ RTEMS_TEST_CHECK([psxtmmutex06])
>   RTEMS_TEST_CHECK([psxtmmutex07])
>   RTEMS_TEST_CHECK([psxtmnanosleep01])
>   RTEMS_TEST_CHECK([psxtmnanosleep02])
> +RTEMS_TEST_CHECK([psxtmonce01])
>   RTEMS_TEST_CHECK([psxtmrwlock01])
>   RTEMS_TEST_CHECK([psxtmrwlock02])
>   RTEMS_TEST_CHECK([psxtmrwlock03])
> diff --git a/testsuites/psxtmtests/psxtmonce01/Makefile.am b/testsuites/psxtmtests/psxtmonce01/Makefile.am
> new file mode 100644
> index 0000000..242e393
> --- /dev/null
> +++ b/testsuites/psxtmtests/psxtmonce01/Makefile.am
> @@ -0,0 +1,27 @@
> +MANAGERS = all
> +
> +rtems_tests_PROGRAMS = psxtmonce01
> +psxtmonce01_SOURCES  = init.c
> +psxtmonce01_SOURCES += ../../tmtests/include/timesys.h
> +psxtmonce01_SOURCES += ../../support/src/tmtests_empty_function.c
> +psxtmonce01_SOURCES += ../../support/src/tmtests_support.c
> +
> +dist_rtems_tests_DATA = psxtmonce01.doc
> +
> +include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP at .cfg
> +include $(top_srcdir)/../automake/compile.am
> +include $(top_srcdir)/../automake/leaf.am
> +
> +OPERATION_COUNT = @OPERATION_COUNT@
> +AM_CPPFLAGS += -I$(top_srcdir)/../tmtests/include
> +AM_CPPFLAGS += -DOPERATION_COUNT=$(OPERATION_COUNT)
> +AM_CPPFLAGS += -I$(top_srcdir)/../support/include
> +
> +LINK_OBJS = $(psxtmonce01_OBJECTS) $(psxtmonce01_LDADD)
> +LINK_LIBS = $(psxtmonce01_LDLIBS)
> +
> +psxtmonce01$(EXEEXT): $(psxtmonce01_OBJECTS) $(psxtmonce01_DEPENDENCIES)
> +	@rm -f psxtmonce01$(EXEEXT)
> +	$(make-exe)
> +
> +include $(top_srcdir)/../automake/local.am

This testsuites/psxtmtests/psxtmonce01/Makefile.am is superfluous.

> diff --git a/testsuites/psxtmtests/psxtmonce01/init.c b/testsuites/psxtmtests/psxtmonce01/init.c
> new file mode 100644
> index 0000000..5f8391a
> --- /dev/null
> +++ b/testsuites/psxtmtests/psxtmonce01/init.c
> @@ -0,0 +1,82 @@
> +/*
> + *  COPYRIGHT (c) 2018.
> + *  Himanshu Sekhar Nayak GCI 2018
> + *
> + *  Permission to use, copy, modify, and/or distribute this software
> + *  for any purpose with or without fee is hereby granted.
> + *
> + *  THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
> + *  WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
> + *  WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR
> + *  BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES
> + *  OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
> + *  WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
> + *  ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
> + */
> +
> +#ifdef HAVE_CONFIG_H
> +#include "config.h"
> +#endif
> +
> +#include <pthread.h>
> +#include <tmacros.h>
> +#include <timesys.h>
> +#include <rtems/btimer.h>
> +#include "test_support.h"
> +
> +const char rtems_test_name[] = "PSXTMONCE01";
> +
> +/* forward declarations to avoid warnings */
> +void *POSIX_Init(void *argument);
> +void benchmark_first_time(void);
> +void initRoutine(void);

Why not use static functions?

> +
> +pthread_once_t once_control = PTHREAD_ONCE_INIT;
> +
> +void initRoutine(void)
> +{
> +}
> +
> +void benchmark_first_time(void)
> +{
> +  long end_time;
> +  int  status;
> +
> +  benchmark_timer_initialize();
> +  status = pthread_once( &once_control, initRoutine );
> +  end_time = benchmark_timer_read();
> +  rtems_test_assert( status == 0 );
> +
> +  put_time(
> +    "pthread_once: first time",
> +    end_time,
> +    1,        /* Only executed once */
> +    0,
> +    0
> +  );
> +}
> +
> +void *POSIX_Init(
> +  void *argument
> +)
> +{
> +
> +  TEST_BEGIN();
> +  benchmark_first_time();
> +  TEST_END();
> +
> +  rtems_test_exit(0);
> +}
> +
> +/* configuration information */
> +
> +#define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER

Tests should use this console driver:

#define CONFIGURE_APPLICATION_NEEDS_SIMPLE_CONSOLE_DRIVER

This is particularly important for timing tests.

> +#define CONFIGURE_APPLICATION_NEEDS_TIMER_DRIVER

Could we please use the <rtems/counter.h> for new timing tests.

> +
> +#define CONFIGURE_MAXIMUM_POSIX_THREADS     1
> +#define CONFIGURE_POSIX_INIT_THREAD_TABLE
> +
> +#define CONFIGURE_INIT
> +
> +#include <rtems/confdefs.h>
> +/* end of file */
> diff --git a/testsuites/psxtmtests/psxtmonce01/psxtmonce01.doc b/testsuites/psxtmtests/psxtmonce01/psxtmonce01.doc
> new file mode 100644
> index 0000000..cd7b2ea
> --- /dev/null
> +++ b/testsuites/psxtmtests/psxtmonce01/psxtmonce01.doc
> @@ -0,0 +1,18 @@
> +#  COPYRIGHT (c) 2018.
> +#  Himanshu Sekhar Nayak GCI 2018
> +#
> +#  Permission to use, copy, modify, and/or distribute this software
> +#  for any purpose with or without fee is hereby granted.
> +#
> +#  THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
> +#  WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
> +#  WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR
> +#  BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES
> +#  OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
> +#  WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
> +#  ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
> +#
> +
> +This test benchmarks the following operations:
> +
> ++ pthread_once - first time, empty initialization method
>
> _______________________________________________
> vc mailing list
> vc at rtems.org
> http://lists.rtems.org/mailman/listinfo/vc

-- 
Sebastian Huber, embedded brains GmbH

Address : Dornierstr. 4, D-82178 Puchheim, Germany
Phone   : +49 89 189 47 41-16
Fax     : +49 89 189 47 41-09
E-Mail  : sebastian.huber at embedded-brains.de
PGP     : Public key available on request.

Diese Nachricht ist keine geschäftliche Mitteilung im Sinne des EHUG.



More information about the devel mailing list