From 4a5e65186b31d4ed8d11b413fec17d803f53f0e3 Mon Sep 17 00:00:00 2001 From: Joel Sherrill Date: Wed, 18 Sep 1996 21:06:49 +0000 Subject: new test submitted by Craig Lebakken (lebakken@minn.net) and Derrick Ostertag (ostertag@transition.com) --- c/src/tests/libtests/malloctest/task1.c | 67 +++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 c/src/tests/libtests/malloctest/task1.c (limited to 'c/src/tests/libtests/malloctest/task1.c') diff --git a/c/src/tests/libtests/malloctest/task1.c b/c/src/tests/libtests/malloctest/task1.c new file mode 100644 index 0000000000..35ffe6f639 --- /dev/null +++ b/c/src/tests/libtests/malloctest/task1.c @@ -0,0 +1,67 @@ +/* task1.c + * + * This set of three tasks do some simple task switching for about + * 15 seconds and then call a routine to "blow the stack". + * + * COPYRIGHT (c) 1989, 1990, 1991, 1992, 1993, 1994. + * On-Line Applications Research Corporation (OAR). + * All rights assigned to U.S. Government, 1994. + * + * This material may be reproduced by or for the U.S. Government pursuant + * to the copyright license under the clause at DFARS 252.227-7013. This + * notice must appear in all copies of this file and its derivatives. + * + * $Id$ + */ + +#include "system.h" +#include /* for malloc_dump, malloc_walk */ +#include /* for memset */ + +#define NUM_PASSES 100 + +rtems_task Task_1_through_5( + rtems_task_argument argument +) +{ + int i; + unsigned int passes = 0; + rtems_id tid; + rtems_time_of_day time; + rtems_status_code status; + unsigned char *mem_ptr; + int mem_amt; + + status = rtems_task_ident( RTEMS_SELF, RTEMS_SEARCH_ALL_NODES, &tid ); + directive_failed( status, "rtems_task_ident" ); + + while (TRUE) + { + if ( passes++ > NUM_PASSES ) + exit(0); + + status = rtems_clock_get( RTEMS_CLOCK_GET_TOD, &time ); + directive_failed( status, "rtems_clock_get" ); + + put_name( Task_name[ task_number( tid ) ], FALSE ); + print_time( " - rtems_clock_get - ", &time, "\n" ); + + mem_amt = rand() * task_number( tid ); + printf("mallocing %d bytes\n",mem_amt); + mem_ptr = malloc ( mem_amt); + memset( mem_ptr, mem_amt, mem_amt ); + malloc_dump(); + malloc_walk(1,FALSE); + status = rtems_task_wake_after( task_number( tid ) * 1 * TICKS_PER_SECOND/4 ); + for (i=0; i < mem_amt; i++) + { + if ( mem_ptr[i] != (mem_amt & 0xff)) + { + printf("failed %d, %d, 0x%x, 0x%x\n",i,mem_amt,mem_ptr[i],mem_amt&0xff); + exit(1); + } + } + directive_failed( status, "rtems_task_wake_after" ); + free( mem_ptr ); + } +} -- cgit v1.2.3