Index: cpukit/posix/include/rtems/posix/pthreadimpl.h
===================================================================
--- cpukit/posix/include/rtems/posix/pthreadimpl.h	(revision 04436ae7d83825300df85cabc3953f9c0314fe72)
+++ cpukit/posix/include/rtems/posix/pthreadimpl.h	(revision ef1a985fc7591988ef956dd7b35f9533bace68a6)
@@ -45,5 +45,5 @@
  * this class of objects.
  */
-POSIX_EXTERN Thread_Information  _POSIX_Threads_Information;
+extern Thread_Information _POSIX_Threads_Information;
 
 /**
@@ -60,11 +60,4 @@
  */
 extern void (*_POSIX_Threads_Initialize_user_threads_p)(void);
-
-/**
- * @brief POSIX threads manager initialization.
- *
- * This routine performs the initialization necessary for this manager.
- */
-void _POSIX_Threads_Manager_initialization(void);
 
 /**
Index: cpukit/posix/src/killinfo.c
===================================================================
--- cpukit/posix/src/killinfo.c	(revision 04436ae7d83825300df85cabc3953f9c0314fe72)
+++ cpukit/posix/src/killinfo.c	(revision ef1a985fc7591988ef956dd7b35f9533bace68a6)
@@ -199,14 +199,6 @@
 
     the_info = _Objects_Information_table[ the_api ][ 1 ];
-
-    #if defined(RTEMS_DEBUG)
-      /*
-       *  This cannot happen in the current (as of June 2009) implementation
-       *  of initialization but at some point, the object information
-       *  structure for a particular manager may not be installed.
-       */
-      if ( !the_info )
-        continue;
-    #endif
+    if ( !the_info )
+      continue;
 
     maximum = the_info->maximum;
Index: cpukit/posix/src/pthread.c
===================================================================
--- cpukit/posix/src/pthread.c	(revision 04436ae7d83825300df85cabc3953f9c0314fe72)
+++ cpukit/posix/src/pthread.c	(revision ef1a985fc7591988ef956dd7b35f9533bace68a6)
@@ -27,4 +27,5 @@
 #include <rtems/system.h>
 #include <rtems/config.h>
+#include <rtems/sysinit.h>
 #include <rtems/score/apiext.h>
 #include <rtems/score/stack.h>
@@ -43,4 +44,6 @@
 #include <rtems/score/cpusetimpl.h>
 #include <rtems/score/assert.h>
+
+Thread_Information _POSIX_Threads_Information;
 
 /*
@@ -339,5 +342,5 @@
  *  This routine initializes all threads manager related data structures.
  */
-void _POSIX_Threads_Manager_initialization(void)
+static void _POSIX_Threads_Manager_initialization(void)
 {
   #if defined(RTEMS_SMP) && defined(__RTEMS_HAVE_SYS_CPUSET_H__)
@@ -382,2 +385,8 @@
    */
 }
+
+RTEMS_SYSINIT_ITEM(
+  _POSIX_Threads_Manager_initialization,
+  RTEMS_SYSINIT_POSIX_THREADS,
+  RTEMS_SYSINIT_ORDER_MIDDLE
+);
Index: cpukit/sapi/src/posixapi.c
===================================================================
--- cpukit/sapi/src/posixapi.c	(revision 04436ae7d83825300df85cabc3953f9c0314fe72)
+++ cpukit/sapi/src/posixapi.c	(revision ef1a985fc7591988ef956dd7b35f9533bace68a6)
@@ -39,5 +39,4 @@
 #include <rtems/posix/priorityimpl.h>
 #include <rtems/posix/psignalimpl.h>
-#include <rtems/posix/pthreadimpl.h>
 #include <rtems/posix/rwlockimpl.h>
 #include <rtems/posix/timerimpl.h>
@@ -65,5 +64,4 @@
 
   #ifdef RTEMS_POSIX_API
-    _POSIX_Threads_Manager_initialization();
     _POSIX_Condition_variables_Manager_initialization();
     _POSIX_Mutex_Manager_initialization();
Index: cpukit/score/include/rtems/sysinit.h
===================================================================
--- cpukit/score/include/rtems/sysinit.h	(revision 04436ae7d83825300df85cabc3953f9c0314fe72)
+++ cpukit/score/include/rtems/sysinit.h	(revision ef1a985fc7591988ef956dd7b35f9533bace68a6)
@@ -44,4 +44,5 @@
 #define RTEMS_SYSINIT_CLASSIC_BARRIER            00034a
 #define RTEMS_SYSINIT_POSIX_SIGNALS              000360
+#define RTEMS_SYSINIT_POSIX_THREADS              000361
 #define RTEMS_SYSINIT_IDLE_THREADS               000380
 #define RTEMS_SYSINIT_BSP_LIBC                   000400
Index: testsuites/sptests/spsysinit01/init.c
===================================================================
--- testsuites/sptests/spsysinit01/init.c	(revision 04436ae7d83825300df85cabc3953f9c0314fe72)
+++ testsuites/sptests/spsysinit01/init.c	(revision ef1a985fc7591988ef956dd7b35f9533bace68a6)
@@ -29,4 +29,5 @@
 #ifdef RTEMS_POSIX_API
 #include <rtems/posix/psignalimpl.h>
+#include <rtems/posix/pthreadimpl.h>
 #endif /* RTEMS_POSIX_API */
 #include <rtems/rtems/barrierimpl.h>
@@ -82,4 +83,6 @@
   POSIX_SIGNALS_PRE,
   POSIX_SIGNALS_POST,
+  POSIX_THREADS_PRE,
+  POSIX_THREADS_POST,
 #endif /* RTEMS_POSIX_API */
   IDLE_THREADS_PRE,
@@ -344,4 +347,16 @@
 }
 
+FIRST(RTEMS_SYSINIT_POSIX_THREADS)
+{
+  assert(_POSIX_Threads_Information.Objects.maximum == 0);
+  next_step(POSIX_THREADS_PRE);
+}
+
+LAST(RTEMS_SYSINIT_POSIX_THREADS)
+{
+  assert(_POSIX_Threads_Information.Objects.maximum != 0);
+  next_step(POSIX_THREADS_POST);
+}
+
 #endif /* RTEMS_POSIX_API */
 
@@ -449,4 +464,10 @@
 #define CONFIGURE_MAXIMUM_TIMERS 1
 
+#ifdef RTEMS_POSIX_API
+
+#define CONFIGURE_MAXIMUM_POSIX_THREADS 1
+
+#endif /* RTEMS_POSIX_API */
+
 #define CONFIGURE_RTEMS_INIT_TASKS_TABLE
 
