Index: c/src/exec/posix/src/pthread.c
===================================================================
--- c/src/exec/posix/src/pthread.c	(revision 297be5c8f16a61c0a883bb4f0e33316b4df65bd4)
+++ c/src/exec/posix/src/pthread.c	(revision 65c421ffc583a6d9babf2cd5de1019a70450cb3d)
@@ -25,4 +25,8 @@
  *
  *  The default pthreads attributes structure.
+ *
+ *  NOTE: Be careful .. if the default attribute set changes, 
+ *        _POSIX_Threads_Initialize_user_threads will need to be examined.
+ *
  */
  
@@ -32,5 +36,5 @@
   PTHREAD_MINIMUM_STACK_SIZE, /* stacksize */
   PTHREAD_SCOPE_PROCESS,      /* contentionscope */
-  PTHREAD_EXPLICIT_SCHED,     /* inheritsched */
+  PTHREAD_INHERIT_SCHED,      /* inheritsched */
   SCHED_FIFO,                 /* schedpolicy */
   {                           /* schedparam */
@@ -128,4 +132,5 @@
 {
   POSIX_API_Control *api;
+  POSIX_API_Control *executing_api;
  
   api = _Workspace_Allocate( sizeof( POSIX_API_Control ) );
@@ -151,7 +156,8 @@
   /* XXX use signal constants */
   api->signals_pending = 0;
-  if ( _Objects_Get_class( created->Object.id ) == OBJECTS_POSIX_THREADS )
-    api->signals_blocked = 0;
-  else
+  if ( _Objects_Get_class( created->Object.id ) == OBJECTS_POSIX_THREADS ) {
+    executing_api = _Thread_Executing->API_Extensions[ THREAD_API_POSIX ];
+    api->signals_blocked = api->signals_blocked;
+  } else
     api->signals_blocked = 0xffffffff;
 
@@ -233,4 +239,5 @@
   posix_initialization_threads_table *user_threads;
   pthread_t                           thread_id;
+  pthread_attr_t                      attr;
  
   user_threads = _POSIX_Threads_User_initialization_threads;
@@ -240,8 +247,21 @@
     return;
  
+  /*
+   *  Be careful .. if the default attribute set changes, this may need to.
+   *
+   *  Setting the attributes explicitly is critical, since we don't want
+   *  to inherit the idle tasks attributes. 
+   */
+
   for ( index=0 ; index < maximum ; index++ ) {
+    status = pthread_attr_init( &attr );
+    assert( !status );
+      
+    status = pthread_attr_setinheritsched( &attr, PTHREAD_EXPLICIT_SCHED );
+    assert( !status );
+
     status = pthread_create(
       &thread_id,
-      NULL,
+      &attr,
       user_threads[ index ].entry,
       NULL
Index: cpukit/posix/src/pthread.c
===================================================================
--- cpukit/posix/src/pthread.c	(revision 297be5c8f16a61c0a883bb4f0e33316b4df65bd4)
+++ cpukit/posix/src/pthread.c	(revision 65c421ffc583a6d9babf2cd5de1019a70450cb3d)
@@ -25,4 +25,8 @@
  *
  *  The default pthreads attributes structure.
+ *
+ *  NOTE: Be careful .. if the default attribute set changes, 
+ *        _POSIX_Threads_Initialize_user_threads will need to be examined.
+ *
  */
  
@@ -32,5 +36,5 @@
   PTHREAD_MINIMUM_STACK_SIZE, /* stacksize */
   PTHREAD_SCOPE_PROCESS,      /* contentionscope */
-  PTHREAD_EXPLICIT_SCHED,     /* inheritsched */
+  PTHREAD_INHERIT_SCHED,      /* inheritsched */
   SCHED_FIFO,                 /* schedpolicy */
   {                           /* schedparam */
@@ -128,4 +132,5 @@
 {
   POSIX_API_Control *api;
+  POSIX_API_Control *executing_api;
  
   api = _Workspace_Allocate( sizeof( POSIX_API_Control ) );
@@ -151,7 +156,8 @@
   /* XXX use signal constants */
   api->signals_pending = 0;
-  if ( _Objects_Get_class( created->Object.id ) == OBJECTS_POSIX_THREADS )
-    api->signals_blocked = 0;
-  else
+  if ( _Objects_Get_class( created->Object.id ) == OBJECTS_POSIX_THREADS ) {
+    executing_api = _Thread_Executing->API_Extensions[ THREAD_API_POSIX ];
+    api->signals_blocked = api->signals_blocked;
+  } else
     api->signals_blocked = 0xffffffff;
 
@@ -233,4 +239,5 @@
   posix_initialization_threads_table *user_threads;
   pthread_t                           thread_id;
+  pthread_attr_t                      attr;
  
   user_threads = _POSIX_Threads_User_initialization_threads;
@@ -240,8 +247,21 @@
     return;
  
+  /*
+   *  Be careful .. if the default attribute set changes, this may need to.
+   *
+   *  Setting the attributes explicitly is critical, since we don't want
+   *  to inherit the idle tasks attributes. 
+   */
+
   for ( index=0 ; index < maximum ; index++ ) {
+    status = pthread_attr_init( &attr );
+    assert( !status );
+      
+    status = pthread_attr_setinheritsched( &attr, PTHREAD_EXPLICIT_SCHED );
+    assert( !status );
+
     status = pthread_create(
       &thread_id,
-      NULL,
+      &attr,
       user_threads[ index ].entry,
       NULL
