summaryrefslogtreecommitdiffstats
path: root/testsuites/sptests/spsize/size.c
diff options
context:
space:
mode:
Diffstat (limited to 'testsuites/sptests/spsize/size.c')
-rw-r--r--testsuites/sptests/spsize/size.c601
1 files changed, 0 insertions, 601 deletions
diff --git a/testsuites/sptests/spsize/size.c b/testsuites/sptests/spsize/size.c
deleted file mode 100644
index 52404272fd..0000000000
--- a/testsuites/sptests/spsize/size.c
+++ /dev/null
@@ -1,601 +0,0 @@
-/* main
- *
- * This program is run to determine the data space and work space
- * requirements of the current version of RTEMS.
- *
- * 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 <stdlib.h>
-
-#include <rtems/system.h>
-#include <rtems/config.h>
-#include <rtems/copyrt.h>
-#include <rtems/clock.h>
-#include <rtems/tasks.h>
-#include <rtems/dpmem.h>
-#include <rtems/event.h>
-#include <rtems/extension.h>
-#include <rtems/fatal.h>
-#include <rtems/init.h>
-#include <rtems/intthrd.h>
-#include <rtems/isr.h>
-#include <rtems/intr.h>
-#include <rtems/io.h>
-#include <rtems/message.h>
-#include <rtems/mp.h>
-#include <rtems/mpci.h>
-#include <rtems/part.h>
-#include <rtems/priority.h>
-#include <rtems/ratemon.h>
-#include <rtems/region.h>
-#include <rtems/sem.h>
-#include <rtems/signal.h>
-#include <rtems/sysstate.h>
-#include <rtems/thread.h>
-#include <rtems/timer.h>
-#include <rtems/tod.h>
-#include <rtems/userext.h>
-#include <rtems/wkspace.h>
-#include <rtems/mp.h>
-
-/* These are always defined by the executive.
- *
- * #include <rtems/copyrt.h>
- * #include <rtems/tables.h>
- * #include <rtems/sptables.h>
- */
-#define HEAP_OVHD 16 /* wasted heap space per task stack */
-#define NAME_PTR_SIZE 8 /* size of name and pointer table entries */
-#define READYCHAINS_SIZE \
- ((RTEMS_MAXIMUM_PRIORITY + 1) * sizeof(Chain_Control ))
-
-#define PER_TASK \
- (sizeof (Thread_Control) + NAME_PTR_SIZE + HEAP_OVHD)
-#define PER_SEMAPHORE \
- (sizeof (Semaphore_Control) + NAME_PTR_SIZE)
-#define PER_TIMER \
- (sizeof (Timer_Control) + NAME_PTR_SIZE)
-#define PER_MSGQ \
- (sizeof (Message_queue_Control) + NAME_PTR_SIZE)
-#define PER_MSG \
- (sizeof (Message_queue_Buffer_control))
-#define PER_REGN \
- (sizeof (Region_Control) + NAME_PTR_SIZE)
-#define PER_PART \
- (sizeof (Partition_Control) + NAME_PTR_SIZE)
-#define PER_PERIOD \
- (sizeof (Rate_monotonic_Control) + NAME_PTR_SIZE)
-#define PER_PORT \
- (sizeof (Dual_ported_memory_Control) + NAME_PTR_SIZE)
-#define PER_EXTENSION \
- (sizeof (Extension_Control) + NAME_PTR_SIZE)
-
-#define PER_DRV (0)
-#define PER_FPTASK (CONTEXT_FP_SIZE)
-#define PER_GOBTBL (sizeof (Chain_Control)*4)
-#define PER_NODE PER_GOBTBL
-#define PER_GOBJECT (sizeof (Objects_MP_Control))
-#define PER_PROXY (sizeof (Thread_Proxy_control))
-
-#if (CPU_ALL_TASKS_ARE_FP == TRUE)
-#define SYSTEM_INITIALIZATION_FP (sizeof( Context_Control_fp ))
-#else
-#define SYSTEM_INITIALIZATION_FP 0
-#endif
-
-#if (CPU_IDLE_TASK_IS_FP == TRUE)
-#define SYSTEM_IDLE_FP (sizeof( Context_Control_fp ))
-#else
-#define SYSTEM_IDLE_FP 0
-#endif
-
-#define SYSTEM_TASKS \
- (INTERNAL_THREADS_IDLE_THREAD_STACK_SIZE + \
- INTERNAL_THREADS_SYSTEM_INITIALIZATION_THREAD_STACK_SIZE + \
- (2*sizeof(Thread_Control))) + \
- SYSTEM_INITIALIZATION_FP + \
- SYSTEM_IDLE_FP
-
-#define rtems_unsigned32 unsigned32
-
-rtems_unsigned32 sys_req;
-
-/* to avoid warnings */
-int puts();
-int printf();
-int getint();
-#undef getchar
-int getchar();
-void help_size();
-void print_formula();
-
-void size_rtems(
- int mode
-)
-{
-int uninitialized = 0;
-int initialized = 0;
-
-/*
- * The following data is allocated for each Manager:
- *
- * + Per Manager Object Information
- * - local pointer table
- * - local name table
- * - the object's control blocks
- * - global name chains
- *
- * The following is the data allocate from the RTEMS Workspace Area.
- * The order indicates the order in which RTEMS allocates it.
- *
- * + Object MP
- * - Global Object CB's
- * + Thread
- * - Ready Chain
- * + Thread MP
- * - Proxies Chain
- * + Interrupt Manager
- * - Interrupt Stack
- * + Timer Manager
- * - per Manager Object Data
- * + Extension Manager
- * - per Manager Object Data
- * + Message Queue Manager
- * - per Manager Object Data
- * - Message Buffers
- * + Semaphore Manager
- * - per Manager Object Data
- * + Partition Manager
- * - per Manager Object Data
- * + Region Manager
- * - per Manager Object Data
- * + Dual Ported Memory Manager
- * - per Manager Object Data
- * + Rate Monotonic Manager
- * - per Manager Object Data
- * + Internal Threads Handler
- * - SYSI Thread TCB
- * - IDLE Thread TCB
- * - SYSI Thread stack
- * - SYSI Thread FP area (if CPU requires this)
- * - IDLE Thread stack
- * - IDLE Thread FP area (if CPU requires this)
- *
- * This does not take into account any CPU dependent alignment requirements.
- *
- * The following calculates the overhead needed by RTEMS from the
- * Workspace Area.
- */
-sys_req = SYSTEM_TASKS + /* SYSI and IDLE */
- NAME_PTR_SIZE + /* Task Overhead */
- READYCHAINS_SIZE + /* Ready Chains */
- NAME_PTR_SIZE + /* Timer Overhead */
- NAME_PTR_SIZE + /* Semaphore Overhead */
- NAME_PTR_SIZE + /* Message Queue Overhead */
- NAME_PTR_SIZE + /* Region Overhead */
- NAME_PTR_SIZE + /* Partition Overhead */
- NAME_PTR_SIZE + /* Dual-Ported Memory Overhead */
- NAME_PTR_SIZE + /* Rate Monotonic Overhead */
- NAME_PTR_SIZE + /* Extension Overhead */
- PER_NODE; /* Extra Gobject Table */
-
-uninitialized =
-/*address.h*/ 0 +
-
-/*asr.h*/ 0 +
-
-/*attr.h*/ 0 +
-
-/*bitfield.h*/ 0 +
-
-/*chain.h*/ 0 +
-
-/*clock.h*/ 0 +
-
-/*config.h*/ (sizeof _Configuration_Table) +
- (sizeof _Configuration_MP_table) +
- (sizeof _Configuration_MPCI_table) +
-
-/*context.h*/ (sizeof _Context_Switch_necessary) +
-
-/*copyrt.h*/ 0 +
-
-/*dpmem.h*/ (sizeof _Dual_ported_memory_Information) +
-
-/*event.h*/ (sizeof _Event_Sync) +
-
-/*eventmp.h*/ 0 +
-
-/*eventset.h*/ 0 +
-
-/*extension.h*/ (sizeof _Extension_Information) +
-
-/*fatal.h*/ 0 +
-
-/*heap.h*/ 0 +
-
-/*init.h*/ 0 +
-
-/*inthrdmp.h*/ 0 +
-
-/*intr.h*/ 0 +
-
-/*intthrd.h*/ (sizeof _Internal_threads_System_initialization_thread) +
- (sizeof _Internal_threads_Idle_thread) +
- (sizeof _Internal_threads_MP_Receive_server_entry) +
-
-/*io.h*/ (sizeof _IO_Number_of_drivers) +
- (sizeof _IO_Driver_address_table) +
-
-/*isr.h*/ (sizeof _ISR_Nest_level) +
- (sizeof _ISR_Vector_table) +
- (sizeof _ISR_Signals_to_thread_executing) +
-
-/*message.h*/ (sizeof _Message_queue_Inactive_messages) +
- (sizeof _Message_queue_Information) +
-
-/*modes.h*/ 0 +
-
-/*mp.h*/ 0 +
-
-/*mpci.h*/ (sizeof _MPCI_Remote_blocked_threads) +
-
-/*mppkt.h*/ 0 +
-
-/*mptables.h*/ 0 +
-
-/*msgmp.h*/ 0 +
-
-/*object.h*/ (sizeof _Objects_Local_node) +
-
-/*objectmp.h*/ (sizeof _Objects_MP_Inactive_global_objects) +
-
-/*options.h*/ 0 +
-
-/*part.h*/ (sizeof _Partition_Information) +
-
-/*partmp.h*/ 0 +
-
-/*priority.h*/ (sizeof _Priority_Major_bit_map) +
- (sizeof _Priority_Bit_map) +
-
-/*ratemon.h*/ (sizeof _Rate_monotonic_Information) +
-
-/*region.h*/ (sizeof _Region_Information) +
-
-/*regionmp.h*/ 0 +
-
-/*rtems.h*/ /* Not applicable */
-
-/*sem.h*/ (sizeof _Semaphore_Information) +
-
-/*semmp.h*/ 0 +
-
-/*signal.h*/ 0 +
-
-/*signalmp.h*/ 0 +
-
-/*stack.h*/ 0 +
-
-/*states.h*/ 0 +
-
-/*status.h*/ 0 +
-
-/*system.h*/ (sizeof _CPU_Table) +
-
-/*sysstate.h*/ (sizeof _System_state_Current) +
-
-/*taskmp.h*/ 0 +
-
-/*tasks.h*/ 0 +
-
-/*thread.h*/ (sizeof _Thread_Dispatch_disable_level) +
- (sizeof _Thread_Ticks_remaining_in_timeslice) +
- (sizeof _Thread_Ticks_per_timeslice) +
- (sizeof _Thread_Ready_chain) +
- (sizeof _Thread_Executing) +
- (sizeof _Thread_Heir) +
- (sizeof _Thread_Allocated_fp) +
- (sizeof _Thread_Information) +
- (sizeof _Thread_BSP_context) +
-
-/*threadmp.h*/ (sizeof _Thread_MP_Receive) +
- (sizeof _Thread_MP_Active_proxies) +
- (sizeof _Thread_MP_Inactive_proxies) +
-
-/*threadq.h*/ 0 +
-
-/*timer.h*/ (sizeof _Timer_Information) +
-
-/*tod.h*/ (sizeof _TOD_Current) +
- (sizeof _TOD_Seconds_since_epoch) +
- (sizeof _TOD_Ticks_since_boot) +
- (sizeof _TOD_Microseconds_per_tick) +
- (sizeof _TOD_Ticks_per_second) +
- (sizeof _TOD_Seconds_watchdog) +
-
-/*tqdata.h*/ 0 +
-
-/*types.h*/ 0 +
-
-/*userext.h*/ (sizeof _User_extensions_Initial) +
- (sizeof _User_extensions_List) +
-
-/*watchdog.h*/ (sizeof _Watchdog_Ticks_chain) +
- (sizeof _Watchdog_Seconds_chain) +
- (sizeof _Watchdog_Sync) +
-
-/*wkspace.h*/ (sizeof _Workspace_Area);
-
-uninitialized = 0;
-
-#ifdef i386
-
-/* cpu.h */
-uninitialized += (sizeof _CPU_Null_fp_context) +
- (sizeof _CPU_Interrupt_stack_low) +
- (sizeof _CPU_Interrupt_stack_high);
-
-#endif
-
-#ifdef i960
-
-/* cpu.h */
-uninitialized += (sizeof _CPU_Interrupt_stack_low) +
- (sizeof _CPU_Interrupt_stack_high);
-
-#endif
-
-#ifdef hppa1_1
-
-/* cpu.h */
-uninitialized += (sizeof _CPU_Null_fp_context) +
- (sizeof _CPU_Default_gr27) +
- (sizeof _CPU_Interrupt_stack_low) +
- (sizeof _CPU_Interrupt_stack_high);
-#endif
-
-#ifdef m68k
-
-/* cpu.h */
-uninitialized += (sizeof _CPU_Interrupt_stack_low) +
- (sizeof _CPU_Interrupt_stack_high);
-
-#endif
-
-#ifdef no_cpu
-
-/* cpu.h */
-uninitialized += (sizeof _CPU_Null_fp_context) +
- (sizeof _CPU_Interrupt_stack_low) +
- (sizeof _CPU_Interrupt_stack_high) +
- (sizeof _CPU_Thread_dispatch_pointer);
-
-#endif
-
-initialized +=
-/*copyrt.h*/ (strlen(_Copyright_Notice)+1) +
-
-/*sptables.h*/ (sizeof _Configuration_Default_multiprocessing_table) +
- (strlen(_RTEMS_version)+1) +
- (sizeof _Entry_points) +
-
-
-/*tod.h*/ (sizeof _TOD_Days_per_month) +
- (sizeof _TOD_Days_to_date) +
- (sizeof _TOD_Days_since_last_leap_year);
-
-puts( "" );
-#ifdef i960CA
- print_formula();
-#else
- if ( mode == 0 ) help_size();
- else print_formula();
-#endif
-
-printf( "\n" );
-printf( "RTEMS uninitialized data consumes %d bytes\n", uninitialized );
-printf( "RTEMS intialized data consumes %d bytes\n", initialized );
-
-}
-
-void help_size()
-{
-int c = '\0';
-int break_loop;
-int total_size;
-int task_stacks;
-int interrupt_stack;
-int maximum_tasks, size_tasks;
-int maximum_sems, size_sems;
-int maximum_timers, size_timers;
-int maximum_msgqs, size_msgqs;
-int maximum_msgs, size_msgs;
-int maximum_regns, size_regns;
-int maximum_parts, size_parts;
-int maximum_ports, size_ports;
-int maximum_periods, size_periods;
-int maximum_extensions, size_extensions;
-int maximum_drvs, size_drvs;
-int maximum_fps, size_fps;
-int maximum_nodes, size_nodes;
-int maximum_gobjs, size_gobjs;
-int maximum_proxies, size_proxies;
-
-total_size = sys_req; /* Fixed Overhead */
-printf( "What is maximum_tasks? " );
-maximum_tasks = getint();
-size_tasks = PER_TASK * maximum_tasks;
-total_size += size_tasks;
-
-printf( "What is maximum_semaphores? " );
-maximum_sems = getint();
-size_sems = PER_SEMAPHORE * maximum_sems;
-total_size += size_sems;
-
-printf( "What is maximum_timers? " );
-maximum_timers = getint();
-size_timers = PER_TIMER * maximum_timers;
-total_size += size_timers;
-
-printf( "What is maximum_message_queues? " );
-maximum_msgqs = getint();
-size_msgqs = PER_MSGQ * maximum_msgqs;
-total_size += size_msgqs;
-
-printf( "What is maximum_messages? " );
-maximum_msgs = getint();
-size_msgs = PER_MSG * maximum_msgs;
-total_size += size_msgs;
-
-printf( "What is maximum_regions? " );
-maximum_regns = getint();
-size_regns = PER_REGN * maximum_regns;
-total_size += size_regns;
-
-printf( "What is maximum_partitions? " );
-maximum_parts = getint();
-size_parts = PER_PART * maximum_parts;
-total_size += size_parts;
-
-printf( "What is maximum_ports? " );
-maximum_ports = getint();
-size_ports = PER_PORT * maximum_ports;
-total_size += size_ports;
-
-printf( "What is maximum_periods? " );
-maximum_periods = getint();
-size_periods = PER_PORT * maximum_periods;
-total_size += size_periods;
-
-printf( "What is maximum_extensions? " );
-maximum_extensions = getint();
-size_extensions = PER_EXTENSION * maximum_extensions;
-total_size += size_extensions;
-
-printf( "What is number_of_device_drivers? " );
-maximum_drvs = getint();
-size_drvs = PER_DRV * maximum_drvs;
-total_size += size_drvs;
-
-printf( "What will be total stack requirement for all tasks? " );
-task_stacks = getint();
-total_size += task_stacks;
-
-printf( "What is the size of the interrupt stack? " );
-interrupt_stack = getint();
-total_size += interrupt_stack;
-
-printf( "How many tasks will be created with the FP flag? " );
-maximum_fps = getint();
-size_fps = PER_FPTASK * maximum_fps;
-total_size += size_fps;
-
-printf( "Is this a single processor system? " );
-for ( break_loop=0 ; !break_loop; c = getchar() ) {
- switch ( c ) {
- case 'Y': case 'y':
- case 'N': case 'n':
- break_loop = 1;
- break;
- }
-}
-printf( "%c\n", c );
-if ( c == 'n' || c == 'N' ) {
- printf( "What is maximum_nodes? " );
- maximum_nodes = getint();
- size_nodes = PER_NODE * maximum_nodes;
- total_size += size_nodes;
- printf( "What is maximum_global_objects? " );
- maximum_gobjs = getint();
- size_gobjs = PER_GOBJECT * maximum_gobjs;
- total_size += size_gobjs;
- printf( "What is maximum_proxies? " );
- maximum_proxies = getint();
- size_proxies = PER_PROXY * maximum_proxies;
- total_size += size_proxies;
-} else {
- maximum_nodes = 0;
- size_nodes = PER_NODE * 0;
- maximum_gobjs = 0;
- size_gobjs = PER_GOBJECT * 0;
- maximum_proxies = 0;
- size_proxies = PER_PROXY * 0;
-}
-
-printf( "\n\n" );
-printf( " ************** EXECUTIVE WORK SPACE REQUIRED **************\n" );
-printf( " Tasks - %03d * %03d = %d\n",
- maximum_tasks, PER_TASK, size_tasks );
-printf( " Semaphores - %03d * %03d = %d\n",
- maximum_sems, PER_SEMAPHORE, size_sems );
-printf( " Timers - %03d * %03d = %d\n",
- maximum_timers, PER_TIMER, size_timers );
-printf( " Msg Queues - %03d * %03d = %d\n",
- maximum_msgqs, PER_MSGQ, size_msgqs );
-printf( " Messages - %03d * %03d = %d\n",
- maximum_msgs, PER_MSG, size_msgs );
-printf( " Regions - %03d * %03d = %d\n",
- maximum_regns, PER_REGN, size_regns);
-printf( " Partitions - %03d * %03d = %d\n",
- maximum_parts, PER_PART, size_parts );
-printf( " Periods - %03d * %03d = %d\n",
- maximum_periods, PER_PERIOD, size_periods );
-printf( " Extensions - %03d * %03d = %d\n",
- maximum_extensions, PER_EXTENSION, size_extensions );
-printf( " Device Drivers - %03d * %03d = %d\n",
- maximum_drvs, PER_DRV, size_drvs );
-
-printf( " System Requirements - %04d = %d\n",
- sys_req, sys_req );
-
-printf( " Floating Point Tasks - %03d * %03d = %d\n",
- maximum_fps, PER_FPTASK, size_fps );
-printf( " Application Task Stacks - = %d\n",
- task_stacks );
-printf( " Interrupt Stacks - = %d\n",
- task_stacks );
-printf( " \n" );
-printf( " Global object tables - %03d * %03d = %d\n",
- maximum_nodes, PER_NODE, size_nodes );
-printf( " Global objects - %03d * %03d = %d\n",
- maximum_gobjs, PER_GOBJECT, size_gobjs );
-printf( " Proxies - %03d * %03d = %d\n",
- maximum_proxies, PER_PROXY, size_proxies );
-printf( "\n\n" );
-printf( " TOTAL = %d bytes\n",
- total_size );
-}
-
-void print_formula()
-{
-printf( " ************** EXECUTIVE WORK SPACE FORMULA **************\n" );
-printf( " Tasks - maximum_tasks * %d\n", PER_TASK );
-printf( " Timers - maximum_timers * %d\n", PER_TIMER );
-printf( " Semaphores - maximum_semaphores * %d\n", PER_SEMAPHORE);
-printf( " Message Queues - maximum_message_queues * %d\n", PER_MSGQ );
-printf( " Messages - maximum_messages * %d\n", PER_MSG );
-printf( " Regions - maximum_regions * %d\n", PER_REGN );
-printf( " Partitions - maximum_partitions * %d\n", PER_PART );
-printf( " Ports - maximum_ports * %d\n", PER_PORT );
-printf( " Periods - maximum_periods * %d\n", PER_PORT );
-printf( " Extensions - maximum_extensions * %d\n", PER_EXTENSION );
-printf( " Device Drivers - number_of_device_drivers * %d\n", PER_DRV);
-printf( " System Requirements - %d\n", sys_req );
-printf( " Floating Point Tasks - FPMASK Tasks * %d\n", CONTEXT_FP_SIZE );
-printf( " User's Tasks' Stacks -\n" );
-printf( " Interrupt Stack -\n" );
-printf( " \n" );
-printf( " Global object tables - maximum_nodes * %d\n", PER_NODE );
-printf( " Global objects - maximum_global_objects * %d\n", PER_GOBJECT );
-printf( " Proxies - maximum_proxies * %d\n", PER_PROXY );
-}