Index: cpukit/sapi/include/confdefs.h
===================================================================
--- cpukit/sapi/include/confdefs.h	(revision 39671330dc7db16955af7fb240f93d1ae192603f)
+++ cpukit/sapi/include/confdefs.h	(revision e53aae2676c42cda521328504f82d26c33827021)
@@ -1345,4 +1345,110 @@
 
 
+/**
+ * This macro specifies that the user wants to use unlimited objects for any
+ * classic or posix objects that have not already been given resource limits.
+ */
+#if defined(CONFIGURE_UNLIMITED_OBJECTS)
+  #if !defined(CONFIGURE_UNLIMITED_ALLOCATION_SIZE)
+  /**
+   * This macro specifies a default allocation size for when auto-extending
+   * unlimited objects if none was given by the user.
+   */
+    #define CONFIGURE_UNLIMITED_ALLOCATION_SIZE 8
+  #endif
+  #if !defined(CONFIGURE_MAXIMUM_TASKS)
+    #define CONFIGURE_MAXIMUM_TASKS \
+      rtems_resource_unlimited(CONFIGURE_UNLIMITED_ALLOCATION_SIZE)
+  #endif
+  #if !defined(CONFIGURE_MAXIMUM_TIMERS)
+    #define CONFIGURE_MAXIMUM_TIMERS \
+      rtems_resource_unlimited(CONFIGURE_UNLIMITED_ALLOCATION_SIZE)
+  #endif
+  #if !defined(CONFIGURE_MAXIMUM_SEMAPHORES)
+    #define CONFIGURE_MAXIMUM_SEMAPHORES \
+      rtems_resource_unlimited(CONFIGURE_UNLIMITED_ALLOCATION_SIZE)
+  #endif
+  #if !defined(CONFIGURE_MAXIMUM_MESSAGE_QUEUES)
+    #define CONFIGURE_MAXIMUM_MESSAGE_QUEUES \
+      rtems_resource_unlimited(CONFIGURE_UNLIMITED_ALLOCATION_SIZE)
+  #endif
+  #if !defined(CONFIGURE_MAXIMUM_PARTITIONS)
+    #define CONFIGURE_MAXIMUM_PARTITIONS \
+      rtems_resource_unlimited(CONFIGURE_UNLIMITED_ALLOCATION_SIZE)
+  #endif
+  #if !defined(CONFIGURE_MAXIMUM_REGIONS)
+    #define CONFIGURE_MAXIMUM_REGIONS \
+      rtems_resource_unlimited(CONFIGURE_UNLIMITED_ALLOCATION_SIZE)
+  #endif
+  #if !defined(CONFIGURE_MAXIMUM_PORTS)
+    #define CONFIGURE_MAXIMUM_PORTS \
+      rtems_resource_unlimited(CONFIGURE_UNLIMITED_ALLOCATION_SIZE)
+  #endif
+  #if !defined(CONFIGURE_MAXIMUM_PERIODS)
+    #define CONFIGURE_MAXIMUM_PERIODS \
+      rtems_resource_unlimited(CONFIGURE_UNLIMITED_ALLOCATION_SIZE)
+  #endif
+  #if !defined(CONFIGURE_MAXIMUM_BARRIERS)
+    #define CONFIGURE_MAXIMUM_BARRIERS \
+      rtems_resource_unlimited(CONFIGURE_UNLIMITED_ALLOCATION_SIZE)
+  #endif
+
+  #ifdef RTEMS_POSIX_API
+    #if !defined(CONFIGURE_MAXIMUM_POSIX_THREADS)
+      #define CONFIGURE_MAXIMUM_POSIX_THREADS \
+        rtems_resource_unlimited(CONFIGURE_UNLIMITED_ALLOCATION_SIZE)
+    #endif
+    #if !defined(CONFIGURE_MAXIMUM_POSIX_MUTEXES)
+      #define CONFIGURE_MAXIMUM_POSIX_MUTEXES \
+        rtems_resource_unlimited(CONFIGURE_UNLIMITED_ALLOCATION_SIZE)
+    #endif
+    #if !defined(CONFIGURE_MAXIMUM_POSIX_CONDITION_VARIABLES)
+      #define CONFIGURE_MAXIMUM_POSIX_CONDITION_VARIABLES \
+        rtems_resource_unlimited(CONFIGURE_UNLIMITED_ALLOCATION_SIZE)
+    #endif
+/*
+    #if !defined(CONFIGURE_MAXIMUM_POSIX_KEYS)
+      #define CONFIGURE_MAXIMUM_POSIX_KEYS \
+        rtems_resource_unlimited(CONFIGURE_UNLIMITED_ALLOCATION_SIZE)
+    #endif
+*/
+    #if !defined(CONFIGURE_MAXIMUM_POSIX_TIMERS)
+      #define CONFIGURE_MAXIMUM_POSIX_TIMERS \
+        rtems_resource_unlimited(CONFIGURE_UNLIMITED_ALLOCATION_SIZE)
+    #endif
+/*
+    #if !defined(CONFIGURE_MAXIMUM_POSIX_QUEUED_SIGNALS)
+      #define CONFIGURE_MAXIMUM_POSIX_QUEUED_SIGNALS \
+        rtems_resource_unlimited(CONFIGURE_UNLIMITED_ALLOCATION_SIZE)
+    #endif
+*/
+    #if !defined(CONFIGURE_MAXIMUM_POSIX_MESSAGE_QUEUES)
+      #define CONFIGURE_MAXIMUM_POSIX_MESSAGE_QUEUES \
+        rtems_resource_unlimited(CONFIGURE_UNLIMITED_ALLOCATION_SIZE)
+    #endif
+    #if !defined(CONFIGURE_MAXIMUM_POSIX_MESSAGE_QUEUE_DESCRIPTORS)
+      #define CONFIGURE_MAXIMUM_POSIX_MESSAGE_QUEUE_DESCRIPTORS \
+        rtems_resource_unlimited(CONFIGURE_UNLIMITED_ALLOCATION_SIZE)
+    #endif
+    #if !defined(CONFIGURE_MAXIMUM_POSIX_SEMAPHORES)
+      #define CONFIGURE_MAXIMUM_POSIX_SEMAPHORES \
+        rtems_resource_unlimited(CONFIGURE_UNLIMITED_ALLOCATION_SIZE)
+    #endif
+    #if !defined(CONFIGURE_MAXIMUM_POSIX_BARRIERS)
+      #define CONFIGURE_MAXIMUM_POSIX_BARRIERS \
+        rtems_resource_unlimited(CONFIGURE_UNLIMITED_ALLOCATION_SIZE)
+    #endif
+    #if !defined(CONFIGURE_MAXIMUM_POSIX_RWLOCKS)
+      #define CONFIGURE_MAXIMUM_POSIX_RWLOCKS \
+        rtems_resource_unlimited(CONFIGURE_UNLIMITED_ALLOCATION_SIZE)
+    #endif
+    #if !defined(CONFIGURE_MAXIMUM_POSIX_SPINLOCKS)
+      #define CONFIGURE_MAXIMUM_POSIX_SPINLOCKS \
+        rtems_resource_unlimited(CONFIGURE_UNLIMITED_ALLOCATION_SIZE)
+    #endif
+  #endif /* RTEMS_POSIX_API */
+#endif /* CONFIGURE_UNLIMITED_OBJECTS */
+
+
 /*
  *  Default Configuration Table.
@@ -1549,5 +1655,5 @@
   #define _Configure_POSIX_Named_Object_RAM(_number, _size) \
     _Configure_Object_RAM( (_number), _size ) + \
-    ((_number) * _Configure_From_workspace(NAME_MAX) )
+    (_Configure_Max_Objects(_number) * _Configure_From_workspace(NAME_MAX) )
 
   #ifndef CONFIGURE_MAXIMUM_POSIX_THREADS
Index: doc/user/Makefile.am
===================================================================
--- doc/user/Makefile.am	(revision 39671330dc7db16955af7fb240f93d1ae192603f)
+++ doc/user/Makefile.am	(revision e53aae2676c42cda521328504f82d26c33827021)
@@ -162,5 +162,5 @@
 
 mp.texi: mp.t
-	$(BMENU2) -p "Configuring a System Sizing the RTEMS RAM Workspace" \
+	$(BMENU2) -p "Configuring a System Unlimited Objects" \
 	    -u "Top" \
 	    -n "Stack Bounds Checker" < $< > $@
Index: doc/user/conf.t
===================================================================
--- doc/user/conf.t	(revision 39671330dc7db16955af7fb240f93d1ae192603f)
+++ doc/user/conf.t	(revision e53aae2676c42cda521328504f82d26c33827021)
@@ -2136,5 +2136,5 @@
 specifying the application requirements via parameters
 such as @code{CONFIGURE_EXTRA_TASK_STACKS} and
-@code{CONFIGURE_MAXIMUM_TASKS} is critical.
+@code{CONFIGURE_MAXIMUM_TASKS} is critical for production software.
 
 The allocation of objects can operate in two modes. The default mode
@@ -2145,5 +2145,49 @@
 objects to grow to use the available free memory in the RTEMS RAM Workspace.
 
-The auto-extending mode can be enabled individually for each object
+See @ref{Configuring a System Unlimited Objects} for more details
+about the second mode, which allows for dynamic allocation of objects
+and therefore does not provide determinism.
+This mode is useful mostly for when the number of objects cannot be
+determined ahead of time or when porting software for which you do not
+know the object requirements.
+
+Note that future versions of RTEMS may not have the
+same memory requirements per object. Although the value calculated is
+sufficient for a particular target processor and release of RTEMS,
+memory usage is subject to change across versions and target
+processors.  To avoid problems, users should accurately 
+specify each configuration parameter and allow
+@code{<rtems/confdefs.h>} to calculate the memory requirements.
+The memory requirements are likely to change each
+time one of the following events occurs:
+
+@itemize @bullet
+@item a configuration parameter is modified,
+@item task or interrupt stack requirements change,
+@item task floating point attribute is altered,
+@item RTEMS is upgraded, or
+@item the target processor is changed.
+@end itemize
+
+Failure to provide enough space in the RTEMS RAM
+Workspace will result in the 
+@code{@value{DIRPREFIX}fatal_error_occurred} directive
+being invoked with the appropriate error code.
+
+@subsection Unlimited Objects
+
+In real-time embedded systems the RAM is normally a limited, critical resource
+and dynamic allocation is avoided as much as possible to ensure predictable,
+deterministic execution times. For such cases,
+see @ref{Configuring a System Sizing the RTEMS RAM Workspace}
+for an overview of how to tune the size of the workspace.
+Frequently when users are porting software to RTEMS the precise resource
+requirements of the software is unknown. In these situations users do not
+need to control the size of the workspace very tightly because they just
+want to get the new software to run; later they can tune the workspace size
+as needed.
+
+When the number of objects is not known ahead of time, RTEMS provides an
+auto-extending mode that can be enabled individually for each object
 type by using the macro @code{rtems_resource_unlimited}. This takes a value
 as a parameter, and is used to set the object maximum number field in
@@ -2161,24 +2205,35 @@
 @end example
 
-The user is cautioned that future versions of RTEMS may not have the
-same memory requirements per object. Although the value calculated is
-suficient for a particular target processor and release of RTEMS,
-memory usage is subject to change across versions and target
-processors.  To avoid problems, the user should accurately 
-specify each configuration parameter and allow
-@code{<rtems/confdefs.h>} to calculate the memory requirements.
-The memory requirements are likely to change each
-time one of the following events occurs:
-
+To ease the burden of developers who are porting new software RTEMS also
+provides the following macros:
 @itemize @bullet
-@item a configuration parameter is modified,
-@item task or interrupt stack requirements change,
-@item task floating point attribute is altered,
-@item RTEMS is upgraded, or
-@item the target processor is changed.
+
+@findex CONFIGURE_OBJECTS_UNLIMITED
+@item @code{CONFIGURE_OBJECTS_UNLIMITED}
+uses @code{rtems_resource_unlimited} for classic and posix objects that
+do not already have a maximum limit defined.
+
+@findex CONFIGURE_OBJECTS_ALLOCATION_SIZE
+@item @code{CONFIGURE_OBJECTS_ALLOCATION_SIZE}
+provides an allocation size to use for @code{rtems_resource_unlimited} when
+using @code{CONFIGURE_OBJECTS_UNLIMITED}; the default value is 8.
+
 @end itemize
 
-Failure to provide enough space in the RTEMS RAM
-Workspace will result in the 
-@code{@value{DIRPREFIX}fatal_error_occurred} directive
-being invoked with the appropriate error code.
+By allowing users to declare all resources as being unlimited the user
+can avoid identifying and limiting the resources used.
+@code{CONFIGURE_OBJECTS_UNLIMITED} does not support varying
+the allocation sizes for different objects; users who want that
+much control can define the @code{rtems_resource_unlimited} macros themselves.
+
+@example
+#define CONFIGURE_OBJECTS_UNLIMITED
+#define CONFIGURE_OBJECTS_ALLOCATION_SIZE 5
+@end example
+
+Due to how the posix object memory requirements are configured the
+unlimited object support does not provide unlimited size declarations
+for posix keys or queued signals.
+
+Users are cautioned that using unlimited objects is not recommended for
+production software unless the dynamic growth is absolutely required.
Index: testsuites/samples/unlimited/system.h
===================================================================
--- testsuites/samples/unlimited/system.h	(revision 39671330dc7db16955af7fb240f93d1ae192603f)
+++ testsuites/samples/unlimited/system.h	(revision e53aae2676c42cda521328504f82d26c33827021)
@@ -51,5 +51,6 @@
 
 #define TASK_ALLOCATION_SIZE     (5)
-#define CONFIGURE_MAXIMUM_TASKS  rtems_resource_unlimited(TASK_ALLOCATION_SIZE)
+#define CONFIGURE_UNLIMITED_OBJECTS
+#define CONFIGURE_UNLIMITED_ALLOCATION_SIZE TASK_ALLOCATION_SIZE
 #define CONFIGURE_INIT_TASK_STACK_SIZE (8 * 1024)
 
