svn commit: r355600 - in head: share/man/man9 sys/kern sys/sys
John Baldwin
jhb at FreeBSD.org
Tue Dec 10 21:58:31 UTC 2019
Author: jhb
Date: Tue Dec 10 21:58:30 2019
New Revision: 355600
URL: https://svnweb.freebsd.org/changeset/base/355600
Log:
Add a callout_func_t typedef for functions used with callout_*().
This typedef is the same as timeout_t except that it is in the callout
namespace and header.
Use this typedef in various places of the callout implementation that
were either using the raw type or timeout_t.
While here, add <sys/callout.h> to the manpage.
Reviewed by: kib, imp
MFC after: 1 month
Differential Revision: https://reviews.freebsd.org/D22751
Modified:
head/share/man/man9/timeout.9
head/sys/kern/kern_timeout.c
head/sys/sys/_callout.h
Modified: head/share/man/man9/timeout.9
==============================================================================
--- head/share/man/man9/timeout.9 Tue Dec 10 21:56:44 2019 (r355599)
+++ head/share/man/man9/timeout.9 Tue Dec 10 21:58:30 2019 (r355600)
@@ -29,7 +29,7 @@
.\"
.\" $FreeBSD$
.\"
-.Dd July 27, 2016
+.Dd December 10, 2019
.Dt TIMEOUT 9
.Os
.Sh NAME
@@ -62,8 +62,10 @@
.Nd execute a function after a specified length of time
.Sh SYNOPSIS
.In sys/types.h
+.In sys/callout.h
.In sys/systm.h
.Bd -literal
+typedef void callout_func_t (void *);
typedef void timeout_t (void *);
.Ed
.Ft int
@@ -71,7 +73,7 @@ typedef void timeout_t (void *);
.Ft void
.Fn callout_deactivate "struct callout *c"
.Ft int
-.Fn callout_async_drain "struct callout *c" "timeout_t *drain"
+.Fn callout_async_drain "struct callout *c" "callout_func_t *drain"
.Ft int
.Fn callout_drain "struct callout *c"
.Ft void
@@ -90,19 +92,24 @@ struct callout_handle handle = CALLOUT_HANDLE_INITIALI
.Ft int
.Fn callout_pending "struct callout *c"
.Ft int
-.Fn callout_reset "struct callout *c" "int ticks" "timeout_t *func" "void *arg"
+.Fo callout_reset
+.Fa "struct callout *c"
+.Fa "int ticks"
+.Fa "callout_func_t *func"
+.Fa "void *arg"
+.Fc
.Ft int
.Fo callout_reset_curcpu
.Fa "struct callout *c"
.Fa "int ticks"
-.Fa "timeout_t *func"
+.Fa "callout_func_t *func"
.Fa "void *arg"
.Fc
.Ft int
.Fo callout_reset_on
.Fa "struct callout *c"
.Fa "int ticks"
-.Fa "timeout_t *func"
+.Fa "callout_func_t *func"
.Fa "void *arg"
.Fa "int cpu"
.Fc
@@ -111,7 +118,7 @@ struct callout_handle handle = CALLOUT_HANDLE_INITIALI
.Fa "struct callout *c"
.Fa "sbintime_t sbt"
.Fa "sbintime_t pr"
-.Fa "timeout_t *func"
+.Fa "callout_func_t *func"
.Fa "void *arg"
.Fa "int flags"
.Fc
@@ -120,7 +127,7 @@ struct callout_handle handle = CALLOUT_HANDLE_INITIALI
.Fa "struct callout *c"
.Fa "sbintime_t sbt"
.Fa "sbintime_t pr"
-.Fa "timeout_t *func"
+.Fa "callout_func_t *func"
.Fa "void *arg"
.Fa "int flags"
.Fc
@@ -129,7 +136,7 @@ struct callout_handle handle = CALLOUT_HANDLE_INITIALI
.Fa "struct callout *c"
.Fa "sbintime_t sbt"
.Fa "sbintime_t pr"
-.Fa "timeout_t *func"
+.Fa "callout_func_t *func"
.Fa "void *arg"
.Fa "int cpu"
.Fa "int flags"
Modified: head/sys/kern/kern_timeout.c
==============================================================================
--- head/sys/kern/kern_timeout.c Tue Dec 10 21:56:44 2019 (r355599)
+++ head/sys/kern/kern_timeout.c Tue Dec 10 21:58:30 2019 (r355600)
@@ -145,11 +145,11 @@ static u_int __read_mostly callwheelmask;
*/
struct cc_exec {
struct callout *cc_curr;
- void (*cc_drain)(void *);
+ callout_func_t *cc_drain;
void *cc_last_func;
void *cc_last_arg;
#ifdef SMP
- void (*ce_migration_func)(void *);
+ callout_func_t *ce_migration_func;
void *ce_migration_arg;
sbintime_t ce_migration_time;
sbintime_t ce_migration_prec;
@@ -656,7 +656,7 @@ softclock_call_cc(struct callout *c, struct callout_cp
int direct)
{
struct rm_priotracker tracker;
- void (*c_func)(void *);
+ callout_func_t *c_func, *drain;
void *c_arg;
struct lock_class *class;
struct lock_object *c_lock;
@@ -664,7 +664,7 @@ softclock_call_cc(struct callout *c, struct callout_cp
int c_iflags;
#ifdef SMP
struct callout_cpu *new_cc;
- void (*new_func)(void *);
+ callout_func_t *new_func;
void *new_arg;
int flags, new_cpu;
sbintime_t new_prec, new_time;
@@ -673,7 +673,7 @@ softclock_call_cc(struct callout *c, struct callout_cp
sbintime_t sbt1, sbt2;
struct timespec ts2;
static sbintime_t maxdt = 2 * SBT_1MS; /* 2 msec */
- static timeout_t *lastfunc;
+ static callout_func_t *lastfunc;
#endif
KASSERT((c->c_iflags & CALLOUT_PENDING) == CALLOUT_PENDING,
@@ -768,8 +768,6 @@ skip:
KASSERT(cc_exec_curr(cc, direct) == c, ("mishandled cc_curr"));
cc_exec_curr(cc, direct) = NULL;
if (cc_exec_drain(cc, direct)) {
- void (*drain)(void *);
-
drain = cc_exec_drain(cc, direct);
cc_exec_drain(cc, direct) = NULL;
CC_UNLOCK(cc);
@@ -1031,7 +1029,7 @@ callout_when(sbintime_t sbt, sbintime_t precision, int
*/
int
callout_reset_sbt_on(struct callout *c, sbintime_t sbt, sbintime_t prec,
- void (*ftn)(void *), void *arg, int cpu, int flags)
+ callout_func_t *ftn, void *arg, int cpu, int flags)
{
sbintime_t to_sbt, precision;
struct callout_cpu *cc;
@@ -1190,7 +1188,7 @@ callout_schedule(struct callout *c, int to_ticks)
}
int
-_callout_stop_safe(struct callout *c, int flags, void (*drain)(void *))
+_callout_stop_safe(struct callout *c, int flags, callout_func_t *drain)
{
struct callout_cpu *cc, *old_cc;
struct lock_class *class;
Modified: head/sys/sys/_callout.h
==============================================================================
--- head/sys/sys/_callout.h Tue Dec 10 21:56:44 2019 (r355599)
+++ head/sys/sys/_callout.h Tue Dec 10 21:58:30 2019 (r355600)
@@ -48,6 +48,8 @@ LIST_HEAD(callout_list, callout);
SLIST_HEAD(callout_slist, callout);
TAILQ_HEAD(callout_tailq, callout);
+typedef void callout_func_t(void *);
+
struct callout {
union {
LIST_ENTRY(callout) le;
@@ -57,7 +59,7 @@ struct callout {
sbintime_t c_time; /* ticks to the event */
sbintime_t c_precision; /* delta allowed wrt opt */
void *c_arg; /* function argument */
- void (*c_func)(void *); /* function to call */
+ callout_func_t *c_func; /* function to call */
struct lock_object *c_lock; /* lock to handle */
short c_flags; /* User State */
short c_iflags; /* Internal State */
More information about the svn-src-all
mailing list