aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndre Oppermann <andre@FreeBSD.org>2006-02-16 15:40:36 +0000
committerAndre Oppermann <andre@FreeBSD.org>2006-02-16 15:40:36 +0000
commita4684d742dbebeb758bf8f2bdada11e417153cd8 (patch)
tree1cf7bcf54161058ad8b1b8ccb3e5e20521c58e33
parent9512e326640de3413891edd0e96a7e381c0ff8a7 (diff)
downloadsrc-a4684d742dbebeb758bf8f2bdada11e417153cd8.tar.gz
src-a4684d742dbebeb758bf8f2bdada11e417153cd8.zip
Make sysctl_msec_to_ticks(SYSCTL_HANDLER_ARGS) generally available instead
of being private to tcp_timer.c. Sponsored by: TCP/IP Optimization Fundraise 2005 MFC after: 3 days
Notes
Notes: svn path=/head/; revision=155758
-rw-r--r--sys/kern/kern_sysctl.c26
-rw-r--r--sys/netinet/tcp_timer.c20
-rw-r--r--sys/sys/sysctl.h1
3 files changed, 27 insertions, 20 deletions
diff --git a/sys/kern/kern_sysctl.c b/sys/kern/kern_sysctl.c
index 38fb5dc86edb..aaa3dc3c52c0 100644
--- a/sys/kern/kern_sysctl.c
+++ b/sys/kern/kern_sysctl.c
@@ -822,6 +822,32 @@ sysctl_handle_int(SYSCTL_HANDLER_ARGS)
return (error);
}
+
+/*
+ * Based on on sysctl_handle_int() convert milliseconds into ticks.
+ */
+
+int
+sysctl_msec_to_ticks(SYSCTL_HANDLER_ARGS)
+{
+ int error, s, tt;
+
+ tt = *(int *)oidp->oid_arg1;
+ s = (int)((int64_t)tt * 1000 / hz);
+
+ error = sysctl_handle_int(oidp, &s, 0, req);
+ if (error || !req->newptr)
+ return (error);
+
+ tt = (int)((int64_t)s * hz / 1000);
+ if (tt < 1)
+ return (EINVAL);
+
+ *(int *)oidp->oid_arg1 = tt;
+ return (0);
+}
+
+
/*
* Handle a long, signed or unsigned. arg1 points to it.
*/
diff --git a/sys/netinet/tcp_timer.c b/sys/netinet/tcp_timer.c
index 9726f6772398..b9d24a8a4ec5 100644
--- a/sys/netinet/tcp_timer.c
+++ b/sys/netinet/tcp_timer.c
@@ -63,26 +63,6 @@
#include <netinet/tcp_debug.h>
#endif
-static int
-sysctl_msec_to_ticks(SYSCTL_HANDLER_ARGS)
-{
- int error, s, tt;
-
- tt = *(int *)oidp->oid_arg1;
- s = (int)((int64_t)tt * 1000 / hz);
-
- error = sysctl_handle_int(oidp, &s, 0, req);
- if (error || !req->newptr)
- return (error);
-
- tt = (int)((int64_t)s * hz / 1000);
- if (tt < 1)
- return (EINVAL);
-
- *(int *)oidp->oid_arg1 = tt;
- return (0);
-}
-
int tcp_keepinit;
SYSCTL_PROC(_net_inet_tcp, TCPCTL_KEEPINIT, keepinit, CTLTYPE_INT|CTLFLAG_RW,
&tcp_keepinit, 0, sysctl_msec_to_ticks, "I", "");
diff --git a/sys/sys/sysctl.h b/sys/sys/sysctl.h
index c9532aca6d56..8aeca9fdbee9 100644
--- a/sys/sys/sysctl.h
+++ b/sys/sys/sysctl.h
@@ -168,6 +168,7 @@ struct sysctl_oid {
#define SYSCTL_OUT(r, p, l) (r->oldfunc)(r, p, l)
int sysctl_handle_int(SYSCTL_HANDLER_ARGS);
+int sysctl_msec_to_ticks(SYSCTL_HANDLER_ARGS);
int sysctl_handle_long(SYSCTL_HANDLER_ARGS);
int sysctl_handle_intptr(SYSCTL_HANDLER_ARGS);
int sysctl_handle_string(SYSCTL_HANDLER_ARGS);