Module Name: src
Committed By: christos
Date: Thu Aug 4 07:09:15 UTC 2016
Modified Files:
src/lib/librt: sched.3
Log Message:
Flesh out sched_protect
To generate a diff of this commit:
cvs rdiff -u -r1.14 -r1.15 src/lib/librt/sched.3
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/lib/librt/sched.3
diff -u src/lib/librt/sched.3:1.14 src/lib/librt/sched.3:1.15
--- src/lib/librt/sched.3:1.14 Wed Jul 6 11:55:02 2016
+++ src/lib/librt/sched.3 Thu Aug 4 03:09:15 2016
@@ -1,4 +1,4 @@
-.\" $NetBSD: sched.3,v 1.14 2016/07/06 15:55:02 wiz Exp $
+.\" $NetBSD: sched.3,v 1.15 2016/08/04 07:09:15 christos Exp $
.\"
.\" Copyright (c) 2008 The NetBSD Foundation, Inc.
.\" All rights reserved.
@@ -27,7 +27,7 @@
.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
.\" POSSIBILITY OF SUCH DAMAGE.
.\"
-.Dd July 5, 2016
+.Dd August 4, 2016
.Dt SCHED 3
.Os
.Sh NAME
@@ -156,11 +156,33 @@ Get the affinity mask of the process spe
into the
.Fa cpuset .
.It Fn sched_protect priority
-Performs priority protection for
+Performs priority protection using the
.Dv PTHREAD_PRIO_PROTECT
protocol.
-This function will increase the priority of the caller thread to
+This function will increase the protected priority of the caller thread to
+.Fa priority
+if the current thread's protected priority is smaller than
.Fa priority .
+Multiple calls to
+.Fn sched_protect
+with a positive priority will
+.Dq push
+a priority level to the current thread, whereas calling
+.Fn sched_protect
+with a
+.Fa priority
+level of
+.Dv \-1
+will
+.Dq pop
+a priority level.
+When the level reaches
+.Dv 0
+(the same number of
+.Dq pushes
+and
+.Dq pops
+have been issued) the original thread priority will be restored.
.El
.Sh IMPLEMENTATION NOTES
Setting CPU
@@ -274,6 +296,21 @@ and the value of
.Fa pid
is not zero.
.El
+.Pp
+The
+.Fn sched_protect
+function fails if:
+.Bl -tag -width Er
+.It Bq Er EINVAL
+The thread was not priority protected.
+.It Bq Er EPERM
+The
+.Fa priority
+parameter was out of range (not in the range between
+.Dv SCHED_PRIO_MIN
+and
+.Dv SCHED_PRIO_MAX ) .
+.El
.Sh SEE ALSO
.Xr affinity 3 ,
.Xr cpuset 3 ,