![]() |
|
|||
File indexing completed on 2025-05-11 08:24:42
0001 /* SPDX-License-Identifier: BSD-2-Clause */ 0002 0003 /* 0004 * COPYRIGHT (c) 1989-2013. 0005 * On-Line Applications Research Corporation (OAR). 0006 * 0007 * Redistribution and use in source and binary forms, with or without 0008 * modification, are permitted provided that the following conditions 0009 * are met: 0010 * 1. Redistributions of source code must retain the above copyright 0011 * notice, this list of conditions and the following disclaimer. 0012 * 2. Redistributions in binary form must reproduce the above copyright 0013 * notice, this list of conditions and the following disclaimer in the 0014 * documentation and/or other materials provided with the distribution. 0015 * 0016 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 0017 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 0018 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 0019 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 0020 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 0021 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 0022 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 0023 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 0024 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 0025 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 0026 * POSSIBILITY OF SUCH DAMAGE. 0027 */ 0028 0029 #ifdef HAVE_CONFIG_H 0030 #include "config.h" 0031 #endif 0032 0033 #include <tmacros.h> 0034 #include <timesys.h> 0035 #include "test_support.h" 0036 #include <pthread.h> 0037 #include <sched.h> 0038 #include <rtems/btimer.h> 0039 0040 const char rtems_test_name[] = "PSXTMTHREAD 03"; 0041 0042 /* forward declarations to avoid warnings */ 0043 void *POSIX_Init(void *argument); 0044 void *Middle(void *argument); 0045 void *Low(void *argument); 0046 0047 void *Low( 0048 void *argument 0049 ) 0050 { 0051 benchmark_timer_t end_time; 0052 0053 /* 0054 * Now we have finished the thread startup overhead, 0055 * so let other threads run. When we return, we can 0056 * finish the benchmark. 0057 */ 0058 sched_yield(); 0059 /* let other threads run */ 0060 0061 end_time = benchmark_timer_read(); 0062 0063 put_time( 0064 "pthread_exit: only case", 0065 end_time, 0066 OPERATION_COUNT, 0067 0, 0068 0 0069 ); 0070 0071 TEST_END(); 0072 rtems_test_exit( 0 ); 0073 return NULL; 0074 } 0075 0076 void *Middle( 0077 void *argument 0078 ) 0079 { 0080 /* 0081 * Now we have finished the thread startup overhead, 0082 * so let other threads run. When we return, we can 0083 * finish the benchmark. 0084 */ 0085 sched_yield(); 0086 /* let other threads run */ 0087 0088 pthread_exit( NULL ); 0089 return NULL; 0090 } 0091 0092 void *POSIX_Init( 0093 void *argument 0094 ) 0095 { 0096 int i; 0097 int status; 0098 pthread_t threadId; 0099 0100 TEST_BEGIN(); 0101 0102 for ( i=0 ; i < OPERATION_COUNT - 1 ; i++ ) { 0103 status = pthread_create( &threadId, NULL, Middle, NULL ); 0104 rtems_test_assert( !status ); 0105 } 0106 0107 status = pthread_create( &threadId, NULL, Low, NULL ); 0108 rtems_test_assert( !status ); 0109 0110 /* 0111 * Let the other threads start so the thread startup overhead, 0112 * is accounted for. When we return, we can start the benchmark. 0113 */ 0114 sched_yield(); 0115 /* let other threads run */ 0116 0117 /* start the timer and switch through all the other tasks */ 0118 benchmark_timer_initialize(); 0119 pthread_exit( NULL ); 0120 return NULL; 0121 } 0122 0123 /* configuration information */ 0124 0125 #define CONFIGURE_APPLICATION_NEEDS_SIMPLE_CONSOLE_DRIVER 0126 #define CONFIGURE_APPLICATION_NEEDS_TIMER_DRIVER 0127 0128 #define CONFIGURE_MAXIMUM_POSIX_THREADS OPERATION_COUNT + 2 0129 #define CONFIGURE_POSIX_INIT_THREAD_TABLE 0130 0131 #define CONFIGURE_INIT 0132 0133 #include <rtems/confdefs.h> 0134 /* end of file */
[ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |
![]() ![]() |