File indexing completed on 2025-05-11 08:24:37
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029 #ifdef HAVE_CONFIG_H
0030 #include "config.h"
0031 #endif
0032
0033 #define _GNU_SOURCE 1
0034 #include <sys/resource.h>
0035 #undef _GNU_SOURCE
0036
0037 #include <sys/time.h>
0038 #include <errno.h>
0039
0040 #include <tmacros.h>
0041 #include "test_support.h"
0042
0043 const char rtems_test_name[] = "PSXGETRUSAGE 1";
0044
0045
0046
0047 #define CONFIGURE_APPLICATION_NEEDS_SIMPLE_CONSOLE_DRIVER
0048 #define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER
0049
0050 #define CONFIGURE_MAXIMUM_TASKS 1
0051 #define CONFIGURE_INITIAL_EXTENSIONS RTEMS_TEST_INITIAL_EXTENSION
0052
0053 #define CONFIGURE_RTEMS_INIT_TASKS_TABLE
0054
0055 #define CONFIGURE_INIT
0056
0057 #include <rtems/confdefs.h>
0058
0059 rtems_task Init(
0060 rtems_task_argument argument
0061 )
0062 {
0063 int sc;
0064 struct rusage usage;
0065
0066 TEST_BEGIN();
0067
0068 puts( "getrusage( RUSAGE_SELF, NULL ) -- EFAULT" );
0069 sc = getrusage( RUSAGE_SELF, NULL );
0070 rtems_test_assert( sc == -1 );
0071 rtems_test_assert( errno == EFAULT );
0072
0073 puts( "getrusage( RUSAGE_CHILDREN, &usage ) -- ENOSYS" );
0074 sc = getrusage( RUSAGE_CHILDREN, &usage );
0075 rtems_test_assert( sc == -1 );
0076 rtems_test_assert( errno == ENOSYS );
0077
0078 puts( "getrusage( 77, &usage ) -- EINVAL" );
0079 sc = getrusage( 77, &usage );
0080 rtems_test_assert( sc == -1 );
0081 rtems_test_assert( errno == EINVAL );
0082
0083 puts( "Consume CPU long enough to have non-zero usage" );
0084 rtems_test_spin_for_ticks( 5 );
0085
0086 puts( "getrusage( RUSAGE_SELF, &usage ) -- 0" );
0087 sc = getrusage( RUSAGE_SELF, &usage );
0088 rtems_test_assert( sc == 0 );
0089
0090
0091 rtems_test_assert( usage.ru_utime.tv_sec == 0 );
0092 rtems_test_assert( usage.ru_utime.tv_usec != 0 );
0093
0094
0095 rtems_test_assert( usage.ru_utime.tv_sec != usage.ru_stime.tv_sec );
0096 rtems_test_assert( usage.ru_utime.tv_usec != usage.ru_stime.tv_usec );
0097
0098 puts( "getrusage( RUSAGE_THREAD, &usage ) -- 0" );
0099 sc = getrusage( RUSAGE_THREAD, &usage );
0100 rtems_test_assert( sc == 0 );
0101
0102
0103 rtems_test_assert( usage.ru_utime.tv_sec != 0 ||
0104 usage.ru_utime.tv_usec != 0 );
0105 rtems_test_assert( usage.ru_stime.tv_sec == 0 &&
0106 usage.ru_stime.tv_usec == 0 );
0107
0108 TEST_END();
0109
0110 rtems_test_exit(0);
0111 }