summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoravg <avg@FreeBSD.org>2014-12-08 13:13:17 +0000
committeravg <avg@FreeBSD.org>2014-12-08 13:13:17 +0000
commit36fdb56baa99212563c1b7bc1d6dd227efbe41c0 (patch)
treeb50c93c293484654db3b4593cd20af1ed4c9902f
parentc07a7147dfe34345d865f4505c5ed1b54f7561d5 (diff)
downloadFreeBSD-src-36fdb56baa99212563c1b7bc1d6dd227efbe41c0.zip
FreeBSD-src-36fdb56baa99212563c1b7bc1d6dd227efbe41c0.tar.gz
MFC r275045: callout(9): add sbt flavors of callout_schedule
Not applicable to earlier releases.
-rw-r--r--share/man/man9/Makefile6
-rw-r--r--share/man/man9/timeout.921
-rw-r--r--sys/sys/callout.h7
3 files changed, 30 insertions, 4 deletions
diff --git a/share/man/man9/Makefile b/share/man/man9/Makefile
index c7140e2..76e8314 100644
--- a/share/man/man9/Makefile
+++ b/share/man/man9/Makefile
@@ -1385,10 +1385,14 @@ MLINKS+=timeout.9 callout.9 \
timeout.9 callout_init_rw.9 \
timeout.9 callout_pending.9 \
timeout.9 callout_reset.9 \
- timeout.9 callout_reset_sbt.9 \
timeout.9 callout_reset_on.9 \
+ timeout.9 callout_reset_sbt.9 \
+ timeout.9 callout_reset_sbt_curcpu.9 \
timeout.9 callout_reset_sbt_on.9 \
timeout.9 callout_schedule.9 \
+ timeout.9 callout_schedule_sbt.9 \
+ timeout.9 callout_schedule_sbt_curcpu.9 \
+ timeout.9 callout_schedule_sbt_on.9 \
timeout.9 callout_stop.9 \
timeout.9 untimeout.9
MLINKS+=ucred.9 crcopy.9 \
diff --git a/share/man/man9/timeout.9 b/share/man/man9/timeout.9
index fad8690..7202815 100644
--- a/share/man/man9/timeout.9
+++ b/share/man/man9/timeout.9
@@ -51,6 +51,9 @@
.Nm callout_schedule ,
.Nm callout_schedule_curcpu ,
.Nm callout_schedule_on ,
+.Nm callout_schedule_sbt ,
+.Nm callout_schedule_sbt_curcpu ,
+.Nm callout_schedule_sbt_on ,
.Nm callout_stop ,
.Nm timeout ,
.Nm untimeout
@@ -106,6 +109,15 @@ struct callout_handle handle = CALLOUT_HANDLE_INITIALIZER(&handle);
.Ft int
.Fn callout_schedule_on "struct callout *c" "int ticks" "int cpu"
.Ft int
+.Fn callout_schedule_sbt "struct callout *c" "sbintime_t sbt" \
+"sbintime_t pr" "int flags"
+.Ft int
+.Fn callout_schedule_sbt_curcpu "struct callout *c" "sbintime_t sbt" \
+"sbintime_t pr" "int flags"
+.Ft int
+.Fn callout_schedule_sbt_on "struct callout *c" "sbintime_t sbt" \
+"sbintime_t pr" "int cpu" "int flags"
+.Ft int
.Fn callout_stop "struct callout *c"
.Ft struct callout_handle
.Fn timeout "timeout_t *func" "void *arg" "int ticks"
@@ -386,21 +398,24 @@ callouts are assigned to CPU 0.
The
.Fn callout_reset_on ,
.Fn callout_reset_sbt_on ,
-and
.Fn callout_schedule_on
+and
+.Fn callout_schedule_sbt_on
functions assign the callout to CPU
.Fa cpu .
The
.Fn callout_reset_curcpu ,
.Fn callout_reset_sbt_curpu ,
-and
.Fn callout_schedule_curcpu
+and
+.Fn callout_schedule_sbt_curcpu
functions assign the callout to the current CPU.
The
.Fn callout_reset ,
.Fn callout_reset_sbt ,
-and
.Fn callout_schedule
+and
+.Fn callout_schedule_sbt
functions schedule the callout to execute in the softclock thread of the CPU
to which it is currently assigned.
.Pp
diff --git a/sys/sys/callout.h b/sys/sys/callout.h
index 8b51440..0c6bbea 100644
--- a/sys/sys/callout.h
+++ b/sys/sys/callout.h
@@ -91,6 +91,13 @@ int callout_reset_sbt_on(struct callout *, sbintime_t, sbintime_t,
callout_reset_on((c), (on_tick), (fn), (arg), (c)->c_cpu)
#define callout_reset_curcpu(c, on_tick, fn, arg) \
callout_reset_on((c), (on_tick), (fn), (arg), PCPU_GET(cpuid))
+#define callout_schedule_sbt_on(c, sbt, pr, cpu, flags) \
+ callout_reset_sbt_on((c), (sbt), (pr), (c)->c_func, (c)->c_arg, \
+ (cpu), (flags))
+#define callout_schedule_sbt(c, sbt, pr, flags) \
+ callout_schedule_sbt_on((c), (sbt), (pr), (c)->c_cpu, (flags))
+#define callout_schedule_sbt_curcpu(c, sbt, pr, flags) \
+ callout_schedule_sbt_on((c), (sbt), (pr), PCPU_GET(cpuid), (flags))
int callout_schedule(struct callout *, int);
int callout_schedule_on(struct callout *, int, int);
#define callout_schedule_curcpu(c, on_tick) \
OpenPOWER on IntegriCloud