Index: c/src/exec/posix/headers/priority.h
===================================================================
--- c/src/exec/posix/headers/priority.h	(revision c24fef3e90a4a7b380b5ad60c8372e22c0edc921)
+++ c/src/exec/posix/headers/priority.h	(revision 6881e0cb4be86a4e91cd2f4d95c43b20d7b89de4)
@@ -16,7 +16,13 @@
  *
  *  Thus, RTEMS Core has priorities run in the opposite sense of the POSIX API.
+ *
+ *  There are only 254 posix priority levels since a task at priority level
+ *  255 would never run because of the RTEMS idle task.  This is necessary
+ *  because GNAT maps the lowest Ada task priority to the lowest thread
+ *  priority.  The lowest priority Ada task should get to run, so there is
+ *  a fundamental conflict with having 255 priorities.
  */
 
-#define POSIX_SCHEDULER_MAXIMUM_PRIORITY (255)
+#define POSIX_SCHEDULER_MAXIMUM_PRIORITY (254)
   
 #define POSIX_SCHEDULER_MINIMUM_PRIORITY (1)
Index: c/src/exec/posix/include/rtems/posix/priority.h
===================================================================
--- c/src/exec/posix/include/rtems/posix/priority.h	(revision c24fef3e90a4a7b380b5ad60c8372e22c0edc921)
+++ c/src/exec/posix/include/rtems/posix/priority.h	(revision 6881e0cb4be86a4e91cd2f4d95c43b20d7b89de4)
@@ -16,7 +16,13 @@
  *
  *  Thus, RTEMS Core has priorities run in the opposite sense of the POSIX API.
+ *
+ *  There are only 254 posix priority levels since a task at priority level
+ *  255 would never run because of the RTEMS idle task.  This is necessary
+ *  because GNAT maps the lowest Ada task priority to the lowest thread
+ *  priority.  The lowest priority Ada task should get to run, so there is
+ *  a fundamental conflict with having 255 priorities.
  */
 
-#define POSIX_SCHEDULER_MAXIMUM_PRIORITY (255)
+#define POSIX_SCHEDULER_MAXIMUM_PRIORITY (254)
   
 #define POSIX_SCHEDULER_MINIMUM_PRIORITY (1)
Index: c/src/exec/posix/inline/priority.inl
===================================================================
--- c/src/exec/posix/inline/priority.inl	(revision c24fef3e90a4a7b380b5ad60c8372e22c0edc921)
+++ c/src/exec/posix/inline/priority.inl	(revision 6881e0cb4be86a4e91cd2f4d95c43b20d7b89de4)
@@ -18,5 +18,5 @@
 )
 {
-  return (boolean) (priority >= 1 && priority <= 255);
+  return (boolean) (priority >= 1 && priority <= 254);
 }
 
@@ -25,5 +25,5 @@
 )
 {
-  return (Priority_Control) (256 - priority);
+  return (Priority_Control) (255 - priority);
 }
 
@@ -32,5 +32,5 @@
 )
 {
-  return 256 - priority;
+  return 255 - priority;
 }
 
Index: c/src/exec/posix/inline/rtems/posix/priority.inl
===================================================================
--- c/src/exec/posix/inline/rtems/posix/priority.inl	(revision c24fef3e90a4a7b380b5ad60c8372e22c0edc921)
+++ c/src/exec/posix/inline/rtems/posix/priority.inl	(revision 6881e0cb4be86a4e91cd2f4d95c43b20d7b89de4)
@@ -18,5 +18,5 @@
 )
 {
-  return (boolean) (priority >= 1 && priority <= 255);
+  return (boolean) (priority >= 1 && priority <= 254);
 }
 
@@ -25,5 +25,5 @@
 )
 {
-  return (Priority_Control) (256 - priority);
+  return (Priority_Control) (255 - priority);
 }
 
@@ -32,5 +32,5 @@
 )
 {
-  return 256 - priority;
+  return 255 - priority;
 }
 
Index: cpukit/posix/include/rtems/posix/priority.h
===================================================================
--- cpukit/posix/include/rtems/posix/priority.h	(revision c24fef3e90a4a7b380b5ad60c8372e22c0edc921)
+++ cpukit/posix/include/rtems/posix/priority.h	(revision 6881e0cb4be86a4e91cd2f4d95c43b20d7b89de4)
@@ -16,7 +16,13 @@
  *
  *  Thus, RTEMS Core has priorities run in the opposite sense of the POSIX API.
+ *
+ *  There are only 254 posix priority levels since a task at priority level
+ *  255 would never run because of the RTEMS idle task.  This is necessary
+ *  because GNAT maps the lowest Ada task priority to the lowest thread
+ *  priority.  The lowest priority Ada task should get to run, so there is
+ *  a fundamental conflict with having 255 priorities.
  */
 
-#define POSIX_SCHEDULER_MAXIMUM_PRIORITY (255)
+#define POSIX_SCHEDULER_MAXIMUM_PRIORITY (254)
   
 #define POSIX_SCHEDULER_MINIMUM_PRIORITY (1)
Index: cpukit/posix/inline/rtems/posix/priority.inl
===================================================================
--- cpukit/posix/inline/rtems/posix/priority.inl	(revision c24fef3e90a4a7b380b5ad60c8372e22c0edc921)
+++ cpukit/posix/inline/rtems/posix/priority.inl	(revision 6881e0cb4be86a4e91cd2f4d95c43b20d7b89de4)
@@ -18,5 +18,5 @@
 )
 {
-  return (boolean) (priority >= 1 && priority <= 255);
+  return (boolean) (priority >= 1 && priority <= 254);
 }
 
@@ -25,5 +25,5 @@
 )
 {
-  return (Priority_Control) (256 - priority);
+  return (Priority_Control) (255 - priority);
 }
 
@@ -32,5 +32,5 @@
 )
 {
-  return 256 - priority;
+  return 255 - priority;
 }
 
