<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>change log for rtems (2011-11-10)</title>
</head>
<body text='#000000' bgcolor='#ffffff'>
<a name='cs1'></a>
<table border='0' cellspacing='0' cellpadding='5' width='100%' bgcolor='#eeeeee'>
<tr><td colspan='3' bgcolor='#dddddd'>
 <font color='#bb2222'><strong>sh</strong></font>
</td></tr>
<tr><td colspan='3' bgcolor='#dddddd'><pre>2011-11-10 Sebastian Huber <sebastian.huber@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.
</pre></td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/cpukit/ChangeLog.diff?r1=text&tr1=1.2989&r2=text&tr2=1.2990&diff_format=h">M</a></td><td width='1%'>1.2990</td><td width='100%'>cpukit/ChangeLog</td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/cpukit/libcsupport/src/malloc_initialize.c.diff?r1=text&tr1=1.15&r2=text&tr2=1.16&diff_format=h">M</a></td><td width='1%'>1.16</td><td width='100%'>cpukit/libcsupport/src/malloc_initialize.c</td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/cpukit/libmisc/shell/main_wkspaceinfo.c.diff?r1=text&tr1=1.7&r2=text&tr2=1.8&diff_format=h">M</a></td><td width='1%'>1.8</td><td width='100%'>cpukit/libmisc/shell/main_wkspaceinfo.c</td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/cpukit/sapi/include/confdefs.h.diff?r1=text&tr1=1.173&r2=text&tr2=1.174&diff_format=h">M</a></td><td width='1%'>1.174</td><td width='100%'>cpukit/sapi/include/confdefs.h</td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/cpukit/sapi/include/rtems/config.h.diff?r1=text&tr1=1.56&r2=text&tr2=1.57&diff_format=h">M</a></td><td width='1%'>1.57</td><td width='100%'>cpukit/sapi/include/rtems/config.h</td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/cpukit/score/src/wkspace.c.diff?r1=text&tr1=1.35&r2=text&tr2=1.36&diff_format=h">M</a></td><td width='1%'>1.36</td><td width='100%'>cpukit/score/src/wkspace.c</td></tr>
</table>
<pre>
<font color='#006600'>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
</font><font color='#997700'>@@ -1,5 +1,18 @@
</font> 2011-11-10        Sebastian Huber <sebastian.huber@embedded-brains.de>
 
<font color='#000088'>+   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@embedded-brains.de>
+
</font>   * rtems/include/rtems/rtems/event.h,
        rtems/include/rtems/rtems/eventset.h,
        rtems/inline/rtems/rtems/eventset.inl: Documentation.

<font color='#006600'>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
</font><font color='#997700'>@@ -35,7 +35,6 @@
</font> }
 #else
 rtems_malloc_statistics_t rtems_malloc_statistics;
<font color='#880000'>-extern bool rtems_unified_work_area;
</font> 
 void RTEMS_Malloc_Initialize(
   void *heap_begin,
<font color='#997700'>@@ -43,6 +42,7 @@
</font>   size_t sbrk_amount
 )
 {
<font color='#000088'>+  bool separate_areas = !rtems_configuration_get_unified_work_area();
</font>   /*
    *  If configured, initialize the statistics support
    */
<font color='#997700'>@@ -86,10 +86,7 @@
</font>    *  left over from another process.  This would be a security violation.
    */
 
<font color='#880000'>-  if (
-    !rtems_unified_work_area
-      && rtems_configuration_get_do_zero_of_workspace()
-  ) {
</font><font color='#000088'>+  if ( separate_areas && rtems_configuration_get_do_zero_of_workspace() ) {
</font>      memset( heap_begin, 0, heap_size );
   }
 
<font color='#997700'>@@ -99,7 +96,7 @@
</font>    *  STDIO cannot work because there will be no buffers.
    */
 
<font color='#880000'>-  if ( !rtems_unified_work_area ) {
</font><font color='#000088'>+  if ( separate_areas ) {
</font>     uintptr_t status = _Protected_heap_Initialize(
       RTEMS_Malloc_Heap,
       heap_begin,

<font color='#006600'>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
</font><font color='#997700'>@@ -24,12 +24,10 @@
</font> #include <rtems/score/protectedheap.h>
 #include "internal.h"
 
<font color='#880000'>-extern bool rtems_unified_work_area;
-
</font> void rtems_shell_print_unified_work_area_message(void)
 {
   printf( "\nC Program Heap and RTEMS Workspace are %s.\n",
<font color='#880000'>-    ((rtems_unified_work_area) ? "the same" : "separate")
</font><font color='#000088'>+    rtems_configuration_get_unified_work_area() ? "the same" : "separate"
</font>   );
 }
 

<font color='#006600'>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
</font><font color='#997700'>@@ -764,6 +764,9 @@
</font>   #define CONFIGURE_MINIMUM_TASK_STACK_SIZE CPU_STACK_MINIMUM_SIZE
 #endif
 
<font color='#000088'>+#define CONFIGURE_MINIMUM_POSIX_THREAD_STACK_SIZE \
+  (2 * CONFIGURE_MINIMUM_TASK_STACK_SIZE)
+
</font> /**
  *  @brief Idle task stack size configuration
  *
<font color='#997700'>@@ -777,6 +780,9 @@
</font>     #define CONFIGURE_IDLE_TASK_STACK_SIZE CONFIGURE_MINIMUM_TASK_STACK_SIZE
   #endif
 #endif
<font color='#000088'>+#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
</font> 
 /**
  *  @brief Interrupt stack size configuration
<font color='#997700'>@@ -855,11 +861,9 @@
</font>   #ifdef CONFIGURE_UNIFIED_WORK_AREAS
     #include <rtems/score/wkspace.h>
     Heap_Control  *RTEMS_Malloc_Heap = &_Workspace_Area;
<font color='#880000'>-    bool           rtems_unified_work_area = true;
</font>   #else
     Heap_Control   RTEMS_Malloc_Area;
     Heap_Control  *RTEMS_Malloc_Heap = &RTEMS_Malloc_Area;
<font color='#880000'>-    bool           rtems_unified_work_area = false;
</font>   #endif
 #endif
 
<font color='#997700'>@@ -1241,6 +1245,10 @@
</font>   #define CONFIGURE_LIBBLOCK_SEMAPHORES 0
 #endif /* CONFIGURE_APPLICATION_NEEDS_LIBBLOCK */
 
<font color='#000088'>+#ifndef CONFIGURE_EXTRA_MPCI_RECEIVE_SERVER_STACK
+  #define CONFIGURE_EXTRA_MPCI_RECEIVE_SERVER_STACK 0
+#endif
+
</font> #if defined(RTEMS_MULTIPROCESSING)
   /*
    *  Default Multiprocessing Configuration Table.  The defaults are
<font color='#997700'>@@ -1273,10 +1281,6 @@
</font>       #define CONFIGURE_MEMORY_FOR_PROXIES(_proxies) \
         _Configure_Object_RAM((_proxies) + 1, sizeof(Thread_Proxy_control) )
 
<font color='#880000'>-      #ifndef CONFIGURE_EXTRA_MPCI_RECEIVE_SERVER_STACK
-        #define CONFIGURE_EXTRA_MPCI_RECEIVE_SERVER_STACK 0
-      #endif
-
</font>       #ifndef CONFIGURE_MP_MPCI_TABLE_POINTER
         #include <mpci.h>
         #define CONFIGURE_MP_MPCI_TABLE_POINTER         &MPCI_table
<font color='#997700'>@@ -1521,7 +1525,6 @@
</font> 
   #define CONFIGURE_MEMORY_PER_TASK_FOR_POSIX_API \
     _Configure_From_workspace( \
<font color='#880000'>-      CONFIGURE_MINIMUM_TASK_STACK_SIZE + \
</font>       sizeof (POSIX_API_Control) + \
      (sizeof (void *) * (CONFIGURE_MAXIMUM_POSIX_KEYS)) \
     )
<font color='#997700'>@@ -1639,7 +1642,7 @@
</font> 
       #ifndef CONFIGURE_POSIX_INIT_THREAD_STACK_SIZE
         #define CONFIGURE_POSIX_INIT_THREAD_STACK_SIZE \
<font color='#880000'>-                (CONFIGURE_MINIMUM_TASK_STACK_SIZE * 2)
</font><font color='#000088'>+          CONFIGURE_MINIMUM_POSIX_THREAD_STACK_SIZE
</font>       #endif
 
       #ifdef CONFIGURE_INIT
<font color='#997700'>@@ -1685,8 +1688,7 @@
</font>           CONFIGURE_MAXIMUM_POSIX_SPINLOCKS ) + \
       CONFIGURE_MEMORY_FOR_POSIX_RWLOCKS( \
           CONFIGURE_MAXIMUM_POSIX_RWLOCKS ) + \
<font color='#880000'>-      CONFIGURE_MEMORY_FOR_POSIX_TIMERS( CONFIGURE_MAXIMUM_POSIX_TIMERS ) + \
-      (CONFIGURE_POSIX_INIT_THREAD_STACK_SIZE) \
</font><font color='#000088'>+      CONFIGURE_MEMORY_FOR_POSIX_TIMERS( CONFIGURE_MAXIMUM_POSIX_TIMERS ) \
</font>      )
 #else
 
<font color='#997700'>@@ -1728,18 +1730,10 @@
</font>     #define CONFIGURE_MAXIMUM_FAKE_ADA_TASKS 0
   #endif
 
<font color='#880000'>-  /**
-   * 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)))
-
</font> #else
   #define CONFIGURE_GNAT_MUTEXES           0
   #define CONFIGURE_MAXIMUM_ADA_TASKS      0
   #define CONFIGURE_MAXIMUM_FAKE_ADA_TASKS 0
<font color='#880000'>-  #define CONFIGURE_ADA_TASKS_STACK        0
</font> #endif
 
 #ifdef CONFIGURE_ENABLE_GO
<font color='#997700'>@@ -1795,6 +1789,13 @@
</font>   #define CONFIGURE_MEMORY_PER_TASK_FOR_NEWLIB 0
 #endif
 
<font color='#000088'>+/**
+ *  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
</font> 
 /*
  *  Calculate the RAM size based on the maximum number of objects configured.
<font color='#997700'>@@ -1813,8 +1814,7 @@
</font>  ( \
   _Configure_Object_RAM(_tasks, sizeof(Thread_Control)) + \
   (_Configure_Max_Objects(_tasks) * \
<font color='#880000'>-   (_Configure_From_workspace(CONFIGURE_MINIMUM_TASK_STACK_SIZE) + \
-    CONFIGURE_MEMORY_PER_TASK_FOR_CLASSIC_API + \
</font><font color='#000088'>+    (CONFIGURE_MEMORY_PER_TASK_FOR_CLASSIC_API + \
</font>     CONFIGURE_MEMORY_PER_TASK_FOR_NEWLIB + \
     CONFIGURE_MEMORY_PER_TASK_FOR_POSIX_API + \
     CONFIGURE_MEMORY_PER_TASK_FOR_SCHEDULER))  + \
<font color='#997700'>@@ -1833,22 +1833,13 @@
</font>     (CONFIGURE_MEMORY_FOR_PROXIES(CONFIGURE_MP_MAXIMUM_PROXIES) + \
      CONFIGURE_MEMORY_FOR_GLOBAL_OBJECTS( \
              CONFIGURE_MP_MAXIMUM_GLOBAL_OBJECTS) + \
<font color='#880000'>-     CONFIGURE_MEMORY_FOR_TASKS(1, 1) + \
-     CONFIGURE_EXTRA_MPCI_RECEIVE_SERVER_STACK \
</font><font color='#000088'>+     CONFIGURE_MEMORY_FOR_TASKS(1, 1) \
</font>   )
 #else
   #define CONFIGURE_MEMORY_FOR_MP  0
 #endif
 
 /**
<font color='#880000'>- *  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
-
-/**
</font>  *  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.
<font color='#997700'>@@ -1915,27 +1906,23 @@
</font>   _Configure_Object_RAM(1, sizeof(API_Mutex_Control))
 
 /**
<font color='#880000'>- *  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)))
-
-/**
</font>  *  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)
<font color='#880000'>-  #define CONFIGURE_MEMORY_FOR_IDLE_TASK \
-          CONFIGURE_IDLE_TASKS(CONFIGURE_SMP_MAXIMUM_PROCESSORS)
</font><font color='#000088'>+  #define CONFIGURE_IDLE_TASKS_COUNT CONFIGURE_SMP_MAXIMUM_PROCESSORS
</font> #else
<font color='#880000'>-  #define CONFIGURE_MEMORY_FOR_IDLE_TASK \
-          CONFIGURE_IDLE_TASKS(1)
</font><font color='#000088'>+  #define CONFIGURE_IDLE_TASKS_COUNT 1
</font> #endif
 
 /**
<font color='#000088'>+ *  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)
+
+/**
</font>  *  This macro accounts for general RTEMS system overhead.
  */
 #define CONFIGURE_MEMORY_FOR_SYSTEM_OVERHEAD \
<font color='#997700'>@@ -1946,42 +1933,6 @@
</font>     CONFIGURE_API_MUTEX_MEMORY                     /* allocation mutex */ \
   )
 
<font color='#880000'>-/*
- *  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)
-
</font> /**
  *  This macro provides a summation of the various task and thread
  *  requirements.
<font color='#997700'>@@ -2030,110 +1981,6 @@
</font>   #define CONFIGURE_MEMORY_FOR_SMP 0
 #endif
 
<font color='#880000'>-#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
-
</font> /**
  *  This calculates the memory required for the executive workspace.
  */
<font color='#997700'>@@ -2145,18 +1992,102 @@
</font>      CONFIGURE_TOTAL_TASKS_AND_THREADS, CONFIGURE_TOTAL_TASKS_AND_THREADS) + \
    CONFIGURE_MEMORY_FOR_CLASSIC + \
    CONFIGURE_MEMORY_FOR_POSIX + \
<font color='#880000'>-   (CONFIGURE_MAXIMUM_POSIX_THREADS * CONFIGURE_MINIMUM_TASK_STACK_SIZE ) + \
-   (CONFIGURE_MAXIMUM_GOROUTINES * CONFIGURE_MINIMUM_TASK_STACK_SIZE) + \
-   CONFIGURE_INITIALIZATION_THREADS_STACKS + \
</font>    CONFIGURE_MEMORY_FOR_STATIC_EXTENSIONS + \
    CONFIGURE_MEMORY_FOR_MP + \
    CONFIGURE_MEMORY_FOR_SMP + \
    CONFIGURE_MESSAGE_BUFFER_MEMORY + \
<font color='#880000'>-   (CONFIGURE_MEMORY_OVERHEAD * 1024) + \
-   (CONFIGURE_EXTRA_TASK_STACKS) + (CONFIGURE_ADA_TASKS_STACK) \
</font><font color='#000088'>+   (CONFIGURE_MEMORY_OVERHEAD * 1024) \
</font> ) & ~0x7)
<font color='#000088'>+
+/*
+ *  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
</font> #endif
 
<font color='#000088'>+/**
+ *  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 \
+  )
+
</font> #ifdef CONFIGURE_INIT
   /**
    *  This is the Classic API Configuration Table.
<font color='#997700'>@@ -2230,6 +2161,7 @@
</font>   rtems_configuration_table Configuration = {
     NULL,                                     /* filled in by BSP */
     CONFIGURE_EXECUTIVE_RAM_SIZE,             /* required RTEMS workspace */
<font color='#000088'>+    CONFIGURE_STACK_SPACE_SIZE,               /* required stack space */
</font>     CONFIGURE_MAXIMUM_USER_EXTENSIONS,        /* maximum dynamic extensions */
     CONFIGURE_MICROSECONDS_PER_TICK,          /* microseconds per clock tick */
     CONFIGURE_TICKS_PER_TIMESLICE,            /* ticks per timeslice quantum */
<font color='#997700'>@@ -2239,6 +2171,18 @@
</font>     CONFIGURE_TASK_STACK_ALLOCATOR,           /* stack allocator */
     CONFIGURE_TASK_STACK_DEALLOCATOR,         /* stack deallocator */
     CONFIGURE_ZERO_WORKSPACE_AUTOMATICALLY,   /* true to clear memory */
<font color='#000088'>+    #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
</font>     CONFIGURE_MAXIMUM_DRIVERS,                /* maximum device drivers */
     CONFIGURE_NUMBER_OF_DRIVERS,              /* static device drivers */
     Device_drivers,                           /* pointer to driver table */
<font color='#997700'>@@ -2318,6 +2262,131 @@
</font>  ******************************************************************
  */
 
<font color='#000088'>+#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
+
</font> /*
  *  Make sure a task/thread of some sort is configured.
  *

<font color='#006600'>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
</font><font color='#997700'>@@ -104,6 +104,10 @@
</font>    */
   uintptr_t                      work_space_size;
 
<font color='#000088'>+  /** This field specifies the size in bytes of the RTEMS thread stack space.
+   */
+  uintptr_t                      stack_space_size;
+
</font>   /** This field specifies the maximum number of dynamically installed
    *  used extensions.
    */
<font color='#997700'>@@ -152,6 +156,23 @@
</font>    */
   bool                           do_zero_of_workspace;
 
<font color='#000088'>+  /**
+   * @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;
+
</font>   uint32_t                       maximum_drivers;
   uint32_t                       number_of_device_drivers;
   rtems_driver_address_table    *Device_driver_table;
<font color='#997700'>@@ -193,11 +214,31 @@
</font> #define rtems_configuration_get_table() \
         (&Configuration)
 
<font color='#000088'>+#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)
+
</font> #define rtems_configuration_get_work_space_start() \
         (Configuration.work_space_start)
 
<font color='#000088'>+#define rtems_configuration_set_work_space_start( _start ) \
+        do { Configuration.work_space_start = (_start); } while (0)
+
</font> #define rtems_configuration_get_work_space_size() \
<font color='#880000'>-        (Configuration.work_space_size)
</font><font color='#000088'>+        (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)
</font> 
 #define rtems_configuration_get_maximum_extensions() \
         (Configuration.maximum_extensions)
<font color='#997700'>@@ -254,9 +295,10 @@
</font> 
 #if defined(RTEMS_MULTIPROCESSING)
   #define rtems_configuration_get_user_multiprocessing_table() \
<font color='#880000'>-     (Configuration.User_multiprocessing_table)
</font><font color='#000088'>+        (Configuration.User_multiprocessing_table)
</font> #else
<font color='#880000'>-  #define rtems_configuration_get_user_multiprocessing_table() NULL
</font><font color='#000088'>+  #define rtems_configuration_get_user_multiprocessing_table() \
+        NULL
</font> #endif
 
 #define rtems_configuration_get_rtems_api_configuration() \

<font color='#006600'>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
</font><font color='#997700'>@@ -33,11 +33,11 @@
</font> void _Workspace_Handler_initialization(void)
 {
   uintptr_t memory_available = 0;
<font color='#880000'>-  void *starting_address = Configuration.work_space_start;
-  uintptr_t size = Configuration.work_space_size;
</font><font color='#000088'>+  void *starting_address = rtems_configuration_get_work_space_start();
+  uintptr_t size = rtems_configuration_get_work_space_size();
</font> 
<font color='#880000'>-  if ( Configuration.do_zero_of_workspace )
-   memset( starting_address, 0, size );
</font><font color='#000088'>+  if ( rtems_configuration_get_do_zero_of_workspace() )
+    memset( starting_address, 0, size );
</font> 
   memory_available = _Heap_Initialize(
     &_Workspace_Area,
</pre>
<p> </p>
<a name='cs2'></a>
<table border='0' cellspacing='0' cellpadding='5' width='100%' bgcolor='#eeeeee'>
<tr><td colspan='3' bgcolor='#dddddd'>
 <font color='#bb2222'><strong>sh</strong></font>
</td></tr>
<tr><td colspan='3' bgcolor='#dddddd'><pre>2011-11-10 Sebastian Huber <sebastian.huber@embedded-brains.de>

        PR 1924/cpukit
        * bootcard.c: Update due to API changes.
</pre></td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/c/src/lib/libbsp/shared/ChangeLog.diff?r1=text&tr1=1.196&r2=text&tr2=1.197&diff_format=h">M</a></td><td width='1%'>1.197</td><td width='100%'>c/src/lib/libbsp/shared/ChangeLog</td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/c/src/lib/libbsp/shared/bootcard.c.diff?r1=text&tr1=1.52&r2=text&tr2=1.53&diff_format=h">M</a></td><td width='1%'>1.53</td><td width='100%'>c/src/lib/libbsp/shared/bootcard.c</td></tr>
</table>
<pre>
<font color='#006600'>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
</font><font color='#997700'>@@ -1,3 +1,8 @@
</font><font color='#000088'>+2011-11-10    Sebastian Huber <sebastian.huber@embedded-brains.de>
+
+       PR 1924/cpukit
+       * bootcard.c: Update due to API changes.
+
</font> 2011-11-08        Sebastian Huber <sebastian.huber@embedded-brains.de>
 
        * include/utility.h: Fixed some casts.

<font color='#006600'>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
</font><font color='#997700'>@@ -66,11 +66,6 @@
</font> const char *bsp_boot_cmdline;
 
 /*
<font color='#880000'>- * Are we using a single heap for the RTEMS Workspace and C Program Heap?
- */
-extern bool rtems_unified_work_area;
-
-/*
</font>  *  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.
<font color='#997700'>@@ -84,7 +79,7 @@
</font> )
 {
   if ( heap_start == BSP_BOOTCARD_HEAP_USES_WORK_AREA ) {
<font color='#880000'>-    if ( ! rtems_unified_work_area ) {
</font><font color='#000088'>+    if ( !rtems_configuration_get_unified_work_area() ) {
</font>       uintptr_t work_space_size = rtems_configuration_get_work_space_size();
 
       heap_start = (char *) work_area_start + work_space_size;
<font color='#997700'>@@ -121,7 +116,8 @@
</font>   void                  *heap_start = NULL;
   uintptr_t              heap_size = 0;
   uintptr_t              sbrk_amount = 0;
<font color='#880000'>-  uint32_t               status;
</font><font color='#000088'>+  uintptr_t              work_space_size = 0;
+  uint32_t               status = 0;
</font> 
   /*
    * Special case for PowerPC: The interrupt disable mask is stored in SPRG0.
<font color='#997700'>@@ -158,11 +154,12 @@
</font>    */
   if ( rtems_malloc_sbrk_helpers ) {
     sbrk_amount = bsp_sbrk_init(work_area_start, &work_area_size);
<font color='#880000'>-    if ( work_area_size <  Configuration.work_space_size && sbrk_amount > 0 ) {
</font><font color='#000088'>+    work_space_size = rtems_configuration_get_work_space_size();
+    if ( work_area_size <  work_space_size && sbrk_amount > 0 ) {
</font>       /* Need to use sbrk right now */
       uintptr_t sbrk_now;
 
<font color='#880000'>-      sbrk_now = (Configuration.work_space_size - work_area_size) / sbrk_amount;
</font><font color='#000088'>+      sbrk_now = (work_space_size - work_area_size) / sbrk_amount;
</font>       sbrk( sbrk_now * sbrk_amount );
     }
   }
<font color='#997700'>@@ -171,8 +168,9 @@
</font>     printk("Configuration error!\n"
            "Application was configured with CONFIGURE_MALLOC_BSP_SUPPORTS_SBRK\n"
            "but BSP was configured w/o sbrk support\n");
<font color='#880000'>-    bsp_cleanup(1);
-    return 1;
</font><font color='#000088'>+    status = 1;
+    bsp_cleanup( status );
+    return status;
</font>   }
 #endif
 
<font color='#997700'>@@ -185,21 +183,26 @@
</font>    *
    *  NOTE: Use cast to (void *) and %p since these are uintptr_t types.
    */
<font color='#880000'>-  if ( work_area_size <= Configuration.work_space_size ) {
</font><font color='#000088'>+  work_space_size = rtems_configuration_get_work_space_size();
+  if ( work_area_size <= work_space_size ) {
</font>     printk(
<font color='#880000'>-      "bootcard: work space too big for work area: %p > %p\n",
-      (void *) Configuration.work_space_size,
</font><font color='#000088'>+      "bootcard: work space too big for work area: %p >= %p\n",
+      (void *) work_space_size,
</font>       (void *) work_area_size
     );
<font color='#880000'>-    bsp_cleanup(1);
-    return 1;
</font><font color='#000088'>+    status = 1;
+    bsp_cleanup( status );
+    return status;
</font>   }
 
<font color='#880000'>-  if ( rtems_unified_work_area ) {
-    Configuration.work_space_start = work_area_start;
-    Configuration.work_space_size  = work_area_size;
</font><font color='#000088'>+  if ( !rtems_configuration_get_unified_work_area() ) {
+    rtems_configuration_set_work_space_start( work_area_start );
</font>   } else {
<font color='#880000'>-    Configuration.work_space_start = work_area_start;
</font><font color='#000088'>+    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 );
+    }
</font>   }
 
   #if (BSP_DIRTY_MEMORY == 1)
</pre>
<p> </p>
<a name='cs3'></a>
<table border='0' cellspacing='0' cellpadding='5' width='100%' bgcolor='#eeeeee'>
<tr><td colspan='3' bgcolor='#dddddd'>
 <font color='#bb2222'><strong>sh</strong></font>
</td></tr>
<tr><td colspan='3' bgcolor='#dddddd'><pre>2011-11-10 Sebastian Huber <sebastian.huber@embedded-brains.de>

        PR 1924/cpukit
        * sptests/spfatal08/testcase.h, sptests/spfatal12/testcase.h: Update
        due to API changes.
</pre></td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/testsuites/sptests/ChangeLog.diff?r1=text&tr1=1.497&r2=text&tr2=1.498&diff_format=h">M</a></td><td width='1%'>1.498</td><td width='100%'>testsuites/sptests/ChangeLog</td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/testsuites/sptests/spfatal08/testcase.h.diff?r1=text&tr1=1.6&r2=text&tr2=1.7&diff_format=h">M</a></td><td width='1%'>1.7</td><td width='100%'>testsuites/sptests/spfatal08/testcase.h</td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/testsuites/sptests/spfatal12/testcase.h.diff?r1=text&tr1=1.1&r2=text&tr2=1.2&diff_format=h">M</a></td><td width='1%'>1.2</td><td width='100%'>testsuites/sptests/spfatal12/testcase.h</td></tr>
</table>
<pre>
<font color='#006600'>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
</font><font color='#997700'>@@ -1,3 +1,9 @@
</font><font color='#000088'>+2011-11-10    Sebastian Huber <sebastian.huber@embedded-brains.de>
+
+       PR 1924/cpukit
+       * sptests/spfatal08/testcase.h, sptests/spfatal12/testcase.h: Update
+       due to API changes.
+
</font> 2011-10-06        Joel Sherrill <joel.sherrill@oarcorp.com>
 
        * sp2038/.cvsignore: New file.

<font color='#006600'>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
</font><font color='#997700'>@@ -41,8 +41,9 @@
</font> 
 void force_error()
 {
<font color='#880000'>-  Configuration.work_space_start = Workspace;
-  Configuration.work_space_size  = 256;
</font><font color='#000088'>+  rtems_configuration_set_work_space_start( Workspace );
+  rtems_configuration_set_work_space_size( sizeof(Workspace) );
+  rtems_configuration_set_stack_space_size( 0 );
</font> 
   rtems_initialize_data_structures();;
   /* we will not run this far */

<font color='#006600'>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
</font><font color='#997700'>@@ -19,7 +19,8 @@
</font> 
 void force_error()
 {
<font color='#880000'>-  Configuration.work_space_size  = sizeof(void *);
</font><font color='#000088'>+  rtems_configuration_set_work_space_size( sizeof(void *) );
+  rtems_configuration_set_stack_space_size( 0 );
</font>   rtems_initialize_data_structures();
 
   /* we will not run this far */
</pre>
<p> </p>

<p>--<br />
<small>Generated by <a href="http://www.codewiz.org/projects/index.html#loginfo">Deluxe Loginfo</a> 2.122 by Bernardo Innocenti <bernie@develer.com></small></p>
</body>
</html>