+ cfs_waitq_wait (&wl);
+ } else {
+ struct timeval tv;
+
+ now = cfs_time_current();
+ cfs_waitq_timedwait(&wl, cfs_time_seconds(timeout_ms)/1000);
+ cfs_duration_usec(cfs_time_sub(cfs_time_current(), now), &tv);
+ timeout_ms -= tv.tv_sec * 1000 + tv.tv_usec / 1000;