change log for rtems (2011-11-10)

rtems-vc at rtems.org rtems-vc at rtems.org
Thu Nov 10 15:11:03 UTC 2011


 *sh*:
2011-11-10	Sebastian Huber <sebastian.huber at embedded-brains.de>

	PR 1924/cpukit
	* sapi/include/rtems/config.h: New fields stack_space_size,
	unified_work_area, and stack_allocator_avoids_work_space in
	rtems_configuration_table.
	* sapi/include/confdefs.h: Removed rtems_unified_work_area (this is
	now part of the Configuration).  Separate work space and stack space
	estimate.  Added CONFIGURE_TASK_STACK_ALLOCATOR_AVOIDS_WORK_SPACE
	configuration option.
	* libmisc/shell/main_wkspaceinfo.c, score/src/wkspace.c,
	libcsupport/src/malloc_initialize.c: Update due to API changes.

M 1.2990  cpukit/ChangeLog
M   1.16  cpukit/libcsupport/src/malloc_initialize.c
M    1.8  cpukit/libmisc/shell/main_wkspaceinfo.c
M  1.174  cpukit/sapi/include/confdefs.h
M   1.57  cpukit/sapi/include/rtems/config.h
M   1.36  cpukit/score/src/wkspace.c

diff -u rtems/cpukit/ChangeLog:1.2989 rtems/cpukit/ChangeLog:1.2990
--- rtems/cpukit/ChangeLog:1.2989	Thu Nov 10 08:09:08 2011
+++ rtems/cpukit/ChangeLog	Thu Nov 10 08:40:12 2011
@@ -1,5 +1,18 @@
 2011-11-10	Sebastian Huber <sebastian.huber at embedded-brains.de>
 
+	PR 1924/cpukit
+	* sapi/include/rtems/config.h: New fields stack_space_size,
+	unified_work_area, and stack_allocator_avoids_work_space in
+	rtems_configuration_table.
+	* sapi/include/confdefs.h: Removed rtems_unified_work_area (this is
+	now part of the Configuration).  Separate work space and stack space
+	estimate.  Added CONFIGURE_TASK_STACK_ALLOCATOR_AVOIDS_WORK_SPACE
+	configuration option.
+	* libmisc/shell/main_wkspaceinfo.c, score/src/wkspace.c,
+	libcsupport/src/malloc_initialize.c: Update due to API changes.
+
+2011-11-10	Sebastian Huber <sebastian.huber at embedded-brains.de>
+
 	* rtems/include/rtems/rtems/event.h,
 	rtems/include/rtems/rtems/eventset.h,
 	rtems/inline/rtems/rtems/eventset.inl: Documentation.

diff -u rtems/cpukit/libcsupport/src/malloc_initialize.c:1.15 rtems/cpukit/libcsupport/src/malloc_initialize.c:1.16
--- rtems/cpukit/libcsupport/src/malloc_initialize.c:1.15	Fri Jul  1 13:23:09 2011
+++ rtems/cpukit/libcsupport/src/malloc_initialize.c	Thu Nov 10 08:40:12 2011
@@ -35,7 +35,6 @@
 }
 #else
 rtems_malloc_statistics_t rtems_malloc_statistics;
-extern bool rtems_unified_work_area;
 
 void RTEMS_Malloc_Initialize(
   void *heap_begin,
@@ -43,6 +42,7 @@
   size_t sbrk_amount
 )
 {
+  bool separate_areas = !rtems_configuration_get_unified_work_area();
   /*
    *  If configured, initialize the statistics support
    */
@@ -86,10 +86,7 @@
    *  left over from another process.  This would be a security violation.
    */
 
-  if (
-    !rtems_unified_work_area
-      && rtems_configuration_get_do_zero_of_workspace()
-  ) {
+  if ( separate_areas && rtems_configuration_get_do_zero_of_workspace() ) {
      memset( heap_begin, 0, heap_size );
   }
 
@@ -99,7 +96,7 @@
    *  STDIO cannot work because there will be no buffers.
    */
 
-  if ( !rtems_unified_work_area ) {
+  if ( separate_areas ) {
     uintptr_t status = _Protected_heap_Initialize(
       RTEMS_Malloc_Heap,
       heap_begin,

diff -u rtems/cpukit/libmisc/shell/main_wkspaceinfo.c:1.7 rtems/cpukit/libmisc/shell/main_wkspaceinfo.c:1.8
--- rtems/cpukit/libmisc/shell/main_wkspaceinfo.c:1.7	Fri Jan  2 07:01:21 2009
+++ rtems/cpukit/libmisc/shell/main_wkspaceinfo.c	Thu Nov 10 08:40:12 2011
@@ -24,12 +24,10 @@
 #include <rtems/score/protectedheap.h>
 #include "internal.h"
 
-extern bool rtems_unified_work_area;
-
 void rtems_shell_print_unified_work_area_message(void)
 {
   printf( "\nC Program Heap and RTEMS Workspace are %s.\n",
-    ((rtems_unified_work_area) ? "the same" : "separate")
+    rtems_configuration_get_unified_work_area() ? "the same" : "separate"
   );
 }
 

diff -u rtems/cpukit/sapi/include/confdefs.h:1.173 rtems/cpukit/sapi/include/confdefs.h:1.174
--- rtems/cpukit/sapi/include/confdefs.h:1.173	Thu Sep 15 10:49:31 2011
+++ rtems/cpukit/sapi/include/confdefs.h	Thu Nov 10 08:40:13 2011
@@ -764,6 +764,9 @@
   #define CONFIGURE_MINIMUM_TASK_STACK_SIZE CPU_STACK_MINIMUM_SIZE
 #endif
 
+#define CONFIGURE_MINIMUM_POSIX_THREAD_STACK_SIZE \
+  (2 * CONFIGURE_MINIMUM_TASK_STACK_SIZE)
+
 /**
  *  @brief Idle task stack size configuration
  *
@@ -777,6 +780,9 @@
     #define CONFIGURE_IDLE_TASK_STACK_SIZE CONFIGURE_MINIMUM_TASK_STACK_SIZE
   #endif
 #endif
+#if CONFIGURE_IDLE_TASK_STACK_SIZE < CONFIGURE_MINIMUM_TASK_STACK_SIZE
+  #error "CONFIGURE_IDLE_TASK_STACK_SIZE less than CONFIGURE_MINIMUM_TASK_STACK_SIZE"
+#endif
 
 /**
  *  @brief Interrupt stack size configuration
@@ -855,11 +861,9 @@
   #ifdef CONFIGURE_UNIFIED_WORK_AREAS
     #include <rtems/score/wkspace.h>
     Heap_Control  *RTEMS_Malloc_Heap = &_Workspace_Area;
-    bool           rtems_unified_work_area = true;
   #else
     Heap_Control   RTEMS_Malloc_Area;
     Heap_Control  *RTEMS_Malloc_Heap = &RTEMS_Malloc_Area;
-    bool           rtems_unified_work_area = false;
   #endif
 #endif
 
@@ -1241,6 +1245,10 @@
   #define CONFIGURE_LIBBLOCK_SEMAPHORES 0
 #endif /* CONFIGURE_APPLICATION_NEEDS_LIBBLOCK */
 
+#ifndef CONFIGURE_EXTRA_MPCI_RECEIVE_SERVER_STACK
+  #define CONFIGURE_EXTRA_MPCI_RECEIVE_SERVER_STACK 0
+#endif
+
 #if defined(RTEMS_MULTIPROCESSING)
   /*
    *  Default Multiprocessing Configuration Table.  The defaults are
@@ -1273,10 +1281,6 @@
       #define CONFIGURE_MEMORY_FOR_PROXIES(_proxies) \
         _Configure_Object_RAM((_proxies) + 1, sizeof(Thread_Proxy_control) )
 
-      #ifndef CONFIGURE_EXTRA_MPCI_RECEIVE_SERVER_STACK
-        #define CONFIGURE_EXTRA_MPCI_RECEIVE_SERVER_STACK 0
-      #endif
-
       #ifndef CONFIGURE_MP_MPCI_TABLE_POINTER
         #include <mpci.h>
         #define CONFIGURE_MP_MPCI_TABLE_POINTER         &MPCI_table
@@ -1521,7 +1525,6 @@
 
   #define CONFIGURE_MEMORY_PER_TASK_FOR_POSIX_API \
     _Configure_From_workspace( \
-      CONFIGURE_MINIMUM_TASK_STACK_SIZE + \
       sizeof (POSIX_API_Control) + \
      (sizeof (void *) * (CONFIGURE_MAXIMUM_POSIX_KEYS)) \
     )
@@ -1639,7 +1642,7 @@
 
       #ifndef CONFIGURE_POSIX_INIT_THREAD_STACK_SIZE
         #define CONFIGURE_POSIX_INIT_THREAD_STACK_SIZE \
-                (CONFIGURE_MINIMUM_TASK_STACK_SIZE * 2)
+          CONFIGURE_MINIMUM_POSIX_THREAD_STACK_SIZE
       #endif
 
       #ifdef CONFIGURE_INIT
@@ -1685,8 +1688,7 @@
           CONFIGURE_MAXIMUM_POSIX_SPINLOCKS ) + \
       CONFIGURE_MEMORY_FOR_POSIX_RWLOCKS( \
           CONFIGURE_MAXIMUM_POSIX_RWLOCKS ) + \
-      CONFIGURE_MEMORY_FOR_POSIX_TIMERS( CONFIGURE_MAXIMUM_POSIX_TIMERS ) + \
-      (CONFIGURE_POSIX_INIT_THREAD_STACK_SIZE) \
+      CONFIGURE_MEMORY_FOR_POSIX_TIMERS( CONFIGURE_MAXIMUM_POSIX_TIMERS ) \
      )
 #else
 
@@ -1728,18 +1730,10 @@
     #define CONFIGURE_MAXIMUM_FAKE_ADA_TASKS 0
   #endif
 
-  /**
-   * Ada tasks are allocated twice the minimum stack space.
-   */
-  #define CONFIGURE_ADA_TASKS_STACK \
-    (CONFIGURE_MAXIMUM_ADA_TASKS * \
-      (CONFIGURE_MINIMUM_TASK_STACK_SIZE + (6 * 1024)))
-
 #else
   #define CONFIGURE_GNAT_MUTEXES           0
   #define CONFIGURE_MAXIMUM_ADA_TASKS      0
   #define CONFIGURE_MAXIMUM_FAKE_ADA_TASKS 0
-  #define CONFIGURE_ADA_TASKS_STACK        0
 #endif
 
 #ifdef CONFIGURE_ENABLE_GO
@@ -1795,6 +1789,13 @@
   #define CONFIGURE_MEMORY_PER_TASK_FOR_NEWLIB 0
 #endif
 
+/**
+ *  This is so we can account for tasks with stacks greater than minimum
+ *  size.  This is in bytes.
+ */
+#ifndef CONFIGURE_EXTRA_TASK_STACKS
+  #define CONFIGURE_EXTRA_TASK_STACKS 0
+#endif
 
 /*
  *  Calculate the RAM size based on the maximum number of objects configured.
@@ -1813,8 +1814,7 @@
  ( \
   _Configure_Object_RAM(_tasks, sizeof(Thread_Control)) + \
   (_Configure_Max_Objects(_tasks) * \
-   (_Configure_From_workspace(CONFIGURE_MINIMUM_TASK_STACK_SIZE) + \
-    CONFIGURE_MEMORY_PER_TASK_FOR_CLASSIC_API + \
+    (CONFIGURE_MEMORY_PER_TASK_FOR_CLASSIC_API + \
     CONFIGURE_MEMORY_PER_TASK_FOR_NEWLIB + \
     CONFIGURE_MEMORY_PER_TASK_FOR_POSIX_API + \
     CONFIGURE_MEMORY_PER_TASK_FOR_SCHEDULER))  + \
@@ -1833,22 +1833,13 @@
     (CONFIGURE_MEMORY_FOR_PROXIES(CONFIGURE_MP_MAXIMUM_PROXIES) + \
      CONFIGURE_MEMORY_FOR_GLOBAL_OBJECTS( \
              CONFIGURE_MP_MAXIMUM_GLOBAL_OBJECTS) + \
-     CONFIGURE_MEMORY_FOR_TASKS(1, 1) + \
-     CONFIGURE_EXTRA_MPCI_RECEIVE_SERVER_STACK \
+     CONFIGURE_MEMORY_FOR_TASKS(1, 1) \
   )
 #else
   #define CONFIGURE_MEMORY_FOR_MP  0
 #endif
 
 /**
- *  This is so we can account for tasks with stacks greater than minimum
- *  size.  This is in bytes.
- */
-#ifndef CONFIGURE_EXTRA_TASK_STACKS
-  #define CONFIGURE_EXTRA_TASK_STACKS 0
-#endif
-
-/**
  *  The following macro is used to calculate the memory allocated by RTEMS
  *  for the message buffers associated with a particular message queue.
  *  There is a fixed amount of overhead per message.
@@ -1915,27 +1906,23 @@
   _Configure_Object_RAM(1, sizeof(API_Mutex_Control))
 
 /**
- *  This defines the formula used to compute the amount of memory
- *  reserved for IDLE task control structures and stacks.
- */
-#define CONFIGURE_IDLE_TASKS(_count) \
-    (CONFIGURE_MEMORY_FOR_TASKS(_count, 0) + \
-      _count * _Configure_From_workspace( \
-       (CONFIGURE_IDLE_TASK_STACK_SIZE - CONFIGURE_MINIMUM_TASK_STACK_SIZE)))
-
-/**
  *  This calculates the amount of memory reserved for the IDLE tasks.
  *  In an SMP system, each CPU core has its own idle task.
  */
 #if defined(RTEMS_SMP)
-  #define CONFIGURE_MEMORY_FOR_IDLE_TASK \
-          CONFIGURE_IDLE_TASKS(CONFIGURE_SMP_MAXIMUM_PROCESSORS)
+  #define CONFIGURE_IDLE_TASKS_COUNT CONFIGURE_SMP_MAXIMUM_PROCESSORS
 #else
-  #define CONFIGURE_MEMORY_FOR_IDLE_TASK \
-          CONFIGURE_IDLE_TASKS(1)
+  #define CONFIGURE_IDLE_TASKS_COUNT 1
 #endif
 
 /**
+ *  This defines the formula used to compute the amount of memory
+ *  reserved for IDLE task control structures.
+ */
+#define CONFIGURE_MEMORY_FOR_IDLE_TASK \
+  CONFIGURE_MEMORY_FOR_TASKS(CONFIGURE_IDLE_TASKS_COUNT, 0)
+
+/**
  *  This macro accounts for general RTEMS system overhead.
  */
 #define CONFIGURE_MEMORY_FOR_SYSTEM_OVERHEAD \
@@ -1946,42 +1933,6 @@
     CONFIGURE_API_MUTEX_MEMORY                     /* allocation mutex */ \
   )
 
-/*
- *  Now account for any extra memory that initialization tasks or threads
- *  may have requested.
- */
-
-/**
- *  This accounts for any extra memory required by the Classic API
- *  Initialization Task.
- */
-#if (CONFIGURE_INIT_TASK_STACK_SIZE > CONFIGURE_MINIMUM_TASK_STACK_SIZE)
-  #define CONFIGURE_INITIALIZATION_THREADS_STACKS_CLASSIC_PART \
-      (CONFIGURE_INIT_TASK_STACK_SIZE - CONFIGURE_MINIMUM_TASK_STACK_SIZE)
-#else
-  #define CONFIGURE_INITIALIZATION_THREADS_STACKS_CLASSIC_PART 0
-#endif
-
-/**
- *  This accounts for any extra memory required by the POSIX API
- *  Initialization Thread.
- */
-#if defined(RTEMS_POSIX_API) && \
-    (CONFIGURE_POSIX_INIT_THREAD_STACK_SIZE > CONFIGURE_MINIMUM_TASK_STACK_SIZE)
-  #define CONFIGURE_INITIALIZATION_THREADS_STACKS_POSIX_PART \
-    (CONFIGURE_POSIX_INIT_THREAD_STACK_SIZE - CONFIGURE_MINIMUM_TASK_STACK_SIZE)
-#else
-  #define CONFIGURE_INITIALIZATION_THREADS_STACKS_POSIX_PART 0
-#endif
-
-/**
- *  This macro provides a summation of the various initialization task
- *  and thread stack requirements.
- */
-#define CONFIGURE_INITIALIZATION_THREADS_STACKS \
-    (CONFIGURE_INITIALIZATION_THREADS_STACKS_CLASSIC_PART + \
-    CONFIGURE_INITIALIZATION_THREADS_STACKS_POSIX_PART)
-
 /**
  *  This macro provides a summation of the various task and thread
  *  requirements.
@@ -2030,110 +1981,6 @@
   #define CONFIGURE_MEMORY_FOR_SMP 0
 #endif
 
-#if defined(CONFIGURE_CONFDEFS_DEBUG) && defined(CONFIGURE_INIT)
-  /**
-   *  This is a debug mechanism, so if you need to, the executable will
-   *  have a structure with various partial values.  Add to this as you
-   *  need to.  Viewing this structure in gdb combined with dumping
-   *  the Configuration structures generated should help a lot in tracing
-   *  down errors and analyzing where over and under allocations are.
-   */
-  typedef struct {
-    uint32_t SYSTEM_OVERHEAD;
-    uint32_t STATIC_EXTENSIONS;
-    uint32_t INITIALIZATION_THREADS_STACKS;
-
-    uint32_t PER_INTEGER_TASK;
-    uint32_t FP_OVERHEAD;
-    uint32_t CLASSIC;
-    uint32_t POSIX;
-
-    /* System overhead pieces */
-    uint32_t INTERRUPT_VECTOR_TABLE;
-    uint32_t INTERRUPT_STACK_MEMORY;
-    uint32_t MEMORY_FOR_IDLE_TASK;
-    uint32_t MEMORY_FOR_SCHEDULER;
-    uint32_t MEMORY_PER_TASK_FOR_SCHEDULER;
-
-    /* Classic API Pieces */
-    uint32_t CLASSIC_TASKS;
-    uint32_t TASK_VARIABLES;
-    uint32_t TIMERS;
-    uint32_t SEMAPHORES;
-    uint32_t MESSAGE_QUEUES;
-    uint32_t PARTITIONS;
-    uint32_t REGIONS;
-    uint32_t PORTS;
-    uint32_t PERIODS;
-    uint32_t BARRIERS;
-    uint32_t USER_EXTENSIONS;
-#ifdef RTEMS_POSIX_API
-    /* POSIX API Pieces */
-    uint32_t POSIX_MUTEXES;
-    uint32_t POSIX_CONDITION_VARIABLES;
-    uint32_t POSIX_KEYS;
-    uint32_t POSIX_TIMERS;
-    uint32_t POSIX_QUEUED_SIGNALS;
-    uint32_t POSIX_MESSAGE_QUEUES;
-    uint32_t POSIX_SEMAPHORES;
-    uint32_t POSIX_BARRIERS;
-    uint32_t POSIX_SPINLOCKS;
-    uint32_t POSIX_RWLOCKS;
-#endif
-  } Configuration_Debug_t;
-
-  Configuration_Debug_t Configuration_Memory_Debug = {
-    /* General Information */
-    CONFIGURE_MEMORY_FOR_SYSTEM_OVERHEAD,
-    CONFIGURE_MEMORY_FOR_STATIC_EXTENSIONS,
-    CONFIGURE_INITIALIZATION_THREADS_STACKS,
-    CONFIGURE_MEMORY_FOR_TASKS(1, 0),
-    CONFIGURE_MEMORY_FOR_TASKS(0, 1),
-    CONFIGURE_MEMORY_FOR_CLASSIC,
-    CONFIGURE_MEMORY_FOR_POSIX,
-
-    /* System overhead pieces */
-    CONFIGURE_INTERRUPT_VECTOR_TABLE,
-    CONFIGURE_INTERRUPT_STACK_MEMORY,
-    CONFIGURE_MEMORY_FOR_IDLE_TASK,
-    CONFIGURE_MEMORY_FOR_SCHEDULER,
-    CONFIGURE_MEMORY_PER_TASK_FOR_SCHEDULER,
-
-    /* Classic API Pieces */
-    CONFIGURE_MEMORY_FOR_TASKS(CONFIGURE_MAXIMUM_TASKS, 0),
-    CONFIGURE_MEMORY_FOR_TASK_VARIABLES(CONFIGURE_MAXIMUM_TASK_VARIABLES +
-      CONFIGURE_GOROUTINES_TASK_VARIABLES),
-    CONFIGURE_MEMORY_FOR_TIMERS(CONFIGURE_MAXIMUM_TIMERS),
-    CONFIGURE_MEMORY_FOR_SEMAPHORES(CONFIGURE_SEMAPHORES),
-    CONFIGURE_MEMORY_FOR_MESSAGE_QUEUES(CONFIGURE_MAXIMUM_MESSAGE_QUEUES),
-    CONFIGURE_MEMORY_FOR_PARTITIONS(CONFIGURE_MAXIMUM_PARTITIONS),
-    CONFIGURE_MEMORY_FOR_REGIONS( CONFIGURE_MAXIMUM_REGIONS ),
-    CONFIGURE_MEMORY_FOR_PORTS(CONFIGURE_MAXIMUM_PORTS),
-    CONFIGURE_MEMORY_FOR_PERIODS(CONFIGURE_MAXIMUM_PERIODS),
-    CONFIGURE_MEMORY_FOR_BARRIERS(CONFIGURE_BARRIERS),
-    CONFIGURE_MEMORY_FOR_USER_EXTENSIONS(CONFIGURE_MAXIMUM_USER_EXTENSIONS),
-
-#ifdef RTEMS_POSIX_API
-    /* POSIX API Pieces */
-    CONFIGURE_MEMORY_FOR_POSIX_MUTEXES( CONFIGURE_MAXIMUM_POSIX_MUTEXES +
-      CONFIGURE_MAXIMUM_GO_CHANNELS + CONFIGURE_GO_INIT_MUTEXES),
-    CONFIGURE_MEMORY_FOR_POSIX_CONDITION_VARIABLES(
-      CONFIGURE_MAXIMUM_POSIX_CONDITION_VARIABLES +
-      CONFIGURE_MAXIMUM_GO_CHANNELS + CONFIGURE_GO_INIT_CONDITION_VARIABLES),
-    CONFIGURE_MEMORY_FOR_POSIX_KEYS( CONFIGURE_MAXIMUM_POSIX_KEYS ),
-    CONFIGURE_MEMORY_FOR_POSIX_QUEUED_SIGNALS(
-      CONFIGURE_MAXIMUM_POSIX_QUEUED_SIGNALS ),
-    CONFIGURE_MEMORY_FOR_POSIX_MESSAGE_QUEUES(
-      CONFIGURE_MAXIMUM_POSIX_MESSAGE_QUEUES ),
-    CONFIGURE_MEMORY_FOR_POSIX_SEMAPHORES( CONFIGURE_MAXIMUM_POSIX_SEMAPHORES ),
-    CONFIGURE_MEMORY_FOR_POSIX_BARRIERS( CONFIGURE_MAXIMUM_POSIX_BARRIERS ),
-    CONFIGURE_MEMORY_FOR_POSIX_SPINLOCKS( CONFIGURE_MAXIMUM_POSIX_SPINLOCKS ),
-    CONFIGURE_MEMORY_FOR_POSIX_RWLOCKS( CONFIGURE_MAXIMUM_POSIX_RWLOCKS ),
-    CONFIGURE_MEMORY_FOR_POSIX_TIMERS( CONFIGURE_MAXIMUM_POSIX_TIMERS ),
-#endif
-  };
-#endif
-
 /**
  *  This calculates the memory required for the executive workspace.
  */
@@ -2145,18 +1992,102 @@
      CONFIGURE_TOTAL_TASKS_AND_THREADS, CONFIGURE_TOTAL_TASKS_AND_THREADS) + \
    CONFIGURE_MEMORY_FOR_CLASSIC + \
    CONFIGURE_MEMORY_FOR_POSIX + \
-   (CONFIGURE_MAXIMUM_POSIX_THREADS * CONFIGURE_MINIMUM_TASK_STACK_SIZE ) + \
-   (CONFIGURE_MAXIMUM_GOROUTINES * CONFIGURE_MINIMUM_TASK_STACK_SIZE) + \
-   CONFIGURE_INITIALIZATION_THREADS_STACKS + \
    CONFIGURE_MEMORY_FOR_STATIC_EXTENSIONS + \
    CONFIGURE_MEMORY_FOR_MP + \
    CONFIGURE_MEMORY_FOR_SMP + \
    CONFIGURE_MESSAGE_BUFFER_MEMORY + \
-   (CONFIGURE_MEMORY_OVERHEAD * 1024) + \
-   (CONFIGURE_EXTRA_TASK_STACKS) + (CONFIGURE_ADA_TASKS_STACK) \
+   (CONFIGURE_MEMORY_OVERHEAD * 1024) \
 ) & ~0x7)
+
+/*
+ *  Now account for any extra memory that initialization tasks or threads
+ *  may have requested.
+ */
+
+/**
+ *  This accounts for any extra memory required by the Classic API
+ *  Initialization Task.
+ */
+#if (CONFIGURE_INIT_TASK_STACK_SIZE > CONFIGURE_MINIMUM_TASK_STACK_SIZE)
+  #define CONFIGURE_INITIALIZATION_THREADS_STACKS_CLASSIC_PART \
+      (CONFIGURE_INIT_TASK_STACK_SIZE - CONFIGURE_MINIMUM_TASK_STACK_SIZE)
+#else
+  #define CONFIGURE_INITIALIZATION_THREADS_STACKS_CLASSIC_PART 0
 #endif
 
+/**
+ *  This accounts for any extra memory required by the POSIX API
+ *  Initialization Thread.
+ */
+#if defined(RTEMS_POSIX_API) && \
+    (CONFIGURE_POSIX_INIT_THREAD_STACK_SIZE > \
+      CONFIGURE_MINIMUM_POSIX_THREAD_STACK_SIZE)
+  #define CONFIGURE_INITIALIZATION_THREADS_STACKS_POSIX_PART \
+    (CONFIGURE_POSIX_INIT_THREAD_STACK_SIZE - \
+      CONFIGURE_MINIMUM_POSIX_THREAD_STACK_SIZE)
+#else
+  #define CONFIGURE_INITIALIZATION_THREADS_STACKS_POSIX_PART 0
+#endif
+
+/**
+ *  This macro provides a summation of the various initialization task
+ *  and thread stack requirements.
+ */
+#define CONFIGURE_INITIALIZATION_THREADS_EXTRA_STACKS \
+    (CONFIGURE_INITIALIZATION_THREADS_STACKS_CLASSIC_PART + \
+    CONFIGURE_INITIALIZATION_THREADS_STACKS_POSIX_PART)
+
+#define CONFIGURE_IDLE_TASKS_STACK \
+  (CONFIGURE_IDLE_TASKS_COUNT * \
+    _Configure_From_workspace( CONFIGURE_IDLE_TASK_STACK_SIZE ) )
+
+#define CONFIGURE_TASKS_STACK \
+  (_Configure_Max_Objects( CONFIGURE_MAXIMUM_TASKS ) * \
+    _Configure_From_workspace( CONFIGURE_MINIMUM_TASK_STACK_SIZE ) )
+
+#define CONFIGURE_POSIX_THREADS_STACK \
+  (_Configure_Max_Objects( CONFIGURE_MAXIMUM_POSIX_THREADS ) * \
+    _Configure_From_workspace( CONFIGURE_MINIMUM_POSIX_THREAD_STACK_SIZE ) )
+
+#define CONFIGURE_GOROUTINES_STACK \
+  (_Configure_Max_Objects( CONFIGURE_MAXIMUM_GOROUTINES ) * \
+    _Configure_From_workspace( CONFIGURE_MINIMUM_POSIX_THREAD_STACK_SIZE ) )
+
+#define CONFIGURE_ADA_TASKS_STACK \
+  (_Configure_Max_Objects( CONFIGURE_MAXIMUM_ADA_TASKS ) * \
+    _Configure_From_workspace( CONFIGURE_MINIMUM_POSIX_THREAD_STACK_SIZE ) )
+
+#else /* CONFIGURE_EXECUTIVE_RAM_SIZE */
+
+#define CONFIGURE_IDLE_TASKS_STACK 0
+#define CONFIGURE_INITIALIZATION_THREADS_EXTRA_STACKS 0
+#define CONFIGURE_TASKS_STACK 0
+#define CONFIGURE_POSIX_THREADS_STACK 0
+#define CONFIGURE_GOROUTINES_STACK 0
+#define CONFIGURE_ADA_TASKS_STACK 0
+
+#if CONFIGURE_EXTRA_MPCI_RECEIVE_SERVER_STACK != 0
+  #error "CONFIGURE_EXECUTIVE_RAM_SIZE defined with request for CONFIGURE_EXTRA_MPCI_RECEIVE_SERVER_STACK"
+#endif
+
+#if CONFIGURE_EXTRA_TASK_STACKS != 0
+  #error "CONFIGURE_EXECUTIVE_RAM_SIZE defined with request for CONFIGURE_EXTRA_TASK_STACKS"
+#endif
+
+#endif /* CONFIGURE_EXECUTIVE_RAM_SIZE */
+
+#define CONFIGURE_STACK_SPACE_SIZE \
+  ( \
+    CONFIGURE_IDLE_TASKS_STACK + \
+    CONFIGURE_INITIALIZATION_THREADS_EXTRA_STACKS + \
+    CONFIGURE_TASKS_STACK + \
+    CONFIGURE_POSIX_THREADS_STACK + \
+    CONFIGURE_GOROUTINES_STACK + \
+    CONFIGURE_ADA_TASKS_STACK + \
+    CONFIGURE_EXTRA_MPCI_RECEIVE_SERVER_STACK + \
+    CONFIGURE_EXTRA_TASK_STACKS \
+  )
+
 #ifdef CONFIGURE_INIT
   /**
    *  This is the Classic API Configuration Table.
@@ -2230,6 +2161,7 @@
   rtems_configuration_table Configuration = {
     NULL,                                     /* filled in by BSP */
     CONFIGURE_EXECUTIVE_RAM_SIZE,             /* required RTEMS workspace */
+    CONFIGURE_STACK_SPACE_SIZE,               /* required stack space */
     CONFIGURE_MAXIMUM_USER_EXTENSIONS,        /* maximum dynamic extensions */
     CONFIGURE_MICROSECONDS_PER_TICK,          /* microseconds per clock tick */
     CONFIGURE_TICKS_PER_TIMESLICE,            /* ticks per timeslice quantum */
@@ -2239,6 +2171,18 @@
     CONFIGURE_TASK_STACK_ALLOCATOR,           /* stack allocator */
     CONFIGURE_TASK_STACK_DEALLOCATOR,         /* stack deallocator */
     CONFIGURE_ZERO_WORKSPACE_AUTOMATICALLY,   /* true to clear memory */
+    #ifdef CONFIGURE_UNIFIED_WORK_AREAS       /* true for unified work areas */
+      true,
+    #else
+      false,
+    #endif
+    #ifdef CONFIGURE_TASK_STACK_ALLOCATOR_AVOIDS_WORK_SPACE /* true to avoid
+                                                 work space for thread stack
+                                                 allocation */
+      true,
+    #else
+      false,
+    #endif
     CONFIGURE_MAXIMUM_DRIVERS,                /* maximum device drivers */
     CONFIGURE_NUMBER_OF_DRIVERS,              /* static device drivers */
     Device_drivers,                           /* pointer to driver table */
@@ -2318,6 +2262,131 @@
  ******************************************************************
  */
 
+#if defined(CONFIGURE_CONFDEFS_DEBUG) && defined(CONFIGURE_INIT)
+  /**
+   *  This is a debug mechanism, so if you need to, the executable will
+   *  have a structure with various partial values.  Add to this as you
+   *  need to.  Viewing this structure in gdb combined with dumping
+   *  the Configuration structures generated should help a lot in tracing
+   *  down errors and analyzing where over and under allocations are.
+   */
+  typedef struct {
+    uint32_t SYSTEM_OVERHEAD;
+    uint32_t STATIC_EXTENSIONS;
+    uint32_t INITIALIZATION_THREADS_STACKS;
+
+    uint32_t PER_INTEGER_TASK;
+    uint32_t FP_OVERHEAD;
+    uint32_t CLASSIC;
+    uint32_t POSIX;
+
+    /* System overhead pieces */
+    uint32_t INTERRUPT_VECTOR_TABLE;
+    uint32_t INTERRUPT_STACK_MEMORY;
+    uint32_t MEMORY_FOR_IDLE_TASK;
+    uint32_t MEMORY_FOR_SCHEDULER;
+    uint32_t MEMORY_PER_TASK_FOR_SCHEDULER;
+
+    /* Classic API Pieces */
+    uint32_t CLASSIC_TASKS;
+    uint32_t TASK_VARIABLES;
+    uint32_t TIMERS;
+    uint32_t SEMAPHORES;
+    uint32_t MESSAGE_QUEUES;
+    uint32_t PARTITIONS;
+    uint32_t REGIONS;
+    uint32_t PORTS;
+    uint32_t PERIODS;
+    uint32_t BARRIERS;
+    uint32_t USER_EXTENSIONS;
+
+#ifdef RTEMS_POSIX_API
+    /* POSIX API Pieces */
+    uint32_t POSIX_MUTEXES;
+    uint32_t POSIX_CONDITION_VARIABLES;
+    uint32_t POSIX_KEYS;
+    uint32_t POSIX_TIMERS;
+    uint32_t POSIX_QUEUED_SIGNALS;
+    uint32_t POSIX_MESSAGE_QUEUES;
+    uint32_t POSIX_SEMAPHORES;
+    uint32_t POSIX_BARRIERS;
+    uint32_t POSIX_SPINLOCKS;
+    uint32_t POSIX_RWLOCKS;
+#endif
+
+    /* Stack space sizes */
+    uint32_t IDLE_TASKS_STACK;
+    uint32_t INITIALIZATION_THREADS_EXTRA_STACKS;
+    uint32_t TASKS_STACK;
+    uint32_t POSIX_THREADS_STACK;
+    uint32_t GOROUTINES_STACK;
+    uint32_t ADA_TASKS_STACK;
+    uint32_t EXTRA_MPCI_RECEIVE_SERVER_STACK;
+    uint32_t EXTRA_TASK_STACKS;
+  } Configuration_Debug_t;
+
+  Configuration_Debug_t Configuration_Memory_Debug = {
+    /* General Information */
+    CONFIGURE_MEMORY_FOR_SYSTEM_OVERHEAD,
+    CONFIGURE_MEMORY_FOR_STATIC_EXTENSIONS,
+    CONFIGURE_INITIALIZATION_THREADS_EXTRA_STACKS,
+    CONFIGURE_MEMORY_FOR_TASKS(1, 0),
+    CONFIGURE_MEMORY_FOR_TASKS(0, 1),
+    CONFIGURE_MEMORY_FOR_CLASSIC,
+    CONFIGURE_MEMORY_FOR_POSIX,
+
+    /* System overhead pieces */
+    CONFIGURE_INTERRUPT_VECTOR_TABLE,
+    CONFIGURE_INTERRUPT_STACK_MEMORY,
+    CONFIGURE_MEMORY_FOR_IDLE_TASK,
+    CONFIGURE_MEMORY_FOR_SCHEDULER,
+    CONFIGURE_MEMORY_PER_TASK_FOR_SCHEDULER,
+
+    /* Classic API Pieces */
+    CONFIGURE_MEMORY_FOR_TASKS(CONFIGURE_MAXIMUM_TASKS, 0),
+    CONFIGURE_MEMORY_FOR_TASK_VARIABLES(CONFIGURE_MAXIMUM_TASK_VARIABLES +
+      CONFIGURE_GOROUTINES_TASK_VARIABLES),
+    CONFIGURE_MEMORY_FOR_TIMERS(CONFIGURE_MAXIMUM_TIMERS),
+    CONFIGURE_MEMORY_FOR_SEMAPHORES(CONFIGURE_SEMAPHORES),
+    CONFIGURE_MEMORY_FOR_MESSAGE_QUEUES(CONFIGURE_MAXIMUM_MESSAGE_QUEUES),
+    CONFIGURE_MEMORY_FOR_PARTITIONS(CONFIGURE_MAXIMUM_PARTITIONS),
+    CONFIGURE_MEMORY_FOR_REGIONS( CONFIGURE_MAXIMUM_REGIONS ),
+    CONFIGURE_MEMORY_FOR_PORTS(CONFIGURE_MAXIMUM_PORTS),
+    CONFIGURE_MEMORY_FOR_PERIODS(CONFIGURE_MAXIMUM_PERIODS),
+    CONFIGURE_MEMORY_FOR_BARRIERS(CONFIGURE_BARRIERS),
+    CONFIGURE_MEMORY_FOR_USER_EXTENSIONS(CONFIGURE_MAXIMUM_USER_EXTENSIONS),
+
+#ifdef RTEMS_POSIX_API
+    /* POSIX API Pieces */
+    CONFIGURE_MEMORY_FOR_POSIX_MUTEXES( CONFIGURE_MAXIMUM_POSIX_MUTEXES +
+      CONFIGURE_MAXIMUM_GO_CHANNELS + CONFIGURE_GO_INIT_MUTEXES),
+    CONFIGURE_MEMORY_FOR_POSIX_CONDITION_VARIABLES(
+      CONFIGURE_MAXIMUM_POSIX_CONDITION_VARIABLES +
+      CONFIGURE_MAXIMUM_GO_CHANNELS + CONFIGURE_GO_INIT_CONDITION_VARIABLES),
+    CONFIGURE_MEMORY_FOR_POSIX_KEYS( CONFIGURE_MAXIMUM_POSIX_KEYS ),
+    CONFIGURE_MEMORY_FOR_POSIX_QUEUED_SIGNALS(
+      CONFIGURE_MAXIMUM_POSIX_QUEUED_SIGNALS ),
+    CONFIGURE_MEMORY_FOR_POSIX_MESSAGE_QUEUES(
+      CONFIGURE_MAXIMUM_POSIX_MESSAGE_QUEUES ),
+    CONFIGURE_MEMORY_FOR_POSIX_SEMAPHORES( CONFIGURE_MAXIMUM_POSIX_SEMAPHORES ),
+    CONFIGURE_MEMORY_FOR_POSIX_BARRIERS( CONFIGURE_MAXIMUM_POSIX_BARRIERS ),
+    CONFIGURE_MEMORY_FOR_POSIX_SPINLOCKS( CONFIGURE_MAXIMUM_POSIX_SPINLOCKS ),
+    CONFIGURE_MEMORY_FOR_POSIX_RWLOCKS( CONFIGURE_MAXIMUM_POSIX_RWLOCKS ),
+    CONFIGURE_MEMORY_FOR_POSIX_TIMERS( CONFIGURE_MAXIMUM_POSIX_TIMERS ),
+#endif
+
+    /* Stack space sizes */
+    CONFIGURE_IDLE_TASKS_STACK,
+    CONFIGURE_INITIALIZATION_THREADS_EXTRA_STACKS,
+    CONFIGURE_TASKS_STACK,
+    CONFIGURE_POSIX_THREADS_STACK,
+    CONFIGURE_GOROUTINES_STACK,
+    CONFIGURE_ADA_TASKS_STACK,
+    CONFIGURE_EXTRA_MPCI_RECEIVE_SERVER_STACK,
+    CONFIGURE_EXTRA_TASK_STACKS
+  };
+#endif
+
 /*
  *  Make sure a task/thread of some sort is configured.
  *

diff -u rtems/cpukit/sapi/include/rtems/config.h:1.56 rtems/cpukit/sapi/include/rtems/config.h:1.57
--- rtems/cpukit/sapi/include/rtems/config.h:1.56	Fri Jun 24 12:52:57 2011
+++ rtems/cpukit/sapi/include/rtems/config.h	Thu Nov 10 08:40:13 2011
@@ -104,6 +104,10 @@
    */
   uintptr_t                      work_space_size;
 
+  /** This field specifies the size in bytes of the RTEMS thread stack space.
+   */
+  uintptr_t                      stack_space_size;
+
   /** This field specifies the maximum number of dynamically installed
    *  used extensions.
    */
@@ -152,6 +156,23 @@
    */
   bool                           do_zero_of_workspace;
 
+  /**
+   * @brief Specifies if a unified work area is used or not.
+   *
+   * If this element is @a true, then the RTEMS Workspace and the C Program
+   * Heap use the same heap, otherwise they use separate heaps.
+   */
+  bool                           unified_work_area;
+
+  /**
+   * @brief Specifies if the stack allocator avoids the work space.
+   *
+   * If this element is @a true, then the stack allocator must not allocate the
+   * thread stacks from the RTEMS Workspace, otherwise it should allocate the
+   * thread stacks from the RTEMS Workspace.
+   */
+  bool                           stack_allocator_avoids_work_space;
+
   uint32_t                       maximum_drivers;
   uint32_t                       number_of_device_drivers;
   rtems_driver_address_table    *Device_driver_table;
@@ -193,11 +214,31 @@
 #define rtems_configuration_get_table() \
         (&Configuration)
 
+#define rtems_configuration_get_unified_work_area() \
+        (Configuration.unified_work_area)
+
+#define rtems_configuration_get_stack_allocator_avoids_work_space() \
+        (Configuration.stack_allocator_avoids_work_space)
+
+#define rtems_configuration_get_stack_space_size() \
+        (Configuration.stack_space_size)
+
+#define rtems_configuration_set_stack_space_size( _size ) \
+        do { Configuration.stack_space_size = (_size); } while (0)
+
 #define rtems_configuration_get_work_space_start() \
         (Configuration.work_space_start)
 
+#define rtems_configuration_set_work_space_start( _start ) \
+        do { Configuration.work_space_start = (_start); } while (0)
+
 #define rtems_configuration_get_work_space_size() \
-        (Configuration.work_space_size)
+        (Configuration.work_space_size + \
+          (rtems_configuration_get_stack_allocator_avoids_work_space() ? \
+            0 : rtems_configuration_get_stack_space_size()))
+
+#define rtems_configuration_set_work_space_size( _size ) \
+        do { Configuration.work_space_size = (_size); } while (0)
 
 #define rtems_configuration_get_maximum_extensions() \
         (Configuration.maximum_extensions)
@@ -254,9 +295,10 @@
 
 #if defined(RTEMS_MULTIPROCESSING)
   #define rtems_configuration_get_user_multiprocessing_table() \
-	  (Configuration.User_multiprocessing_table)
+        (Configuration.User_multiprocessing_table)
 #else
-  #define rtems_configuration_get_user_multiprocessing_table() NULL
+  #define rtems_configuration_get_user_multiprocessing_table() \
+        NULL
 #endif
 
 #define rtems_configuration_get_rtems_api_configuration() \

diff -u rtems/cpukit/score/src/wkspace.c:1.35 rtems/cpukit/score/src/wkspace.c:1.36
--- rtems/cpukit/score/src/wkspace.c:1.35	Wed Feb 16 01:37:35 2011
+++ rtems/cpukit/score/src/wkspace.c	Thu Nov 10 08:40:13 2011
@@ -33,11 +33,11 @@
 void _Workspace_Handler_initialization(void)
 {
   uintptr_t memory_available = 0;
-  void *starting_address = Configuration.work_space_start;
-  uintptr_t size = Configuration.work_space_size;
+  void *starting_address = rtems_configuration_get_work_space_start();
+  uintptr_t size = rtems_configuration_get_work_space_size();
 
-  if ( Configuration.do_zero_of_workspace )
-   memset( starting_address, 0, size );
+  if ( rtems_configuration_get_do_zero_of_workspace() )
+    memset( starting_address, 0, size );
 
   memory_available = _Heap_Initialize(
     &_Workspace_Area,


 *sh*:
2011-11-10	Sebastian Huber <sebastian.huber at embedded-brains.de>

	PR 1924/cpukit
	* bootcard.c: Update due to API changes.

M  1.197  c/src/lib/libbsp/shared/ChangeLog
M   1.53  c/src/lib/libbsp/shared/bootcard.c

diff -u rtems/c/src/lib/libbsp/shared/ChangeLog:1.196 rtems/c/src/lib/libbsp/shared/ChangeLog:1.197
--- rtems/c/src/lib/libbsp/shared/ChangeLog:1.196	Tue Nov  8 04:08:14 2011
+++ rtems/c/src/lib/libbsp/shared/ChangeLog	Thu Nov 10 08:42:08 2011
@@ -1,3 +1,8 @@
+2011-11-10	Sebastian Huber <sebastian.huber at embedded-brains.de>
+
+	PR 1924/cpukit
+	* bootcard.c: Update due to API changes.
+
 2011-11-08	Sebastian Huber <sebastian.huber at embedded-brains.de>
 
 	* include/utility.h: Fixed some casts.

diff -u rtems/c/src/lib/libbsp/shared/bootcard.c:1.52 rtems/c/src/lib/libbsp/shared/bootcard.c:1.53
--- rtems/c/src/lib/libbsp/shared/bootcard.c:1.52	Tue Aug 30 07:16:24 2011
+++ rtems/c/src/lib/libbsp/shared/bootcard.c	Thu Nov 10 08:42:08 2011
@@ -66,11 +66,6 @@
 const char *bsp_boot_cmdline;
 
 /*
- * Are we using a single heap for the RTEMS Workspace and C Program Heap?
- */
-extern bool rtems_unified_work_area;
-
-/*
  *  These are the prototypes and helper routines which are used
  *  when the BSP lets the framework handle RAM allocation between
  *  the RTEMS Workspace and C Program Heap.
@@ -84,7 +79,7 @@
 )
 {
   if ( heap_start == BSP_BOOTCARD_HEAP_USES_WORK_AREA ) {
-    if ( ! rtems_unified_work_area ) {
+    if ( !rtems_configuration_get_unified_work_area() ) {
       uintptr_t work_space_size = rtems_configuration_get_work_space_size();
 
       heap_start = (char *) work_area_start + work_space_size;
@@ -121,7 +116,8 @@
   void                  *heap_start = NULL;
   uintptr_t              heap_size = 0;
   uintptr_t              sbrk_amount = 0;
-  uint32_t               status;
+  uintptr_t              work_space_size = 0;
+  uint32_t               status = 0;
 
   /*
    * Special case for PowerPC: The interrupt disable mask is stored in SPRG0.
@@ -158,11 +154,12 @@
    */
   if ( rtems_malloc_sbrk_helpers ) {
     sbrk_amount = bsp_sbrk_init(work_area_start, &work_area_size);
-    if ( work_area_size <  Configuration.work_space_size && sbrk_amount > 0 ) {
+    work_space_size = rtems_configuration_get_work_space_size();
+    if ( work_area_size <  work_space_size && sbrk_amount > 0 ) {
       /* Need to use sbrk right now */
       uintptr_t sbrk_now;
 
-      sbrk_now = (Configuration.work_space_size - work_area_size) / sbrk_amount;
+      sbrk_now = (work_space_size - work_area_size) / sbrk_amount;
       sbrk( sbrk_now * sbrk_amount );
     }
   }
@@ -171,8 +168,9 @@
     printk("Configuration error!\n"
            "Application was configured with CONFIGURE_MALLOC_BSP_SUPPORTS_SBRK\n"
            "but BSP was configured w/o sbrk support\n");
-    bsp_cleanup(1);
-    return 1;
+    status = 1;
+    bsp_cleanup( status );
+    return status;
   }
 #endif
 
@@ -185,21 +183,26 @@
    *
    *  NOTE: Use cast to (void *) and %p since these are uintptr_t types.
    */
-  if ( work_area_size <= Configuration.work_space_size ) {
+  work_space_size = rtems_configuration_get_work_space_size();
+  if ( work_area_size <= work_space_size ) {
     printk(
-      "bootcard: work space too big for work area: %p > %p\n",
-      (void *) Configuration.work_space_size,
+      "bootcard: work space too big for work area: %p >= %p\n",
+      (void *) work_space_size,
       (void *) work_area_size
     );
-    bsp_cleanup(1);
-    return 1;
+    status = 1;
+    bsp_cleanup( status );
+    return status;
   }
 
-  if ( rtems_unified_work_area ) {
-    Configuration.work_space_start = work_area_start;
-    Configuration.work_space_size  = work_area_size;
+  if ( !rtems_configuration_get_unified_work_area() ) {
+    rtems_configuration_set_work_space_start( work_area_start );
   } else {
-    Configuration.work_space_start = work_area_start;
+    rtems_configuration_set_work_space_start( work_area_start );
+    rtems_configuration_set_work_space_size( work_area_size );
+    if ( !rtems_configuration_get_stack_allocator_avoids_work_space() ) {
+      rtems_configuration_set_stack_space_size( 0 );
+    }
   }
 
   #if (BSP_DIRTY_MEMORY == 1)


 *sh*:
2011-11-10	Sebastian Huber <sebastian.huber at embedded-brains.de>

	PR 1924/cpukit
	* sptests/spfatal08/testcase.h, sptests/spfatal12/testcase.h: Update
	due to API changes.

M  1.498  testsuites/sptests/ChangeLog
M    1.7  testsuites/sptests/spfatal08/testcase.h
M    1.2  testsuites/sptests/spfatal12/testcase.h

diff -u rtems/testsuites/sptests/ChangeLog:1.497 rtems/testsuites/sptests/ChangeLog:1.498
--- rtems/testsuites/sptests/ChangeLog:1.497	Thu Oct  6 12:31:37 2011
+++ rtems/testsuites/sptests/ChangeLog	Thu Nov 10 08:43:33 2011
@@ -1,3 +1,9 @@
+2011-11-10	Sebastian Huber <sebastian.huber at embedded-brains.de>
+
+	PR 1924/cpukit
+	* sptests/spfatal08/testcase.h, sptests/spfatal12/testcase.h: Update
+	due to API changes.
+
 2011-10-06	Joel Sherrill <joel.sherrill at oarcorp.com>
 
 	* sp2038/.cvsignore: New file.

diff -u rtems/testsuites/sptests/spfatal08/testcase.h:1.6 rtems/testsuites/sptests/spfatal08/testcase.h:1.7
--- rtems/testsuites/sptests/spfatal08/testcase.h:1.6	Sun Nov 29 21:33:25 2009
+++ rtems/testsuites/sptests/spfatal08/testcase.h	Thu Nov 10 08:43:33 2011
@@ -41,8 +41,9 @@
 
 void force_error()
 {
-  Configuration.work_space_start = Workspace;
-  Configuration.work_space_size  = 256;
+  rtems_configuration_set_work_space_start( Workspace );
+  rtems_configuration_set_work_space_size( sizeof(Workspace) );
+  rtems_configuration_set_stack_space_size( 0 );
 
   rtems_initialize_data_structures();;
   /* we will not run this far */

diff -u rtems/testsuites/sptests/spfatal12/testcase.h:1.1 rtems/testsuites/sptests/spfatal12/testcase.h:1.2
--- rtems/testsuites/sptests/spfatal12/testcase.h:1.1	Fri Sep  4 16:28:56 2009
+++ rtems/testsuites/sptests/spfatal12/testcase.h	Thu Nov 10 08:43:33 2011
@@ -19,7 +19,8 @@
 
 void force_error()
 {
-  Configuration.work_space_size  = sizeof(void *);
+  rtems_configuration_set_work_space_size( sizeof(void *) );
+  rtems_configuration_set_stack_space_size( 0 );
   rtems_initialize_data_structures();
 
   /* we will not run this far */



--

Generated by Deluxe Loginfo [http://www.codewiz.org/projects/index.html#loginfo] 2.122 by Bernardo Innocenti <bernie at develer.com>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rtems.org/pipermail/vc/attachments/20111110/527dfa3b/attachment.html>


More information about the vc mailing list