Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 10 Dec 2019 21:58:30 +0000 (UTC)
From:      John Baldwin <jhb@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r355600 - in head: share/man/man9 sys/kern sys/sys
Message-ID:  <201912102158.xBALwUF9075354@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
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 */



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201912102158.xBALwUF9075354>