Date: Mon, 4 Jun 2012 17:10:02 +0000 (UTC) From: Davide Italiano <davide@FreeBSD.org> To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r236569 - in projects/calloutng/sys: kern sys Message-ID: <201206041710.q54HA2Wx054333@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: davide Date: Mon Jun 4 17:10:02 2012 New Revision: 236569 URL: http://svn.freebsd.org/changeset/base/236569 Log: - Start to experiment an extension of the current KPI adding the callout_reset_bt_on() in which we specify timeouts in terms of struct bintime rather than ticks. - Make the old callout_reset_on() just a wrapper to the new function. Modified: projects/calloutng/sys/kern/kern_timeout.c projects/calloutng/sys/sys/callout.h Modified: projects/calloutng/sys/kern/kern_timeout.c ============================================================================== --- projects/calloutng/sys/kern/kern_timeout.c Mon Jun 4 16:28:56 2012 (r236568) +++ projects/calloutng/sys/kern/kern_timeout.c Mon Jun 4 17:10:02 2012 (r236569) @@ -830,24 +830,14 @@ callout_handle_init(struct callout_handl * callout_pending() - returns truth if callout is still waiting for timeout * callout_deactivate() - marks the callout as having been serviced */ -int -callout_reset_on(struct callout *c, int to_ticks, void (*ftn)(void *), +int +callout_reset_bt_on(struct callout *c, struct bintime bt, void (*ftn)(void *), void *arg, int cpu) { struct callout_cpu *cc; - struct bintime bt; - struct bintime now; int cancelled = 0; - int bucket; - - /* - * Convert ticks to struct bintime. - */ + int bucket; - FREQ2BT(hz,&bt); - getbinuptime(&now); - bintime_mul(&bt,to_ticks); - bintime_add(&bt,&now); /* * Don't allow migration of pre-allocated callouts lest they * become unbalanced. @@ -924,6 +914,19 @@ callout_reset_on(struct callout *c, int return (cancelled); } +int +callout_reset_on(struct callout *c, int to_ticks, void (*ftn)(void *), + void *arg, int cpu) +{ + struct bintime bt, now; + + FREQ2BT(hz,&bt); + getbinuptime(&now); + bintime_mul(&bt,to_ticks); + bintime_add(&bt,&now); + return (callout_reset_bt_on(c, bt, ftn, arg, cpu)); +} + /* * Common idioms that can be optimized in the future. */ Modified: projects/calloutng/sys/sys/callout.h ============================================================================== --- projects/calloutng/sys/sys/callout.h Mon Jun 4 16:28:56 2012 (r236568) +++ projects/calloutng/sys/sys/callout.h Mon Jun 4 17:10:02 2012 (r236569) @@ -68,6 +68,8 @@ void _callout_init_lock(struct callout * _callout_init_lock((c), ((rw) != NULL) ? &(rw)->lock_object : \ NULL, (flags)) #define callout_pending(c) ((c)->c_flags & CALLOUT_PENDING) +int callout_reset_bt_on(struct callout *, struct bintime, void(*)(void *), + void *, int); int callout_reset_on(struct callout *, int, void (*)(void *), void *, int); #define callout_reset(c, on_tick, fn, arg) \ callout_reset_on((c), (on_tick), (fn), (arg), (c)->c_cpu)
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201206041710.q54HA2Wx054333>