Print this page
XXXX introduce drv_sectohz


2191         if (DEVI(dip)->devi_ct_count == 0) {
2192                 cv_broadcast(&DEVI(dip)->devi_ct_cv);
2193                 CT_DEBUG((CE_NOTE, "barrier_decr: cv_broadcast"));
2194         }
2195 }
2196 
2197 static void
2198 ct_barrier_incr(dev_info_t *dip)
2199 {
2200         ASSERT(ct_barrier_held(dip));
2201         DEVI(dip)->devi_ct_count++;
2202 }
2203 
2204 static int
2205 ct_barrier_wait_for_empty(dev_info_t *dip, int secs)
2206 {
2207         clock_t abstime;
2208 
2209         ASSERT(MUTEX_HELD(&(DEVI(dip)->devi_ct_lock)));
2210 
2211         abstime = ddi_get_lbolt() + drv_usectohz(secs*1000000);
2212         while (DEVI(dip)->devi_ct_count) {
2213                 if (cv_timedwait(&(DEVI(dip)->devi_ct_cv),
2214                     &(DEVI(dip)->devi_ct_lock), abstime) == -1) {
2215                         return (-1);
2216                 }
2217         }
2218         return (0);
2219 }


2191         if (DEVI(dip)->devi_ct_count == 0) {
2192                 cv_broadcast(&DEVI(dip)->devi_ct_cv);
2193                 CT_DEBUG((CE_NOTE, "barrier_decr: cv_broadcast"));
2194         }
2195 }
2196 
2197 static void
2198 ct_barrier_incr(dev_info_t *dip)
2199 {
2200         ASSERT(ct_barrier_held(dip));
2201         DEVI(dip)->devi_ct_count++;
2202 }
2203 
2204 static int
2205 ct_barrier_wait_for_empty(dev_info_t *dip, int secs)
2206 {
2207         clock_t abstime;
2208 
2209         ASSERT(MUTEX_HELD(&(DEVI(dip)->devi_ct_lock)));
2210 
2211         abstime = ddi_get_lbolt() + drv_sectohz(secs);
2212         while (DEVI(dip)->devi_ct_count) {
2213                 if (cv_timedwait(&(DEVI(dip)->devi_ct_cv),
2214                     &(DEVI(dip)->devi_ct_lock), abstime) == -1) {
2215                         return (-1);
2216                 }
2217         }
2218         return (0);
2219 }