Module Name: src
Committed By: dyoung
Date: Fri Jan 22 23:27:01 UTC 2010
Modified Files:
src/share/man/man9: xc.9
Log Message:
Per rmind@'s suggestion, describe the cross-call implementation in more
detail (by pulling more text from sys/kern/subr_xcall.c).
Mention that a cross-call can be preempted, and xref kpreempt(9).
To generate a diff of this commit:
cvs rdiff -u -r1.1 -r1.2 src/share/man/man9/xc.9
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/share/man/man9/xc.9
diff -u src/share/man/man9/xc.9:1.1 src/share/man/man9/xc.9:1.2
--- src/share/man/man9/xc.9:1.1 Fri Jan 22 20:43:48 2010
+++ src/share/man/man9/xc.9 Fri Jan 22 23:27:01 2010
@@ -1,4 +1,4 @@
-.\" $NetBSD: xc.9,v 1.1 2010/01/22 20:43:48 dyoung Exp $
+.\" $NetBSD: xc.9,v 1.2 2010/01/22 23:27:01 dyoung Exp $
.\"
.\" Copyright (c) 2010 The NetBSD Foundation, Inc.
.\" All rights reserved.
@@ -72,6 +72,22 @@
be found.
.Pp
Cross calls help to solve these types of problem.
+.Pp
+.Nm
+provides a slow mechanism for making
+.Dq "low priority"
+cross calls.
+The function to be executed runs on the remote CPU within a bound
+kthread.
+No queueing is provided, and the implementation uses global state.
+The function being called may block briefly on locks, but in doing
+so must be careful to not interfere with other cross calls in the
+system.
+The function is called with thread context and not from a soft
+interrupt, so it can ensure that it is not interrupting other code
+running on the CPU, and so has exclusive access to the CPU.
+Since this facility is heavyweight, it's expected that it will not
+be used often.
.Sh FUNCTIONS
.Bl -tag -width compact
.It Fn xc_init_cpu "ci"
@@ -93,7 +109,12 @@
Always call
.Fn xc_broadcast
from thread context.
-Treat this as an expensive operation.
+Because
+.Fn (*func)
+is run at a low priority, it can be preempted.
+Treat
+.Fn xc_broadcast
+as an expensive operation.
.It Fn xc_unicast "flags" "func" "arg1" "arg2" "ci"
Like
.Fn xc_broadcast ,
@@ -129,7 +150,8 @@
.Pa sys/kern/subr_xcall.c .
.\" .Sh EXAMPLES
.Sh SEE ALSO
-.Xr percpu 9
+.Xr percpu 9 ,
+.Xr kpreempt 9
.Sh HISTORY
The
.Nm