Back to home page

LXR

 
 

    


File indexing completed on 2025-05-11 08:24:41

0001 /*
0002  * SPDX-License-Identifier: BSD-2-Clause
0003  *
0004  * Copyright (C) 2018, Himanshu Sekhar Nayak
0005  *
0006  * Redistribution and use in source and binary forms, with or without
0007  * modification, are permitted provided that the following conditions
0008  * are met:
0009  * 1. Redistributions of source code must retain the above copyright
0010  *    notice, this list of conditions and the following disclaimer.
0011  * 2. Redistributions in binary form must reproduce the above copyright
0012  *    notice, this list of conditions and the following disclaimer in the
0013  *    documentation and/or other materials provided with the distribution.
0014  *
0015  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
0016  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
0017  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
0018  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
0019  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
0020  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
0021  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
0022  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
0023  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
0024  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
0025  * POSSIBILITY OF SUCH DAMAGE.
0026  */
0027 
0028 #if !defined(OPERATION_COUNT)
0029 #define OPERATION_COUNT 100
0030 #endif
0031 
0032 #ifdef HAVE_CONFIG_H
0033 #include "config.h"
0034 #endif
0035 
0036 #include <pthread.h>
0037 #include <tmacros.h>
0038 #include <timesys.h>
0039 #include <rtems/btimer.h>
0040 #include "test_support.h"
0041 
0042 const char rtems_test_name[] = "PSXTMBARRIERATTR01";
0043 
0044 /* forward declarations to avoid warnings */
0045 static void *POSIX_Init(void *argument);
0046 
0047 static pthread_barrierattr_t attr;
0048 
0049 static void benchmark_create_barrierattr(void)
0050 {
0051   benchmark_timer_t end_time;
0052   int               status;
0053 
0054   benchmark_timer_initialize();
0055   status = pthread_barrierattr_init( &attr );
0056   end_time = benchmark_timer_read();
0057   rtems_test_assert( status == 0 );
0058 
0059   put_time(
0060     "pthread_barrierattr_init: only case",
0061     end_time,
0062     1,        /* Only executed once */
0063     0,
0064     0
0065   );
0066 
0067 }
0068 
0069 static void benchmark_barrierattr_setpshared(void)
0070 {
0071   benchmark_timer_t end_time;
0072   int               status;
0073 
0074   benchmark_timer_initialize();
0075   status = pthread_barrierattr_setpshared( &attr, PTHREAD_PROCESS_SHARED );
0076   end_time = benchmark_timer_read();
0077   rtems_test_assert( status == 0 );
0078 
0079   put_time(
0080     "pthread_barrierattr_setpshared: only case",
0081     end_time,
0082     1,        /* Only executed once */
0083     0,
0084     0
0085   );
0086 
0087 }
0088 
0089 static void benchmark_barrierattr_getpshared(void)
0090 {
0091   benchmark_timer_t end_time;
0092   int               status;
0093   int               pshared;
0094 
0095   benchmark_timer_initialize();
0096   status = pthread_barrierattr_getpshared( &attr, &pshared );
0097   end_time = benchmark_timer_read();
0098   rtems_test_assert( status == 0 );
0099   rtems_test_assert( pshared == PTHREAD_PROCESS_SHARED );
0100 
0101   put_time(
0102     "pthread_barrierattr_getpshared: only case",
0103     end_time,
0104     1,        /* Only executed once */
0105     0,
0106     0
0107   );
0108 
0109 }
0110 
0111 static void benchmark_destroy_barrierattr(void)
0112 {
0113   benchmark_timer_t end_time;
0114   int               status;
0115 
0116   benchmark_timer_initialize();
0117   status = pthread_barrierattr_destroy( &attr );
0118   end_time = benchmark_timer_read();
0119   rtems_test_assert( status == 0 );
0120 
0121   put_time(
0122     "pthread_barrierattr_destroy: only case",
0123     end_time,
0124     1,        /* Only executed once */
0125     0,
0126     0
0127   );
0128 
0129 }
0130 
0131 static void *POSIX_Init(
0132   void *argument
0133 )
0134 {
0135 
0136   TEST_BEGIN();
0137 
0138   benchmark_create_barrierattr();
0139   benchmark_barrierattr_setpshared();
0140   benchmark_barrierattr_getpshared();
0141   benchmark_destroy_barrierattr();
0142 
0143   TEST_END();
0144   rtems_test_exit(0);
0145 }
0146 
0147 /* configuration information */
0148 
0149 #define CONFIGURE_APPLICATION_NEEDS_SIMPLE_CONSOLE_DRIVER
0150 #define CONFIGURE_APPLICATION_NEEDS_TIMER_DRIVER
0151 
0152 #define CONFIGURE_MAXIMUM_POSIX_THREADS     1
0153 #define CONFIGURE_POSIX_INIT_THREAD_TABLE
0154 
0155 #define CONFIGURE_INIT
0156 
0157 #include <rtems/confdefs.h>
0158 /* end of file */