Date: Thu, 13 Dec 2012 21:39:59 +0000 (UTC) From: Alexander Motin <mav@FreeBSD.org> To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r244192 - in projects/calloutng/sys: kern sys Message-ID: <201212132139.qBDLdx1J019648@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: mav Date: Thu Dec 13 21:39:59 2012 New Revision: 244192 URL: http://svnweb.freebsd.org/changeset/base/244192 Log: - Fix bug in TIMESEL() macro, incorrectly using (get)binuptime() functions. - Make TIMESEL() macro return flag reporting which of functions was used. - Use the above flag to simplify the code. - Make some minor optimizations. Reviewed by: davide Modified: projects/calloutng/sys/kern/kern_time.c projects/calloutng/sys/kern/kern_timeout.c projects/calloutng/sys/kern/sys_generic.c projects/calloutng/sys/sys/time.h Modified: projects/calloutng/sys/kern/kern_time.c ============================================================================== --- projects/calloutng/sys/kern/kern_time.c Thu Dec 13 21:27:20 2012 (r244191) +++ projects/calloutng/sys/kern/kern_time.c Thu Dec 13 21:39:59 2012 (r244192) @@ -491,15 +491,11 @@ kern_nanosleep(struct thread *td, struct if (rqt->tv_sec < 0 || (rqt->tv_sec == 0 && rqt->tv_nsec == 0)) return (0); timespec2bintime(rqt, &tmp); - TIMESEL(&bt, &tmp); - bintime_add(&bt, &tmp); bt_prec = tmp; bintime_divpow2(&bt_prec, tc_timeexp); - if (rqt->tv_nsec > tc_timethreshold) { + if (TIMESEL(&bt, &tmp)) bintime_add(&bt, &tick_bt); - if (bintime_cmp(&bt_prec, &halftick_bt, <)) - bt_prec = halftick_bt; - } + bintime_add(&bt, &tmp); bintime_add(&bt, &bt_prec); error = tsleep_bt(&nanowait, PWAIT | PCATCH, "nanslp", &bt, &bt_prec); TIMESEL(&btt, &tmp); Modified: projects/calloutng/sys/kern/kern_timeout.c ============================================================================== --- projects/calloutng/sys/kern/kern_timeout.c Thu Dec 13 21:27:20 2012 (r244191) +++ projects/calloutng/sys/kern/kern_timeout.c Thu Dec 13 21:39:59 2012 (r244192) @@ -935,7 +935,7 @@ _callout_reset_on(struct callout *c, str if (bt == NULL) { pr = to_bt = tick_bt; getbinuptime(&now); - if (to_ticks > 0) + if (to_ticks > 1) bintime_mul(&to_bt, to_ticks); bintime_add(&to_bt, &now); to_ticks >>= C_PRELGET(flags); Modified: projects/calloutng/sys/kern/sys_generic.c ============================================================================== --- projects/calloutng/sys/kern/sys_generic.c Thu Dec 13 21:27:20 2012 (r244191) +++ projects/calloutng/sys/kern/sys_generic.c Thu Dec 13 21:39:59 2012 (r244192) @@ -1005,15 +1005,11 @@ kern_select(struct thread *td, int nd, f goto done; } timeval2bintime(&atv, &abt); - TIMESEL(&rbt, &abt); - bintime_add(&abt, &rbt); precision = abt; bintime_divpow2(&precision, tc_timeexp); - if (bintime_cmp(&tick_bt, &precision, >)) { + if (TIMESEL(&rbt, &abt)) bintime_add(&abt, &tick_bt); - if (bintime_cmp(&precision, &halftick_bt, <)) - precision = halftick_bt; - } + bintime_add(&abt, &rbt); bintime_add(&abt, &precision); } else { abt.sec = 0; @@ -1292,15 +1288,11 @@ sys_poll(td, uap) goto done; } timeval2bintime(&atv, &abt); - TIMESEL(&rbt, &abt); precision = abt; - bintime_add(&abt, &rbt); bintime_divpow2(&precision, tc_timeexp); - if (atv.tv_usec * 1000 > tc_timethreshold) { + if (TIMESEL(&rbt, &abt)) bintime_add(&abt, &tick_bt); - if (bintime_cmp(&precision, &halftick_bt, <)) - precision = halftick_bt; - } + bintime_add(&abt, &rbt); bintime_add(&abt, &precision); } else { abt.sec = 0; Modified: projects/calloutng/sys/sys/time.h ============================================================================== --- projects/calloutng/sys/sys/time.h Thu Dec 13 21:27:20 2012 (r244191) +++ projects/calloutng/sys/sys/time.h Thu Dec 13 21:39:59 2012 (r244192) @@ -367,7 +367,7 @@ int tvtohz(struct timeval *tv); #define TIMESEL(bt, bt2) \ ((bintime_cmp((bt2), (&bt_timethreshold), >=)) ? \ - binuptime((bt)) : getbinuptime((bt))) + (getbinuptime(bt), 1) : (binuptime(bt), 0)) #else /* !_KERNEL */ #include <time.h>
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201212132139.qBDLdx1J019648>