Index: cpukit/ChangeLog
===================================================================
--- cpukit/ChangeLog	(revision d05ec0f77313dc15ff4f4253441d56a4ce101530)
+++ cpukit/ChangeLog	(revision ff3c06a5297407d857289aea716c7867cf2399b8)
@@ -1,2 +1,9 @@
+2009-10-04	Joel Sherrill <joel.sherrill@oarcorp.com>
+
+	* posix/include/rtems/posix/psignal.h: Add extern for ualarm timer.
+	* posix/src/alarm.c, posix/src/ualarm.c: Change from switch to if since
+	many enumerated values have no action.
+	* posix/src/psignal.c: Initialize ualarm and alarm timers.
+
 2009-10-02	Ralf CorsÃ©pius <ralf.corsepius@rtems.org>
 
Index: cpukit/posix/include/rtems/posix/psignal.h
===================================================================
--- cpukit/posix/include/rtems/posix/psignal.h	(revision d05ec0f77313dc15ff4f4253441d56a4ce101530)
+++ cpukit/posix/include/rtems/posix/psignal.h	(revision ff3c06a5297407d857289aea716c7867cf2399b8)
@@ -63,4 +63,6 @@
 
 extern Watchdog_Control _POSIX_signals_Alarm_timer;
+
+extern Watchdog_Control _POSIX_signals_Ualarm_timer;
 
 extern Thread_queue_Control _POSIX_signals_Wait_queue;
Index: cpukit/posix/src/alarm.c
===================================================================
--- cpukit/posix/src/alarm.c	(revision d05ec0f77313dc15ff4f4253441d56a4ce101530)
+++ cpukit/posix/src/alarm.c	(revision ff3c06a5297407d857289aea716c7867cf2399b8)
@@ -57,21 +57,16 @@
     _Watchdog_Initialize( the_timer, _POSIX_signals_Alarm_TSR, 0, NULL );
   } else {
-    switch ( _Watchdog_Remove( the_timer ) ) {
-      case WATCHDOG_INACTIVE:
-      case WATCHDOG_BEING_INSERTED:
-        break;
+    Watchdog_States state;
 
-      case WATCHDOG_ACTIVE:
-      case WATCHDOG_REMOVE_IT:
-        /*
-         *  The stop_time and start_time fields are snapshots of ticks since
-         *  boot.  Since alarm() is dealing in seconds, we must account for
-         *  this.
-         */
+    state = _Watchdog_Remove( the_timer );
+    if ( (state == WATCHDOG_ACTIVE) || (state == WATCHDOG_REMOVE_IT) ) {
+      /*
+       *  The stop_time and start_time fields are snapshots of ticks since
+       *  boot.  Since alarm() is dealing in seconds, we must account for
+       *  this.
+       */
 
-        remaining = the_timer->initial -
-         ((the_timer->stop_time - the_timer->start_time) /
-	   TOD_TICKS_PER_SECOND);
-        break;
+      remaining = the_timer->initial -
+        ((the_timer->stop_time - the_timer->start_time) / TOD_TICKS_PER_SECOND);
     }
   }
Index: cpukit/posix/src/psignal.c
===================================================================
--- cpukit/posix/src/psignal.c	(revision d05ec0f77313dc15ff4f4253441d56a4ce101530)
+++ cpukit/posix/src/psignal.c	(revision ff3c06a5297407d857289aea716c7867cf2399b8)
@@ -215,3 +215,9 @@
     _Chain_Initialize_empty( &_POSIX_signals_Inactive_siginfo );
   }
+
+  /*
+   *  Initialize the Alarm Timer
+   */
+  _Watchdog_Initialize( &_POSIX_signals_Alarm_timer, NULL, 0, NULL );
+  _Watchdog_Initialize( &_POSIX_signals_Ualarm_timer, NULL, 0, NULL );
 }
Index: cpukit/posix/src/ualarm.c
===================================================================
--- cpukit/posix/src/ualarm.c	(revision d05ec0f77313dc15ff4f4253441d56a4ce101530)
+++ cpukit/posix/src/ualarm.c	(revision ff3c06a5297407d857289aea716c7867cf2399b8)
@@ -67,25 +67,21 @@
     _Watchdog_Initialize( the_timer, _POSIX_signals_Ualarm_TSR, 0, NULL );
   } else {
-    switch ( _Watchdog_Remove( the_timer ) ) {
-      case WATCHDOG_INACTIVE:
-      case WATCHDOG_BEING_INSERTED:
-        break;
+    Watchdog_States state;
 
-      case WATCHDOG_ACTIVE:
-      case WATCHDOG_REMOVE_IT:
-        /*
-         *  The stop_time and start_time fields are snapshots of ticks since
-         *  boot.  Since alarm() is dealing in seconds, we must account for
-         *  this.
-         */
+    state = _Watchdog_Remove( the_timer );
+    if ( (state == WATCHDOG_ACTIVE) || (state == WATCHDOG_REMOVE_IT) ) {
+      /*
+       *  The stop_time and start_time fields are snapshots of ticks since
+       *  boot.  Since alarm() is dealing in seconds, we must account for
+       *  this.
+       */
 
-        ticks = the_timer->initial;
-        ticks -= (the_timer->stop_time - the_timer->start_time);
-        /* remaining is now in ticks */
+      ticks = the_timer->initial;
+      ticks -= (the_timer->stop_time - the_timer->start_time);
+      /* remaining is now in ticks */
 
-        _Timespec_From_ticks( ticks, &tp );
-        remaining  = tp.tv_sec * TOD_MICROSECONDS_PER_SECOND;
-        remaining += tp.tv_nsec / 1000;
-        break;
+      _Timespec_From_ticks( ticks, &tp );
+      remaining  = tp.tv_sec * TOD_MICROSECONDS_PER_SECOND;
+      remaining += tp.tv_nsec / 1000;
     }
   }
