File indexing completed on 2025-05-11 08:24:33
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
0030
0031
0032
0033 #ifdef HAVE_CONFIG_H
0034 #include "config.h"
0035 #endif
0036
0037 #include "system.h"
0038 #include <rtems/malloc.h>
0039 #include <string.h>
0040 #include <stdlib.h>
0041
0042 #define NUM_PASSES 100
0043
0044 rtems_task Task_1_through_5(
0045 rtems_task_argument argument
0046 )
0047 {
0048 int i;
0049 unsigned int passes = 0;
0050 rtems_id tid;
0051 rtems_time_of_day time;
0052 rtems_status_code status;
0053 unsigned char *mem_ptr;
0054 int mem_amt;
0055
0056 status = rtems_task_ident( RTEMS_WHO_AM_I, RTEMS_SEARCH_ALL_NODES, &tid );
0057 directive_failed( status, "rtems_task_ident" );
0058
0059 while (TRUE)
0060 {
0061 bool malloc_walk_ok;
0062
0063 if ( passes++ > NUM_PASSES ) {
0064 TEST_END();
0065 rtems_test_exit(0);
0066 }
0067
0068 status = rtems_clock_get_tod( &time );
0069 directive_failed( status, "rtems_clock_get_tod" );
0070
0071 put_name( Task_name[ task_number( tid ) ], FALSE );
0072 print_time( " - rtems_clock_get_tod - ", &time, "\n" );
0073
0074 mem_amt = ((int)((float)rand()*1000.0/(float)RAND_MAX));
0075 while (!(mem_ptr = malloc ( mem_amt))) {
0076 printf("out of memory... trying again.\n");
0077 mem_amt = ((int)((float)rand()*1000.0/(float)RAND_MAX));
0078 }
0079 printf("mallocing %d bytes\n",mem_amt);
0080 memset( mem_ptr, mem_amt, mem_amt );
0081 malloc_walk_ok = malloc_walk( 1, false );
0082 rtems_test_assert( malloc_walk_ok );
0083 status = rtems_task_wake_after(
0084 task_number( tid ) * 1 * rtems_clock_get_ticks_per_second()/4 );
0085 for (i=0; i < mem_amt; i++)
0086 {
0087 if ( mem_ptr[i] != (mem_amt & 0xff))
0088 {
0089 printf("failed %d, %d, 0x%x, 0x%x\n",i,mem_amt,mem_ptr[i],mem_amt&0xff);
0090 rtems_test_exit(1);
0091 }
0092 }
0093 directive_failed( status, "rtems_task_wake_after" );
0094 free( mem_ptr );
0095 }
0096 }