Author: davide
Date: Sat Apr 12 23:29:29 2014
New Revision: 264388
URL: http://svnweb.freebsd.org/changeset/base/264388

Log:
  Hide internal details of sbintime_t implementation wrapping INT64_MAX into
  SBT_MAX, to make it more robust in case internal type representation will
  change in the future. All the consumers were migrated to SBT_MAX and
  every new consumer (if any) should from now use this interface.
  
  Requested by: bapt, jmg, Ryan Lortie (implictly)
  Reviewed by:  mav, bde

Modified:
  head/sys/kern/kern_clocksource.c
  head/sys/kern/kern_event.c
  head/sys/kern/kern_timeout.c
  head/sys/kern/sys_generic.c
  head/sys/sys/time.h

Modified: head/sys/kern/kern_clocksource.c
==============================================================================
--- head/sys/kern/kern_clocksource.c    Sat Apr 12 22:36:26 2014        
(r264387)
+++ head/sys/kern/kern_clocksource.c    Sat Apr 12 23:29:29 2014        
(r264388)
@@ -217,13 +217,13 @@ handleevents(sbintime_t now, int fake)
        } else
                state->nextprof = state->nextstat;
        if (now >= state->nextcallopt) {
-               state->nextcall = state->nextcallopt = INT64_MAX;
+               state->nextcall = state->nextcallopt = SBT_MAX;
                callout_process(now);
        }
 
 #ifdef KDTRACE_HOOKS
        if (fake == 0 && now >= state->nextcyc && cyclic_clock_func != NULL) {
-               state->nextcyc = INT64_MAX;
+               state->nextcyc = SBT_MAX;
                (*cyclic_clock_func)(frame);
        }
 #endif
@@ -509,7 +509,7 @@ configtimer(int start)
                        state = DPCPU_ID_PTR(cpu, timerstate);
                        state->now = now;
                        if (!smp_started && cpu != CPU_FIRST())
-                               state->nextevent = INT64_MAX;
+                               state->nextevent = SBT_MAX;
                        else
                                state->nextevent = next;
                        if (periodic)
@@ -598,10 +598,10 @@ cpu_initclocks_bsp(void)
                state = DPCPU_ID_PTR(cpu, timerstate);
                mtx_init(&state->et_hw_mtx, "et_hw_mtx", NULL, MTX_SPIN);
 #ifdef KDTRACE_HOOKS
-               state->nextcyc = INT64_MAX;
+               state->nextcyc = SBT_MAX;
 #endif
-               state->nextcall = INT64_MAX;
-               state->nextcallopt = INT64_MAX;
+               state->nextcall = SBT_MAX;
+               state->nextcallopt = SBT_MAX;
        }
        periodic = want_periodic;
        /* Grab requested timer or the best of present. */

Modified: head/sys/kern/kern_event.c
==============================================================================
--- head/sys/kern/kern_event.c  Sat Apr 12 22:36:26 2014        (r264387)
+++ head/sys/kern/kern_event.c  Sat Apr 12 23:29:29 2014        (r264388)
@@ -528,8 +528,8 @@ timer2sbintime(intptr_t data)
 {
 
 #ifdef __LP64__
-       if (data > INT64_MAX / SBT_1MS)
-               return INT64_MAX;
+       if (data > SBT_MAX / SBT_1MS)
+               return (SBT_MAX);
 #endif
        return (SBT_1MS * data);
 }
@@ -1399,7 +1399,7 @@ kqueue_scan(struct kqueue *kq, int maxev
                                rsbt = tstosbt(*tsp);
                                if (TIMESEL(&asbt, rsbt))
                                        asbt += tc_tick_sbt;
-                               if (asbt <= INT64_MAX - rsbt)
+                               if (asbt <= SBT_MAX - rsbt)
                                        asbt += rsbt;
                                else
                                        asbt = 0;

Modified: head/sys/kern/kern_timeout.c
==============================================================================
--- head/sys/kern/kern_timeout.c        Sat Apr 12 22:36:26 2014        
(r264387)
+++ head/sys/kern/kern_timeout.c        Sat Apr 12 23:29:29 2014        
(r264388)
@@ -302,7 +302,7 @@ callout_cpu_init(struct callout_cpu *cc)
        for (i = 0; i < callwheelsize; i++)
                LIST_INIT(&cc->cc_callwheel[i]);
        TAILQ_INIT(&cc->cc_expireq);
-       cc->cc_firstevent = INT64_MAX;
+       cc->cc_firstevent = SBT_MAX;
        for (i = 0; i < 2; i++)
                cc_cce_cleanup(cc, i);
        if (cc->cc_callout == NULL)     /* Only cpu0 handles timeout(9) */
@@ -574,8 +574,8 @@ callout_cc_add(struct callout *c, struct
         * Inform the eventtimers(4) subsystem there's a new callout
         * that has been inserted, but only if really required.
         */
-       if (INT64_MAX - c->c_time < c->c_precision)
-               c->c_precision = INT64_MAX - c->c_time;
+       if (SBT_MAX - c->c_time < c->c_precision)
+               c->c_precision = SBT_MAX - c->c_time;
        sbt = c->c_time + c->c_precision;
        if (sbt < cc->cc_firstevent) {
                cc->cc_firstevent = sbt;
@@ -953,8 +953,8 @@ callout_reset_sbt_on(struct callout *c, 
                                to_sbt += tick_sbt;
                } else
                        to_sbt = sbinuptime();
-               if (INT64_MAX - to_sbt < sbt)
-                       to_sbt = INT64_MAX;
+               if (SBT_MAX - to_sbt < sbt)
+                       to_sbt = SBT_MAX;
                else
                        to_sbt += sbt;
                pr = ((C_PRELGET(flags) < 0) ? sbt >> tc_precexp :

Modified: head/sys/kern/sys_generic.c
==============================================================================
--- head/sys/kern/sys_generic.c Sat Apr 12 22:36:26 2014        (r264387)
+++ head/sys/kern/sys_generic.c Sat Apr 12 23:29:29 2014        (r264388)
@@ -1072,7 +1072,7 @@ kern_select(struct thread *td, int nd, f
                        precision >>= tc_precexp;
                        if (TIMESEL(&asbt, rsbt))
                                asbt += tc_tick_sbt;
-                       if (asbt <= INT64_MAX - rsbt)
+                       if (asbt <= SBT_MAX - rsbt)
                                asbt += rsbt;
                        else
                                asbt = -1;
@@ -1547,7 +1547,7 @@ selsocket(struct socket *so, int events,
                        precision >>= tc_precexp;
                        if (TIMESEL(&asbt, rsbt))
                                asbt += tc_tick_sbt;
-                       if (asbt <= INT64_MAX - rsbt)
+                       if (asbt <= SBT_MAX - rsbt)
                                asbt += rsbt;
                        else
                                asbt = -1;

Modified: head/sys/sys/time.h
==============================================================================
--- head/sys/sys/time.h Sat Apr 12 22:36:26 2014        (r264387)
+++ head/sys/sys/time.h Sat Apr 12 23:29:29 2014        (r264388)
@@ -129,6 +129,7 @@ bintime_shift(struct bintime *_bt, int _
 #define        SBT_1MS (SBT_1S / 1000)
 #define        SBT_1US (SBT_1S / 1000000)
 #define        SBT_1NS (SBT_1S / 1000000000)
+#define        SBT_MAX INT64_MAX
 
 static __inline int
 sbintime_getsec(sbintime_t _sbt)
_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "[email protected]"

Reply via email to