Index: c/src/exec/libcsupport/src/libio.c
===================================================================
--- c/src/exec/libcsupport/src/libio.c	(revision 3320e526ffa849a9525ebe262e0b008897efa3c5)
+++ c/src/exec/libcsupport/src/libio.c	(revision e6d4b1d0861d0bd37d7d57db696286de254ad7a2)
@@ -91,6 +91,7 @@
      */
 
-    config->maximum_semaphores += 1;            /* one for iop table */
-    config->maximum_semaphores += max_fds;
+    /* one for iop table */
+    config->RTEMS_api_configuration->maximum_semaphores += 1; 
+    config->RTEMS_api_configuration->maximum_semaphores += max_fds;
 }
 
Index: c/src/exec/posix/headers/config.h
===================================================================
--- c/src/exec/posix/headers/config.h	(revision e6d4b1d0861d0bd37d7d57db696286de254ad7a2)
+++ c/src/exec/posix/headers/config.h	(revision e6d4b1d0861d0bd37d7d57db696286de254ad7a2)
@@ -0,0 +1,51 @@
+/*  config.h
+ *
+ *  This include file contains the table of user defined configuration
+ *  parameters specific for the POSIX API.
+ *
+ *  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$
+ */
+
+#ifndef __RTEMS_POSIX_CONFIGURATION_h
+#define __RTEMS_POSIX_CONFIGURATION_h
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ *  XXX
+ *
+ *  The following records define the Configuration Table.  The
+ *  information contained in this table is required in all
+ *  RTEMS systems, whether single or multiprocessor.  This
+ *  table primarily defines the following:
+ *
+ *     + required number of each object type
+ */
+
+/* XXX fix me */
+typedef int posix_initialization_tasks_table;
+
+typedef struct {
+  int                               maximum_threads;
+  int                               maximum_mutexes;
+  int                               maximum_condition_variables;
+  int                               number_of_initialization_tasks;
+  posix_initialization_tasks_table *User_initialization_tasks_table;
+} posix_api_configuration_table;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+/* end of include file */
Index: c/src/exec/posix/include/rtems/posix/config.h
===================================================================
--- c/src/exec/posix/include/rtems/posix/config.h	(revision e6d4b1d0861d0bd37d7d57db696286de254ad7a2)
+++ c/src/exec/posix/include/rtems/posix/config.h	(revision e6d4b1d0861d0bd37d7d57db696286de254ad7a2)
@@ -0,0 +1,51 @@
+/*  config.h
+ *
+ *  This include file contains the table of user defined configuration
+ *  parameters specific for the POSIX API.
+ *
+ *  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$
+ */
+
+#ifndef __RTEMS_POSIX_CONFIGURATION_h
+#define __RTEMS_POSIX_CONFIGURATION_h
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ *  XXX
+ *
+ *  The following records define the Configuration Table.  The
+ *  information contained in this table is required in all
+ *  RTEMS systems, whether single or multiprocessor.  This
+ *  table primarily defines the following:
+ *
+ *     + required number of each object type
+ */
+
+/* XXX fix me */
+typedef int posix_initialization_tasks_table;
+
+typedef struct {
+  int                               maximum_threads;
+  int                               maximum_mutexes;
+  int                               maximum_condition_variables;
+  int                               number_of_initialization_tasks;
+  posix_initialization_tasks_table *User_initialization_tasks_table;
+} posix_api_configuration_table;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+/* end of include file */
Index: c/src/exec/rtems/headers/config.h
===================================================================
--- c/src/exec/rtems/headers/config.h	(revision e6d4b1d0861d0bd37d7d57db696286de254ad7a2)
+++ c/src/exec/rtems/headers/config.h	(revision e6d4b1d0861d0bd37d7d57db696286de254ad7a2)
@@ -0,0 +1,54 @@
+/*  config.h
+ *
+ *  This include file contains the table of user defined configuration
+ *  parameters specific for the RTEMS API.
+ *
+ *  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$
+ */
+
+#ifndef __RTEMS_RTEMS_CONFIGURATION_h
+#define __RTEMS_RTEMS_CONFIGURATION_h
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <rtems/rtems/types.h>
+#include <rtems/rtems/tasks.h>
+
+/*
+ *  The following records define the Configuration Table.  The
+ *  information contained in this table is required in all
+ *  RTEMS systems, whether single or multiprocessor.  This
+ *  table primarily defines the following:
+ *
+ *     + required number of each object type
+ */
+
+typedef struct {
+  unsigned32                        maximum_tasks;
+  unsigned32                        maximum_timers;
+  unsigned32                        maximum_semaphores;
+  unsigned32                        maximum_message_queues;
+  unsigned32                        maximum_partitions;
+  unsigned32                        maximum_regions;
+  unsigned32                        maximum_ports;
+  unsigned32                        maximum_periods;
+  unsigned32                        number_of_initialization_tasks;
+  rtems_initialization_tasks_table *User_initialization_tasks_table;
+} rtems_api_configuration_table;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+/* end of include file */
Index: c/src/exec/rtems/headers/tasks.h
===================================================================
--- c/src/exec/rtems/headers/tasks.h	(revision 3320e526ffa849a9525ebe262e0b008897efa3c5)
+++ c/src/exec/rtems/headers/tasks.h	(revision e6d4b1d0861d0bd37d7d57db696286de254ad7a2)
@@ -46,4 +46,5 @@
 #include <rtems/rtems/asr.h>
 #include <rtems/rtems/attr.h>
+#include <rtems/rtems/status.h>
 
 /*
Index: c/src/exec/rtems/include/rtems/rtems/config.h
===================================================================
--- c/src/exec/rtems/include/rtems/rtems/config.h	(revision e6d4b1d0861d0bd37d7d57db696286de254ad7a2)
+++ c/src/exec/rtems/include/rtems/rtems/config.h	(revision e6d4b1d0861d0bd37d7d57db696286de254ad7a2)
@@ -0,0 +1,54 @@
+/*  config.h
+ *
+ *  This include file contains the table of user defined configuration
+ *  parameters specific for the RTEMS API.
+ *
+ *  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$
+ */
+
+#ifndef __RTEMS_RTEMS_CONFIGURATION_h
+#define __RTEMS_RTEMS_CONFIGURATION_h
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <rtems/rtems/types.h>
+#include <rtems/rtems/tasks.h>
+
+/*
+ *  The following records define the Configuration Table.  The
+ *  information contained in this table is required in all
+ *  RTEMS systems, whether single or multiprocessor.  This
+ *  table primarily defines the following:
+ *
+ *     + required number of each object type
+ */
+
+typedef struct {
+  unsigned32                        maximum_tasks;
+  unsigned32                        maximum_timers;
+  unsigned32                        maximum_semaphores;
+  unsigned32                        maximum_message_queues;
+  unsigned32                        maximum_partitions;
+  unsigned32                        maximum_regions;
+  unsigned32                        maximum_ports;
+  unsigned32                        maximum_periods;
+  unsigned32                        number_of_initialization_tasks;
+  rtems_initialization_tasks_table *User_initialization_tasks_table;
+} rtems_api_configuration_table;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+/* end of include file */
Index: c/src/exec/rtems/include/rtems/rtems/tasks.h
===================================================================
--- c/src/exec/rtems/include/rtems/rtems/tasks.h	(revision 3320e526ffa849a9525ebe262e0b008897efa3c5)
+++ c/src/exec/rtems/include/rtems/rtems/tasks.h	(revision e6d4b1d0861d0bd37d7d57db696286de254ad7a2)
@@ -46,4 +46,5 @@
 #include <rtems/rtems/asr.h>
 #include <rtems/rtems/attr.h>
+#include <rtems/rtems/status.h>
 
 /*
Index: c/src/exec/sapi/headers/confdefs.h
===================================================================
--- c/src/exec/sapi/headers/confdefs.h	(revision 3320e526ffa849a9525ebe262e0b008897efa3c5)
+++ c/src/exec/sapi/headers/confdefs.h	(revision e6d4b1d0861d0bd37d7d57db696286de254ad7a2)
@@ -23,5 +23,4 @@
 #endif
  
-
 extern rtems_initialization_tasks_table Initialization_tasks[];
 extern rtems_driver_address_table       Device_drivers[];
@@ -342,7 +341,6 @@
 
 #ifdef CONFIGURE_INIT
-rtems_configuration_table Configuration = {
-  CONFIGURE_EXECUTIVE_RAM_WORK_AREA,
-  CONFIGURE_EXECUTIVE_RAM_SIZE,
+
+rtems_api_configuration_table Configuration_RTEMS_API = {
   CONFIGURE_MAXIMUM_TASKS,
   CONFIGURE_MAXIMUM_TIMERS,
@@ -353,16 +351,23 @@
   CONFIGURE_MAXIMUM_PORTS,
   CONFIGURE_MAXIMUM_PERIODS,
+  sizeof (Initialization_tasks)/
+   sizeof(rtems_initialization_tasks_table), /* number of init tasks */
+  Initialization_tasks                       /* init task(s) table */
+};
+
+rtems_configuration_table Configuration = {
+  CONFIGURE_EXECUTIVE_RAM_WORK_AREA,
+  CONFIGURE_EXECUTIVE_RAM_SIZE,
   CONFIGURE_MAXIMUM_USER_EXTENSIONS,
   CONFIGURE_MICROSECONDS_PER_TICK,
   CONFIGURE_TICKS_PER_TIMESLICE,
-  sizeof (Initialization_tasks)/
-   sizeof(rtems_initialization_tasks_table), /* number of init tasks */
-  Initialization_tasks,                      /* init task(s) table */
+  CONFIGURE_MAXIMUM_DEVICES,
   sizeof (Device_drivers)/
     sizeof(rtems_driver_address_table),      /* number of device drivers */
-  CONFIGURE_MAXIMUM_DEVICES,
   Device_drivers,                            /* pointer to driver table */
   CONFIGURE_INITIAL_EXTENSIONS,              /* pointer to initial extensions */
-  CONFIGURE_MULTIPROCESSING_TABLE            /* ptr to MP config table */
+  CONFIGURE_MULTIPROCESSING_TABLE,           /* pointer to MP config table */
+  &Configuration_RTEMS_API,                  /* pointer to RTEMS API config */
+  NULL                                       /* pointer to RTEMS API config */
 };
 #endif
Index: c/src/exec/sapi/headers/config.h
===================================================================
--- c/src/exec/sapi/headers/config.h	(revision 3320e526ffa849a9525ebe262e0b008897efa3c5)
+++ c/src/exec/sapi/headers/config.h	(revision e6d4b1d0861d0bd37d7d57db696286de254ad7a2)
@@ -22,10 +22,16 @@
 #endif
 
+#include <rtems/posix/config.h>
+#include <rtems/rtems/config.h>
+
+/*  XXX <rtems/rtems/config.h> should cover these
 #include <rtems/rtems/status.h>
+#include <rtems/rtems/types.h>
+#include <rtems/rtems/tasks.h>
+*/
+
 #include <rtems/extension.h>
 #include <rtems/io.h>
 #include <rtems/score/mpci.h>
-#include <rtems/rtems/types.h>
-#include <rtems/rtems/tasks.h>
 
 /*
@@ -51,7 +57,7 @@
  *
  *     + location and size of the RTEMS Workspace
- *     + required number of each object type
  *     + microseconds per clock tick
  *     + clock ticks per task timeslice
+ *     + required number of each object type for each API configured
  */
 
@@ -59,22 +65,14 @@
   void                             *work_space_start;
   unsigned32                        work_space_size;
-  unsigned32                        maximum_tasks;
-  unsigned32                        maximum_timers;
-  unsigned32                        maximum_semaphores;
-  unsigned32                        maximum_message_queues;
-  unsigned32                        maximum_partitions;
-  unsigned32                        maximum_regions;
-  unsigned32                        maximum_ports;
-  unsigned32                        maximum_periods;
   unsigned32                        maximum_extensions;
   unsigned32                        microseconds_per_tick;
   unsigned32                        ticks_per_timeslice;
-  unsigned32                        number_of_initialization_tasks;
-  rtems_initialization_tasks_table *User_initialization_tasks_table;
+  unsigned32                        maximum_devices;
   unsigned32                        number_of_device_drivers;
-  unsigned32                        maximum_devices;
   rtems_driver_address_table       *Device_driver_table;
   rtems_extensions_table           *User_extension_table;
   rtems_multiprocessing_table      *User_multiprocessing_table;
+  rtems_api_configuration_table    *RTEMS_api_configuration;
+  posix_api_configuration_table    *Posix_api_configuration;
 } rtems_configuration_table;
 
Index: c/src/exec/sapi/include/confdefs.h
===================================================================
--- c/src/exec/sapi/include/confdefs.h	(revision 3320e526ffa849a9525ebe262e0b008897efa3c5)
+++ c/src/exec/sapi/include/confdefs.h	(revision e6d4b1d0861d0bd37d7d57db696286de254ad7a2)
@@ -23,5 +23,4 @@
 #endif
  
-
 extern rtems_initialization_tasks_table Initialization_tasks[];
 extern rtems_driver_address_table       Device_drivers[];
@@ -342,7 +341,6 @@
 
 #ifdef CONFIGURE_INIT
-rtems_configuration_table Configuration = {
-  CONFIGURE_EXECUTIVE_RAM_WORK_AREA,
-  CONFIGURE_EXECUTIVE_RAM_SIZE,
+
+rtems_api_configuration_table Configuration_RTEMS_API = {
   CONFIGURE_MAXIMUM_TASKS,
   CONFIGURE_MAXIMUM_TIMERS,
@@ -353,16 +351,23 @@
   CONFIGURE_MAXIMUM_PORTS,
   CONFIGURE_MAXIMUM_PERIODS,
+  sizeof (Initialization_tasks)/
+   sizeof(rtems_initialization_tasks_table), /* number of init tasks */
+  Initialization_tasks                       /* init task(s) table */
+};
+
+rtems_configuration_table Configuration = {
+  CONFIGURE_EXECUTIVE_RAM_WORK_AREA,
+  CONFIGURE_EXECUTIVE_RAM_SIZE,
   CONFIGURE_MAXIMUM_USER_EXTENSIONS,
   CONFIGURE_MICROSECONDS_PER_TICK,
   CONFIGURE_TICKS_PER_TIMESLICE,
-  sizeof (Initialization_tasks)/
-   sizeof(rtems_initialization_tasks_table), /* number of init tasks */
-  Initialization_tasks,                      /* init task(s) table */
+  CONFIGURE_MAXIMUM_DEVICES,
   sizeof (Device_drivers)/
     sizeof(rtems_driver_address_table),      /* number of device drivers */
-  CONFIGURE_MAXIMUM_DEVICES,
   Device_drivers,                            /* pointer to driver table */
   CONFIGURE_INITIAL_EXTENSIONS,              /* pointer to initial extensions */
-  CONFIGURE_MULTIPROCESSING_TABLE            /* ptr to MP config table */
+  CONFIGURE_MULTIPROCESSING_TABLE,           /* pointer to MP config table */
+  &Configuration_RTEMS_API,                  /* pointer to RTEMS API config */
+  NULL                                       /* pointer to RTEMS API config */
 };
 #endif
Index: c/src/exec/sapi/include/rtems/config.h
===================================================================
--- c/src/exec/sapi/include/rtems/config.h	(revision 3320e526ffa849a9525ebe262e0b008897efa3c5)
+++ c/src/exec/sapi/include/rtems/config.h	(revision e6d4b1d0861d0bd37d7d57db696286de254ad7a2)
@@ -22,10 +22,16 @@
 #endif
 
+#include <rtems/posix/config.h>
+#include <rtems/rtems/config.h>
+
+/*  XXX <rtems/rtems/config.h> should cover these
 #include <rtems/rtems/status.h>
+#include <rtems/rtems/types.h>
+#include <rtems/rtems/tasks.h>
+*/
+
 #include <rtems/extension.h>
 #include <rtems/io.h>
 #include <rtems/score/mpci.h>
-#include <rtems/rtems/types.h>
-#include <rtems/rtems/tasks.h>
 
 /*
@@ -51,7 +57,7 @@
  *
  *     + location and size of the RTEMS Workspace
- *     + required number of each object type
  *     + microseconds per clock tick
  *     + clock ticks per task timeslice
+ *     + required number of each object type for each API configured
  */
 
@@ -59,22 +65,14 @@
   void                             *work_space_start;
   unsigned32                        work_space_size;
-  unsigned32                        maximum_tasks;
-  unsigned32                        maximum_timers;
-  unsigned32                        maximum_semaphores;
-  unsigned32                        maximum_message_queues;
-  unsigned32                        maximum_partitions;
-  unsigned32                        maximum_regions;
-  unsigned32                        maximum_ports;
-  unsigned32                        maximum_periods;
   unsigned32                        maximum_extensions;
   unsigned32                        microseconds_per_tick;
   unsigned32                        ticks_per_timeslice;
-  unsigned32                        number_of_initialization_tasks;
-  rtems_initialization_tasks_table *User_initialization_tasks_table;
+  unsigned32                        maximum_devices;
   unsigned32                        number_of_device_drivers;
-  unsigned32                        maximum_devices;
   rtems_driver_address_table       *Device_driver_table;
   rtems_extensions_table           *User_extension_table;
   rtems_multiprocessing_table      *User_multiprocessing_table;
+  rtems_api_configuration_table    *RTEMS_api_configuration;
+  posix_api_configuration_table    *Posix_api_configuration;
 } rtems_configuration_table;
 
Index: c/src/exec/sapi/src/rtemsapi.c
===================================================================
--- c/src/exec/sapi/src/rtemsapi.c	(revision 3320e526ffa849a9525ebe262e0b008897efa3c5)
+++ c/src/exec/sapi/src/rtemsapi.c	(revision e6d4b1d0861d0bd37d7d57db696286de254ad7a2)
@@ -46,4 +46,8 @@
 )
 {
+  rtems_api_configuration_table *api_configuration;
+
+  api_configuration = configuration_table->RTEMS_api_configuration;
+
   _Attributes_Handler_initialization();
  
@@ -53,10 +57,10 @@
  
   _RTEMS_tasks_Manager_initialization(
-    configuration_table->maximum_tasks,
-    configuration_table->number_of_initialization_tasks,
-    configuration_table->User_initialization_tasks_table
+    api_configuration->maximum_tasks,
+    api_configuration->number_of_initialization_tasks,
+    api_configuration->User_initialization_tasks_table
   );
  
-  _Timer_Manager_initialization( configuration_table->maximum_timers );
+  _Timer_Manager_initialization( api_configuration->maximum_timers );
  
   _Signal_Manager_initialization();
@@ -65,24 +69,16 @@
  
   _Message_queue_Manager_initialization(
-    configuration_table->maximum_message_queues
+    api_configuration->maximum_message_queues
   );
  
-  _Semaphore_Manager_initialization(
-    configuration_table->maximum_semaphores
-  );
+  _Semaphore_Manager_initialization( api_configuration->maximum_semaphores );
  
-  _Partition_Manager_initialization(
-    configuration_table->maximum_partitions
-  );
+  _Partition_Manager_initialization( api_configuration->maximum_partitions );
  
-  _Region_Manager_initialization( configuration_table->maximum_regions );
+  _Region_Manager_initialization( api_configuration->maximum_regions );
  
-  _Dual_ported_memory_Manager_initialization(
-    configuration_table->maximum_ports
-  );
+  _Dual_ported_memory_Manager_initialization( api_configuration->maximum_ports);
  
-  _Rate_monotonic_Manager_initialization(
-    configuration_table->maximum_periods
-  );
+  _Rate_monotonic_Manager_initialization( api_configuration->maximum_periods );
 }
 
Index: c/src/lib/libbsp/hppa1.1/simhppa/startup/bspstart.c
===================================================================
--- c/src/lib/libbsp/hppa1.1/simhppa/startup/bspstart.c	(revision 3320e526ffa849a9525ebe262e0b008897efa3c5)
+++ c/src/lib/libbsp/hppa1.1/simhppa/startup/bspstart.c	(revision e6d4b1d0861d0bd37d7d57db696286de254ad7a2)
@@ -378,5 +378,5 @@
      */
 
-    BSP_Configuration.maximum_regions++;
+    BSP_Configuration.RTEMS_api_configuration->maximum_regions++;
 
 #ifdef RTEMS_NEWLIB
Index: c/src/lib/libbsp/i386/force386/startup/bspstart.c
===================================================================
--- c/src/lib/libbsp/i386/force386/startup/bspstart.c	(revision 3320e526ffa849a9525ebe262e0b008897efa3c5)
+++ c/src/lib/libbsp/i386/force386/startup/bspstart.c	(revision e6d4b1d0861d0bd37d7d57db696286de254ad7a2)
@@ -195,5 +195,5 @@
    */
 
-  BSP_Configuration.maximum_regions++;
+  BSP_Configuration.RTEMS_api_configuration->maximum_regions++;
 
   /*
Index: c/src/lib/libbsp/i386/go32/startup/bspstart.c
===================================================================
--- c/src/lib/libbsp/i386/go32/startup/bspstart.c	(revision 3320e526ffa849a9525ebe262e0b008897efa3c5)
+++ c/src/lib/libbsp/i386/go32/startup/bspstart.c	(revision e6d4b1d0861d0bd37d7d57db696286de254ad7a2)
@@ -195,5 +195,5 @@
    */
 
-  BSP_Configuration.maximum_regions++;
+  BSP_Configuration.RTEMS_api_configuration->maximum_regions++;
 
   /*
Index: c/src/lib/libbsp/i960/cvme961/startup/bspstart.c
===================================================================
--- c/src/lib/libbsp/i960/cvme961/startup/bspstart.c	(revision 3320e526ffa849a9525ebe262e0b008897efa3c5)
+++ c/src/lib/libbsp/i960/cvme961/startup/bspstart.c	(revision e6d4b1d0861d0bd37d7d57db696286de254ad7a2)
@@ -209,5 +209,5 @@
    */
 
-  BSP_Configuration.maximum_regions++;
+  BSP_Configuration.RTEMS_api_configuration->maximum_regions++;
 
   /*
Index: c/src/lib/libbsp/m68k/dmv152/startup/bspstart.c
===================================================================
--- c/src/lib/libbsp/m68k/dmv152/startup/bspstart.c	(revision 3320e526ffa849a9525ebe262e0b008897efa3c5)
+++ c/src/lib/libbsp/m68k/dmv152/startup/bspstart.c	(revision e6d4b1d0861d0bd37d7d57db696286de254ad7a2)
@@ -217,5 +217,5 @@
    */
 
-  BSP_Configuration.maximum_regions++;
+  BSP_Configuration.RTEMS_api_configuration->maximum_regions++;
 
   /*
Index: c/src/lib/libbsp/m68k/efi332/startup/bspstart.c
===================================================================
--- c/src/lib/libbsp/m68k/efi332/startup/bspstart.c	(revision 3320e526ffa849a9525ebe262e0b008897efa3c5)
+++ c/src/lib/libbsp/m68k/efi332/startup/bspstart.c	(revision e6d4b1d0861d0bd37d7d57db696286de254ad7a2)
@@ -190,5 +190,5 @@
    */
 
-  BSP_Configuration.maximum_regions++;
+  BSP_Configuration.RTEMS_api_configuration->maximum_regions++;
 
   /*
Index: c/src/lib/libbsp/m68k/efi68k/startup/bspstart.c
===================================================================
--- c/src/lib/libbsp/m68k/efi68k/startup/bspstart.c	(revision 3320e526ffa849a9525ebe262e0b008897efa3c5)
+++ c/src/lib/libbsp/m68k/efi68k/startup/bspstart.c	(revision e6d4b1d0861d0bd37d7d57db696286de254ad7a2)
@@ -200,5 +200,5 @@
    */
 
-  BSP_Configuration.maximum_regions++;
+  BSP_Configuration.RTEMS_api_configuration->maximum_regions++;
 
   /*
Index: c/src/lib/libbsp/m68k/gen68302/startup/bspstart.c
===================================================================
--- c/src/lib/libbsp/m68k/gen68302/startup/bspstart.c	(revision 3320e526ffa849a9525ebe262e0b008897efa3c5)
+++ c/src/lib/libbsp/m68k/gen68302/startup/bspstart.c	(revision e6d4b1d0861d0bd37d7d57db696286de254ad7a2)
@@ -181,5 +181,5 @@
    */
 
-  BSP_Configuration.maximum_regions++;
+  BSP_Configuration.RTEMS_api_configuration->maximum_regions++;
 
   /*
Index: c/src/lib/libbsp/m68k/gen68360/startup/bspstart.c
===================================================================
--- c/src/lib/libbsp/m68k/gen68360/startup/bspstart.c	(revision 3320e526ffa849a9525ebe262e0b008897efa3c5)
+++ c/src/lib/libbsp/m68k/gen68360/startup/bspstart.c	(revision e6d4b1d0861d0bd37d7d57db696286de254ad7a2)
@@ -178,5 +178,5 @@
    */
 
-  BSP_Configuration.maximum_regions++;
+  BSP_Configuration.RTEMS_api_configuration->maximum_regions++;
 
   /*
Index: c/src/lib/libbsp/m68k/idp/startup/bspstart.c
===================================================================
--- c/src/lib/libbsp/m68k/idp/startup/bspstart.c	(revision 3320e526ffa849a9525ebe262e0b008897efa3c5)
+++ c/src/lib/libbsp/m68k/idp/startup/bspstart.c	(revision e6d4b1d0861d0bd37d7d57db696286de254ad7a2)
@@ -224,5 +224,5 @@
    */
  
-  BSP_Configuration.maximum_regions++;
+  BSP_Configuration.RTEMS_api_configuration->maximum_regions++;
  
   /*
Index: c/src/lib/libbsp/m68k/mvme136/startup/bspstart.c
===================================================================
--- c/src/lib/libbsp/m68k/mvme136/startup/bspstart.c	(revision 3320e526ffa849a9525ebe262e0b008897efa3c5)
+++ c/src/lib/libbsp/m68k/mvme136/startup/bspstart.c	(revision e6d4b1d0861d0bd37d7d57db696286de254ad7a2)
@@ -207,5 +207,5 @@
    */
 
-  BSP_Configuration.maximum_regions++;
+  BSP_Configuration.RTEMS_api_configuration->maximum_regions++;
 
   /*
Index: c/src/lib/libbsp/m68k/mvme147/startup/bspstart.c
===================================================================
--- c/src/lib/libbsp/m68k/mvme147/startup/bspstart.c	(revision 3320e526ffa849a9525ebe262e0b008897efa3c5)
+++ c/src/lib/libbsp/m68k/mvme147/startup/bspstart.c	(revision e6d4b1d0861d0bd37d7d57db696286de254ad7a2)
@@ -213,5 +213,5 @@
    */
 
-  BSP_Configuration.maximum_regions++;
+  BSP_Configuration.RTEMS_api_configuration->maximum_regions++;
 
   /*
Index: c/src/lib/libbsp/m68k/mvme162/startup/bspstart.c
===================================================================
--- c/src/lib/libbsp/m68k/mvme162/startup/bspstart.c	(revision 3320e526ffa849a9525ebe262e0b008897efa3c5)
+++ c/src/lib/libbsp/m68k/mvme162/startup/bspstart.c	(revision e6d4b1d0861d0bd37d7d57db696286de254ad7a2)
@@ -221,5 +221,5 @@
    */
 
-  BSP_Configuration.maximum_regions++;
+  BSP_Configuration.RTEMS_api_configuration->maximum_regions++;
 
   /*
Index: c/src/lib/libbsp/no_cpu/no_bsp/startup/bspstart.c
===================================================================
--- c/src/lib/libbsp/no_cpu/no_bsp/startup/bspstart.c	(revision 3320e526ffa849a9525ebe262e0b008897efa3c5)
+++ c/src/lib/libbsp/no_cpu/no_bsp/startup/bspstart.c	(revision e6d4b1d0861d0bd37d7d57db696286de254ad7a2)
@@ -178,5 +178,5 @@
    */
 
-  BSP_Configuration.maximum_regions++;
+  BSP_Configuration.RTEMS_api_configuration->maximum_regions++;
 
   /*
Index: c/src/lib/libbsp/powerpc/papyrus/startup/bspstart.c
===================================================================
--- c/src/lib/libbsp/powerpc/papyrus/startup/bspstart.c	(revision 3320e526ffa849a9525ebe262e0b008897efa3c5)
+++ c/src/lib/libbsp/powerpc/papyrus/startup/bspstart.c	(revision e6d4b1d0861d0bd37d7d57db696286de254ad7a2)
@@ -196,5 +196,5 @@
    */
 
-  BSP_Configuration.maximum_regions++;
+  BSP_Configuration.RTEMS_api_configuration->maximum_regions++;
 
   /*
Index: c/src/lib/libbsp/unix/posix/startup/bspstart.c
===================================================================
--- c/src/lib/libbsp/unix/posix/startup/bspstart.c	(revision 3320e526ffa849a9525ebe262e0b008897efa3c5)
+++ c/src/lib/libbsp/unix/posix/startup/bspstart.c	(revision e6d4b1d0861d0bd37d7d57db696286de254ad7a2)
@@ -324,5 +324,5 @@
      */
 
-    BSP_Configuration.maximum_regions++;
+    BSP_Configuration.RTEMS_api_configuration->maximum_regions++;
 
 #ifdef RTEMS_NEWLIB
Index: c/src/lib/libc/libio.c
===================================================================
--- c/src/lib/libc/libio.c	(revision 3320e526ffa849a9525ebe262e0b008897efa3c5)
+++ c/src/lib/libc/libio.c	(revision e6d4b1d0861d0bd37d7d57db696286de254ad7a2)
@@ -91,6 +91,7 @@
      */
 
-    config->maximum_semaphores += 1;            /* one for iop table */
-    config->maximum_semaphores += max_fds;
+    /* one for iop table */
+    config->RTEMS_api_configuration->maximum_semaphores += 1; 
+    config->RTEMS_api_configuration->maximum_semaphores += max_fds;
 }
 
Index: c/src/lib/libmisc/monitor/mon-config.c
===================================================================
--- c/src/lib/libmisc/monitor/mon-config.c	(revision 3320e526ffa849a9525ebe262e0b008897efa3c5)
+++ c/src/lib/libmisc/monitor/mon-config.c	(revision e6d4b1d0861d0bd37d7d57db696286de254ad7a2)
@@ -30,19 +30,20 @@
 {
     rtems_configuration_table *c = (rtems_configuration_table *) config_void;
+    rtems_api_configuration_table *r = c->RTEMS_api_configuration;
 
     canonical_config->work_space_start = c->work_space_start;
     canonical_config->work_space_size = c->work_space_size;
-    canonical_config->maximum_tasks = c->maximum_tasks;
-    canonical_config->maximum_timers = c->maximum_timers;
-    canonical_config->maximum_semaphores = c->maximum_semaphores;
-    canonical_config->maximum_message_queues = c->maximum_message_queues;
-    canonical_config->maximum_partitions = c->maximum_partitions;
-    canonical_config->maximum_regions = c->maximum_regions;
-    canonical_config->maximum_ports = c->maximum_ports;
-    canonical_config->maximum_periods = c->maximum_periods;
+    canonical_config->maximum_tasks = r->maximum_tasks;
+    canonical_config->maximum_timers = r->maximum_timers;
+    canonical_config->maximum_semaphores = r->maximum_semaphores;
+    canonical_config->maximum_message_queues = r->maximum_message_queues;
+    canonical_config->maximum_partitions = r->maximum_partitions;
+    canonical_config->maximum_regions = r->maximum_regions;
+    canonical_config->maximum_ports = r->maximum_ports;
+    canonical_config->maximum_periods = r->maximum_periods;
     canonical_config->maximum_extensions = c->maximum_extensions;
     canonical_config->microseconds_per_tick = c->microseconds_per_tick;
     canonical_config->ticks_per_timeslice = c->ticks_per_timeslice;
-    canonical_config->number_of_initialization_tasks = c->number_of_initialization_tasks;
+    canonical_config->number_of_initialization_tasks = r->number_of_initialization_tasks;
 }    
 
Index: c/src/lib/libmisc/monitor/mon-itask.c
===================================================================
--- c/src/lib/libmisc/monitor/mon-itask.c	(revision 3320e526ffa849a9525ebe262e0b008897efa3c5)
+++ c/src/lib/libmisc/monitor/mon-itask.c	(revision e6d4b1d0861d0bd37d7d57db696286de254ad7a2)
@@ -43,10 +43,10 @@
     int n = rtems_get_index(*next_id);
 
-    if (n >= c->number_of_initialization_tasks)
+    if (n >= c->RTEMS_api_configuration->number_of_initialization_tasks)
         goto failed;
     
     _Thread_Disable_dispatch();
 
-    itask = c->User_initialization_tasks_table + n;
+    itask = c->RTEMS_api_configuration->User_initialization_tasks_table + n;
 
     /*
Index: c/src/libmisc/monitor/mon-config.c
===================================================================
--- c/src/libmisc/monitor/mon-config.c	(revision 3320e526ffa849a9525ebe262e0b008897efa3c5)
+++ c/src/libmisc/monitor/mon-config.c	(revision e6d4b1d0861d0bd37d7d57db696286de254ad7a2)
@@ -30,19 +30,20 @@
 {
     rtems_configuration_table *c = (rtems_configuration_table *) config_void;
+    rtems_api_configuration_table *r = c->RTEMS_api_configuration;
 
     canonical_config->work_space_start = c->work_space_start;
     canonical_config->work_space_size = c->work_space_size;
-    canonical_config->maximum_tasks = c->maximum_tasks;
-    canonical_config->maximum_timers = c->maximum_timers;
-    canonical_config->maximum_semaphores = c->maximum_semaphores;
-    canonical_config->maximum_message_queues = c->maximum_message_queues;
-    canonical_config->maximum_partitions = c->maximum_partitions;
-    canonical_config->maximum_regions = c->maximum_regions;
-    canonical_config->maximum_ports = c->maximum_ports;
-    canonical_config->maximum_periods = c->maximum_periods;
+    canonical_config->maximum_tasks = r->maximum_tasks;
+    canonical_config->maximum_timers = r->maximum_timers;
+    canonical_config->maximum_semaphores = r->maximum_semaphores;
+    canonical_config->maximum_message_queues = r->maximum_message_queues;
+    canonical_config->maximum_partitions = r->maximum_partitions;
+    canonical_config->maximum_regions = r->maximum_regions;
+    canonical_config->maximum_ports = r->maximum_ports;
+    canonical_config->maximum_periods = r->maximum_periods;
     canonical_config->maximum_extensions = c->maximum_extensions;
     canonical_config->microseconds_per_tick = c->microseconds_per_tick;
     canonical_config->ticks_per_timeslice = c->ticks_per_timeslice;
-    canonical_config->number_of_initialization_tasks = c->number_of_initialization_tasks;
+    canonical_config->number_of_initialization_tasks = r->number_of_initialization_tasks;
 }    
 
Index: c/src/libmisc/monitor/mon-itask.c
===================================================================
--- c/src/libmisc/monitor/mon-itask.c	(revision 3320e526ffa849a9525ebe262e0b008897efa3c5)
+++ c/src/libmisc/monitor/mon-itask.c	(revision e6d4b1d0861d0bd37d7d57db696286de254ad7a2)
@@ -43,10 +43,10 @@
     int n = rtems_get_index(*next_id);
 
-    if (n >= c->number_of_initialization_tasks)
+    if (n >= c->RTEMS_api_configuration->number_of_initialization_tasks)
         goto failed;
     
     _Thread_Disable_dispatch();
 
-    itask = c->User_initialization_tasks_table + n;
+    itask = c->RTEMS_api_configuration->User_initialization_tasks_table + n;
 
     /*
Index: c/src/tests/support/include/tmacros.h
===================================================================
--- c/src/tests/support/include/tmacros.h	(revision 3320e526ffa849a9525ebe262e0b008897efa3c5)
+++ c/src/tests/support/include/tmacros.h	(revision e6d4b1d0861d0bd37d7d57db696286de254ad7a2)
@@ -110,5 +110,6 @@
 
 #define task_number( tid ) \
-  ( rtems_get_index( tid ) - BSP_Configuration.number_of_initialization_tasks )
+  ( rtems_get_index( tid ) - \
+     BSP_Configuration.RTEMS_api_configuration->number_of_initialization_tasks )
 
 static inline rtems_unsigned32 get_ticks_per_second( void )
Index: cpukit/libcsupport/src/libio.c
===================================================================
--- cpukit/libcsupport/src/libio.c	(revision 3320e526ffa849a9525ebe262e0b008897efa3c5)
+++ cpukit/libcsupport/src/libio.c	(revision e6d4b1d0861d0bd37d7d57db696286de254ad7a2)
@@ -91,6 +91,7 @@
      */
 
-    config->maximum_semaphores += 1;            /* one for iop table */
-    config->maximum_semaphores += max_fds;
+    /* one for iop table */
+    config->RTEMS_api_configuration->maximum_semaphores += 1; 
+    config->RTEMS_api_configuration->maximum_semaphores += max_fds;
 }
 
Index: cpukit/libmisc/monitor/mon-config.c
===================================================================
--- cpukit/libmisc/monitor/mon-config.c	(revision 3320e526ffa849a9525ebe262e0b008897efa3c5)
+++ cpukit/libmisc/monitor/mon-config.c	(revision e6d4b1d0861d0bd37d7d57db696286de254ad7a2)
@@ -30,19 +30,20 @@
 {
     rtems_configuration_table *c = (rtems_configuration_table *) config_void;
+    rtems_api_configuration_table *r = c->RTEMS_api_configuration;
 
     canonical_config->work_space_start = c->work_space_start;
     canonical_config->work_space_size = c->work_space_size;
-    canonical_config->maximum_tasks = c->maximum_tasks;
-    canonical_config->maximum_timers = c->maximum_timers;
-    canonical_config->maximum_semaphores = c->maximum_semaphores;
-    canonical_config->maximum_message_queues = c->maximum_message_queues;
-    canonical_config->maximum_partitions = c->maximum_partitions;
-    canonical_config->maximum_regions = c->maximum_regions;
-    canonical_config->maximum_ports = c->maximum_ports;
-    canonical_config->maximum_periods = c->maximum_periods;
+    canonical_config->maximum_tasks = r->maximum_tasks;
+    canonical_config->maximum_timers = r->maximum_timers;
+    canonical_config->maximum_semaphores = r->maximum_semaphores;
+    canonical_config->maximum_message_queues = r->maximum_message_queues;
+    canonical_config->maximum_partitions = r->maximum_partitions;
+    canonical_config->maximum_regions = r->maximum_regions;
+    canonical_config->maximum_ports = r->maximum_ports;
+    canonical_config->maximum_periods = r->maximum_periods;
     canonical_config->maximum_extensions = c->maximum_extensions;
     canonical_config->microseconds_per_tick = c->microseconds_per_tick;
     canonical_config->ticks_per_timeslice = c->ticks_per_timeslice;
-    canonical_config->number_of_initialization_tasks = c->number_of_initialization_tasks;
+    canonical_config->number_of_initialization_tasks = r->number_of_initialization_tasks;
 }    
 
Index: cpukit/libmisc/monitor/mon-itask.c
===================================================================
--- cpukit/libmisc/monitor/mon-itask.c	(revision 3320e526ffa849a9525ebe262e0b008897efa3c5)
+++ cpukit/libmisc/monitor/mon-itask.c	(revision e6d4b1d0861d0bd37d7d57db696286de254ad7a2)
@@ -43,10 +43,10 @@
     int n = rtems_get_index(*next_id);
 
-    if (n >= c->number_of_initialization_tasks)
+    if (n >= c->RTEMS_api_configuration->number_of_initialization_tasks)
         goto failed;
     
     _Thread_Disable_dispatch();
 
-    itask = c->User_initialization_tasks_table + n;
+    itask = c->RTEMS_api_configuration->User_initialization_tasks_table + n;
 
     /*
Index: cpukit/posix/include/rtems/posix/config.h
===================================================================
--- cpukit/posix/include/rtems/posix/config.h	(revision e6d4b1d0861d0bd37d7d57db696286de254ad7a2)
+++ cpukit/posix/include/rtems/posix/config.h	(revision e6d4b1d0861d0bd37d7d57db696286de254ad7a2)
@@ -0,0 +1,51 @@
+/*  config.h
+ *
+ *  This include file contains the table of user defined configuration
+ *  parameters specific for the POSIX API.
+ *
+ *  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$
+ */
+
+#ifndef __RTEMS_POSIX_CONFIGURATION_h
+#define __RTEMS_POSIX_CONFIGURATION_h
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ *  XXX
+ *
+ *  The following records define the Configuration Table.  The
+ *  information contained in this table is required in all
+ *  RTEMS systems, whether single or multiprocessor.  This
+ *  table primarily defines the following:
+ *
+ *     + required number of each object type
+ */
+
+/* XXX fix me */
+typedef int posix_initialization_tasks_table;
+
+typedef struct {
+  int                               maximum_threads;
+  int                               maximum_mutexes;
+  int                               maximum_condition_variables;
+  int                               number_of_initialization_tasks;
+  posix_initialization_tasks_table *User_initialization_tasks_table;
+} posix_api_configuration_table;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+/* end of include file */
Index: cpukit/rtems/include/rtems/rtems/config.h
===================================================================
--- cpukit/rtems/include/rtems/rtems/config.h	(revision e6d4b1d0861d0bd37d7d57db696286de254ad7a2)
+++ cpukit/rtems/include/rtems/rtems/config.h	(revision e6d4b1d0861d0bd37d7d57db696286de254ad7a2)
@@ -0,0 +1,54 @@
+/*  config.h
+ *
+ *  This include file contains the table of user defined configuration
+ *  parameters specific for the RTEMS API.
+ *
+ *  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$
+ */
+
+#ifndef __RTEMS_RTEMS_CONFIGURATION_h
+#define __RTEMS_RTEMS_CONFIGURATION_h
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <rtems/rtems/types.h>
+#include <rtems/rtems/tasks.h>
+
+/*
+ *  The following records define the Configuration Table.  The
+ *  information contained in this table is required in all
+ *  RTEMS systems, whether single or multiprocessor.  This
+ *  table primarily defines the following:
+ *
+ *     + required number of each object type
+ */
+
+typedef struct {
+  unsigned32                        maximum_tasks;
+  unsigned32                        maximum_timers;
+  unsigned32                        maximum_semaphores;
+  unsigned32                        maximum_message_queues;
+  unsigned32                        maximum_partitions;
+  unsigned32                        maximum_regions;
+  unsigned32                        maximum_ports;
+  unsigned32                        maximum_periods;
+  unsigned32                        number_of_initialization_tasks;
+  rtems_initialization_tasks_table *User_initialization_tasks_table;
+} rtems_api_configuration_table;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+/* end of include file */
Index: cpukit/rtems/include/rtems/rtems/tasks.h
===================================================================
--- cpukit/rtems/include/rtems/rtems/tasks.h	(revision 3320e526ffa849a9525ebe262e0b008897efa3c5)
+++ cpukit/rtems/include/rtems/rtems/tasks.h	(revision e6d4b1d0861d0bd37d7d57db696286de254ad7a2)
@@ -46,4 +46,5 @@
 #include <rtems/rtems/asr.h>
 #include <rtems/rtems/attr.h>
+#include <rtems/rtems/status.h>
 
 /*
Index: cpukit/sapi/include/confdefs.h
===================================================================
--- cpukit/sapi/include/confdefs.h	(revision 3320e526ffa849a9525ebe262e0b008897efa3c5)
+++ cpukit/sapi/include/confdefs.h	(revision e6d4b1d0861d0bd37d7d57db696286de254ad7a2)
@@ -23,5 +23,4 @@
 #endif
  
-
 extern rtems_initialization_tasks_table Initialization_tasks[];
 extern rtems_driver_address_table       Device_drivers[];
@@ -342,7 +341,6 @@
 
 #ifdef CONFIGURE_INIT
-rtems_configuration_table Configuration = {
-  CONFIGURE_EXECUTIVE_RAM_WORK_AREA,
-  CONFIGURE_EXECUTIVE_RAM_SIZE,
+
+rtems_api_configuration_table Configuration_RTEMS_API = {
   CONFIGURE_MAXIMUM_TASKS,
   CONFIGURE_MAXIMUM_TIMERS,
@@ -353,16 +351,23 @@
   CONFIGURE_MAXIMUM_PORTS,
   CONFIGURE_MAXIMUM_PERIODS,
+  sizeof (Initialization_tasks)/
+   sizeof(rtems_initialization_tasks_table), /* number of init tasks */
+  Initialization_tasks                       /* init task(s) table */
+};
+
+rtems_configuration_table Configuration = {
+  CONFIGURE_EXECUTIVE_RAM_WORK_AREA,
+  CONFIGURE_EXECUTIVE_RAM_SIZE,
   CONFIGURE_MAXIMUM_USER_EXTENSIONS,
   CONFIGURE_MICROSECONDS_PER_TICK,
   CONFIGURE_TICKS_PER_TIMESLICE,
-  sizeof (Initialization_tasks)/
-   sizeof(rtems_initialization_tasks_table), /* number of init tasks */
-  Initialization_tasks,                      /* init task(s) table */
+  CONFIGURE_MAXIMUM_DEVICES,
   sizeof (Device_drivers)/
     sizeof(rtems_driver_address_table),      /* number of device drivers */
-  CONFIGURE_MAXIMUM_DEVICES,
   Device_drivers,                            /* pointer to driver table */
   CONFIGURE_INITIAL_EXTENSIONS,              /* pointer to initial extensions */
-  CONFIGURE_MULTIPROCESSING_TABLE            /* ptr to MP config table */
+  CONFIGURE_MULTIPROCESSING_TABLE,           /* pointer to MP config table */
+  &Configuration_RTEMS_API,                  /* pointer to RTEMS API config */
+  NULL                                       /* pointer to RTEMS API config */
 };
 #endif
Index: cpukit/sapi/include/rtems/config.h
===================================================================
--- cpukit/sapi/include/rtems/config.h	(revision 3320e526ffa849a9525ebe262e0b008897efa3c5)
+++ cpukit/sapi/include/rtems/config.h	(revision e6d4b1d0861d0bd37d7d57db696286de254ad7a2)
@@ -22,10 +22,16 @@
 #endif
 
+#include <rtems/posix/config.h>
+#include <rtems/rtems/config.h>
+
+/*  XXX <rtems/rtems/config.h> should cover these
 #include <rtems/rtems/status.h>
+#include <rtems/rtems/types.h>
+#include <rtems/rtems/tasks.h>
+*/
+
 #include <rtems/extension.h>
 #include <rtems/io.h>
 #include <rtems/score/mpci.h>
-#include <rtems/rtems/types.h>
-#include <rtems/rtems/tasks.h>
 
 /*
@@ -51,7 +57,7 @@
  *
  *     + location and size of the RTEMS Workspace
- *     + required number of each object type
  *     + microseconds per clock tick
  *     + clock ticks per task timeslice
+ *     + required number of each object type for each API configured
  */
 
@@ -59,22 +65,14 @@
   void                             *work_space_start;
   unsigned32                        work_space_size;
-  unsigned32                        maximum_tasks;
-  unsigned32                        maximum_timers;
-  unsigned32                        maximum_semaphores;
-  unsigned32                        maximum_message_queues;
-  unsigned32                        maximum_partitions;
-  unsigned32                        maximum_regions;
-  unsigned32                        maximum_ports;
-  unsigned32                        maximum_periods;
   unsigned32                        maximum_extensions;
   unsigned32                        microseconds_per_tick;
   unsigned32                        ticks_per_timeslice;
-  unsigned32                        number_of_initialization_tasks;
-  rtems_initialization_tasks_table *User_initialization_tasks_table;
+  unsigned32                        maximum_devices;
   unsigned32                        number_of_device_drivers;
-  unsigned32                        maximum_devices;
   rtems_driver_address_table       *Device_driver_table;
   rtems_extensions_table           *User_extension_table;
   rtems_multiprocessing_table      *User_multiprocessing_table;
+  rtems_api_configuration_table    *RTEMS_api_configuration;
+  posix_api_configuration_table    *Posix_api_configuration;
 } rtems_configuration_table;
 
Index: cpukit/sapi/src/rtemsapi.c
===================================================================
--- cpukit/sapi/src/rtemsapi.c	(revision 3320e526ffa849a9525ebe262e0b008897efa3c5)
+++ cpukit/sapi/src/rtemsapi.c	(revision e6d4b1d0861d0bd37d7d57db696286de254ad7a2)
@@ -46,4 +46,8 @@
 )
 {
+  rtems_api_configuration_table *api_configuration;
+
+  api_configuration = configuration_table->RTEMS_api_configuration;
+
   _Attributes_Handler_initialization();
  
@@ -53,10 +57,10 @@
  
   _RTEMS_tasks_Manager_initialization(
-    configuration_table->maximum_tasks,
-    configuration_table->number_of_initialization_tasks,
-    configuration_table->User_initialization_tasks_table
+    api_configuration->maximum_tasks,
+    api_configuration->number_of_initialization_tasks,
+    api_configuration->User_initialization_tasks_table
   );
  
-  _Timer_Manager_initialization( configuration_table->maximum_timers );
+  _Timer_Manager_initialization( api_configuration->maximum_timers );
  
   _Signal_Manager_initialization();
@@ -65,24 +69,16 @@
  
   _Message_queue_Manager_initialization(
-    configuration_table->maximum_message_queues
+    api_configuration->maximum_message_queues
   );
  
-  _Semaphore_Manager_initialization(
-    configuration_table->maximum_semaphores
-  );
+  _Semaphore_Manager_initialization( api_configuration->maximum_semaphores );
  
-  _Partition_Manager_initialization(
-    configuration_table->maximum_partitions
-  );
+  _Partition_Manager_initialization( api_configuration->maximum_partitions );
  
-  _Region_Manager_initialization( configuration_table->maximum_regions );
+  _Region_Manager_initialization( api_configuration->maximum_regions );
  
-  _Dual_ported_memory_Manager_initialization(
-    configuration_table->maximum_ports
-  );
+  _Dual_ported_memory_Manager_initialization( api_configuration->maximum_ports);
  
-  _Rate_monotonic_Manager_initialization(
-    configuration_table->maximum_periods
-  );
+  _Rate_monotonic_Manager_initialization( api_configuration->maximum_periods );
 }
 
Index: testsuites/support/include/tmacros.h
===================================================================
--- testsuites/support/include/tmacros.h	(revision 3320e526ffa849a9525ebe262e0b008897efa3c5)
+++ testsuites/support/include/tmacros.h	(revision e6d4b1d0861d0bd37d7d57db696286de254ad7a2)
@@ -110,5 +110,6 @@
 
 #define task_number( tid ) \
-  ( rtems_get_index( tid ) - BSP_Configuration.number_of_initialization_tasks )
+  ( rtems_get_index( tid ) - \
+     BSP_Configuration.RTEMS_api_configuration->number_of_initialization_tasks )
 
 static inline rtems_unsigned32 get_ticks_per_second( void )
