[rtems commit] cpukit: Merge FreeBSD values for the priorities

Chris Johns chrisj at rtems.org
Thu Jan 7 22:54:30 UTC 2021


Module:    rtems
Branch:    master
Commit:    7696533b97a2d162978b22f371e0c8fab2b65fb9
Changeset: http://git.rtems.org/rtems/commit/?id=7696533b97a2d162978b22f371e0c8fab2b65fb9

Author:    Chris Johns <chrisj at rtems.org>
Date:      Thu Dec 24 06:33:53 2020 +1100

cpukit: Merge FreeBSD values for the priorities

It seems we need valid values or assumptions in the FreeBSD about
these values breaks some of the code.

Closes #4207

---

 cpukit/include/sys/priority.h | 102 +++++++++++++++++++++++++++++++++++-------
 1 file changed, 85 insertions(+), 17 deletions(-)

diff --git a/cpukit/include/sys/priority.h b/cpukit/include/sys/priority.h
index 025de62..855edb6 100644
--- a/cpukit/include/sys/priority.h
+++ b/cpukit/include/sys/priority.h
@@ -1,5 +1,7 @@
-/*
- * Copyright (c) 2015 embedded brains GmbH
+/*-
+ * SPDX-License-Identifier: BSD-4-Clause
+ *
+ * Copyright (c) 1994, Henrik Vestergaard Draboel
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -10,6 +12,11 @@
  * 2. Redistributions in binary form must reproduce the above copyright
  *    notice, this list of conditions and the following disclaimer in the
  *    documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *      This product includes software developed by Henrik Vestergaard Draboel.
+ * 4. The name of the author may not be used to endorse or promote products
+ *    derived from this software without specific prior written permission.
  *
  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
@@ -22,23 +29,84 @@
  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
+ *
+ * $FreeBSD$
  */
 
 #ifndef _SYS_PRIORITY_H_
-#define	_SYS_PRIORITY_H_
-
-/* Dummy values to make the libbsd happy */
-#define	PRI_MAX_ITHD		0
-#define	PI_NET			0
-#define	PI_DISK			0
-#define	PI_SOFT			0
-#define	PI_SWI(x)		0
-#define	PRI_MIN_KERN		0
-#define	PVM			0
-#define	PRIBIO			0
-#define	PZERO			0
-#define	PSOCK			0
-#define	PWAIT			0
-#define	PPAUSE			0
+#define _SYS_PRIORITY_H_
+
+/*
+ * Process priority specifications.
+ */
+
+/*
+ * Priority classes.
+ */
+
+#define PRI_ITHD                1       /* Interrupt thread. */
+#define PRI_REALTIME            2       /* Real time process. */
+#define PRI_TIMESHARE           3       /* Time sharing process. */
+#define PRI_IDLE                4       /* Idle process. */
+
+/*
+ * Priorities range from 0 to 255, but differences of less then 4 (RQ_PPQ)
+ * are insignificant.  Ranges are as follows:
+ *
+ * Interrupt threads:           0 - 47
+ * Realtime user threads:       48 - 79
+ * Top half kernel threads:     80 - 119
+ * Time sharing user threads:   120 - 223
+ * Idle user threads:           224 - 255
+ *
+ * XXX If/When the specific interrupt thread and top half thread ranges
+ * disappear, a larger range can be used for user processes.
+ */
+
+#define PRI_MIN                 (0)             /* Highest priority. */
+#define PRI_MAX                 (255)           /* Lowest priority. */
+
+#define PRI_MIN_ITHD            (PRI_MIN)
+#define PRI_MAX_ITHD            (PRI_MIN_REALTIME - 1)
+
+#define PI_REALTIME             (PRI_MIN_ITHD + 0)
+#define PI_AV                   (PRI_MIN_ITHD + 4)
+#define PI_NET                  (PRI_MIN_ITHD + 8)
+#define PI_DISK                 (PRI_MIN_ITHD + 12)
+#define PI_TTY                  (PRI_MIN_ITHD + 16)
+#define PI_DULL                 (PRI_MIN_ITHD + 20)
+#define PI_SOFT                 (PRI_MIN_ITHD + 24)
+#define PI_SWI(x)               (PI_SOFT + (x) * RQ_PPQ)
+
+#define PRI_MIN_REALTIME        (48)
+#define PRI_MAX_REALTIME        (PRI_MIN_KERN - 1)
+
+#define PRI_MIN_KERN            (80)
+#define PRI_MAX_KERN            (PRI_MIN_TIMESHARE - 1)
+
+#define PSWP                    (PRI_MIN_KERN + 0)
+#define PVM                     (PRI_MIN_KERN + 4)
+#define PINOD                   (PRI_MIN_KERN + 8)
+#define PRIBIO                  (PRI_MIN_KERN + 12)
+#define PVFS                    (PRI_MIN_KERN + 16)
+#define PZERO                   (PRI_MIN_KERN + 20)
+#define PSOCK                   (PRI_MIN_KERN + 24)
+#define PWAIT                   (PRI_MIN_KERN + 28)
+#define PLOCK                   (PRI_MIN_KERN + 32)
+#define PPAUSE                  (PRI_MIN_KERN + 36)
+
+#define PRI_MIN_TIMESHARE       (120)
+#define PRI_MAX_TIMESHARE       (PRI_MIN_IDLE - 1)
+
+#define PUSER                   (PRI_MIN_TIMESHARE)
+
+#define PRI_MIN_IDLE            (224)
+#define PRI_MAX_IDLE            (PRI_MAX)
+
+#ifdef _KERNEL
+/* Other arguments for kern_yield(9). */
+#define PRI_USER        -2      /* Change to current user priority. */
+#define PRI_UNCHANGED   -1      /* Do not change priority. */
+#endif
 
 #endif	/* !_SYS_PRIORITY_H_ */



More information about the vc mailing list