Lines Matching +full:pps +full:- +full:channel
1 /*-
29 * $Id: bsd-compat.c 9253 2010-09-02 10:12:09Z fjoe $
59 mtx_lock_spin(&t->mtx); in run_timer()
60 if (callout_pending(&t->callout)) { in run_timer()
62 mtx_unlock_spin(&t->mtx); in run_timer()
65 if (!callout_active(&t->callout)) { in run_timer()
67 mtx_unlock_spin(&t->mtx); in run_timer()
70 callout_deactivate(&t->callout); in run_timer()
72 function = t->function; in run_timer()
73 mtx_unlock_spin(&t->mtx); in run_timer()
75 function(t->data); in run_timer()
81 mtx_init(&t->mtx, "dahdi timer lock", NULL, MTX_SPIN); in vchiq_init_timer()
82 callout_init(&t->callout, 1); in vchiq_init_timer()
83 t->expires = 0; in vchiq_init_timer()
93 t->function = function; in vchiq_setup_timer()
94 t->data = data; in vchiq_setup_timer()
101 mtx_lock_spin(&t->mtx); in vchiq_mod_timer()
102 callout_reset(&t->callout, expires - jiffies, run_timer, t); in vchiq_mod_timer()
103 mtx_unlock_spin(&t->mtx); in vchiq_mod_timer()
109 vchiq_mod_timer(t, t->expires); in vchiq_add_timer()
115 mtx_lock_spin(&t->mtx); in vchiq_del_timer_sync()
116 callout_stop(&t->callout); in vchiq_del_timer_sync()
117 mtx_unlock_spin(&t->mtx); in vchiq_del_timer_sync()
119 mtx_destroy(&t->mtx); in vchiq_del_timer_sync()
136 cv_init(&c->cv, "VCHI completion cv"); in init_completion()
137 mtx_init(&c->lock, "VCHI completion lock", "condvar", MTX_DEF); in init_completion()
138 c->done = 0; in init_completion()
144 cv_destroy(&c->cv); in destroy_completion()
145 mtx_destroy(&c->lock); in destroy_completion()
151 mtx_lock(&c->lock); in complete()
153 if (c->done >= 0) { in complete()
154 KASSERT(c->done < INT_MAX, ("c->done overflow")); /* XXX check */ in complete()
155 c->done++; in complete()
156 cv_signal(&c->cv); in complete()
158 KASSERT(c->done == -1, ("Invalid value of c->done: %d", c->done)); in complete()
161 mtx_unlock(&c->lock); in complete()
167 mtx_lock(&c->lock); in complete_all()
169 if (c->done >= 0) { in complete_all()
170 KASSERT(c->done < INT_MAX, ("c->done overflow")); /* XXX check */ in complete_all()
171 c->done = -1; in complete_all()
172 cv_broadcast(&c->cv); in complete_all()
174 KASSERT(c->done == -1, ("Invalid value of c->done: %d", c->done)); in complete_all()
177 mtx_unlock(&c->lock); in complete_all()
183 mtx_lock(&c->lock); in INIT_COMPLETION_locked()
185 c->done = 0; in INIT_COMPLETION_locked()
187 mtx_unlock(&c->lock); in INIT_COMPLETION_locked()
194 KASSERT(mtx_owned(&c->lock), in _completion_claim()
196 KASSERT(c->done != 0, ("_completion_claim on non-waited completion")); in _completion_claim()
197 if (c->done > 0) in _completion_claim()
198 c->done--; in _completion_claim()
200 KASSERT(c->done == -1, ("Invalid value of c->done: %d", c->done)); in _completion_claim()
206 mtx_lock(&c->lock); in wait_for_completion()
207 if (!c->done) in wait_for_completion()
208 cv_wait(&c->cv, &c->lock); in wait_for_completion()
209 c->done--; in wait_for_completion()
210 mtx_unlock(&c->lock); in wait_for_completion()
218 mtx_lock(&c->lock); in try_wait_for_completion()
219 if (!c->done) in try_wait_for_completion()
222 c->done--; in try_wait_for_completion()
223 mtx_unlock(&c->lock); in try_wait_for_completion()
234 mtx_lock(&c->lock); in wait_for_completion_interruptible_timeout()
235 while (c->done == 0) { in wait_for_completion_interruptible_timeout()
236 res = cv_timedwait_sig(&c->cv, &c->lock, timeout); in wait_for_completion_interruptible_timeout()
240 if (timeout < (now - start)) { in wait_for_completion_interruptible_timeout()
245 timeout -= (now - start); in wait_for_completion_interruptible_timeout()
253 mtx_unlock(&c->lock); in wait_for_completion_interruptible_timeout()
258 return -ERESTART; in wait_for_completion_interruptible_timeout()
270 mtx_lock(&c->lock); in wait_for_completion_interruptible()
271 while (c->done == 0) { in wait_for_completion_interruptible()
272 res = cv_wait_sig(&c->cv, &c->lock); in wait_for_completion_interruptible()
280 mtx_unlock(&c->lock); in wait_for_completion_interruptible()
283 res = -ERESTART; in wait_for_completion_interruptible()
309 mtx_init(&s->mtx, "sema lock", "VCHIQ sepmaphore backing lock", in _sema_init()
311 cv_init(&s->cv, "sema cv"); in _sema_init()
312 s->value = value; in _sema_init()
318 mtx_destroy(&s->mtx); in _sema_destroy()
319 cv_destroy(&s->cv); in _sema_destroy()
326 mtx_lock(&s->mtx); in down()
327 while (s->value == 0) { in down()
328 s->waiters++; in down()
329 cv_wait(&s->cv, &s->mtx); in down()
330 s->waiters--; in down()
333 s->value--; in down()
334 mtx_unlock(&s->mtx); in down()
343 mtx_lock(&s->mtx); in down_interruptible()
345 while (s->value == 0) { in down_interruptible()
346 s->waiters++; in down_interruptible()
347 ret = cv_wait_sig(&s->cv, &s->mtx); in down_interruptible()
348 s->waiters--; in down_interruptible()
352 mtx_unlock(&s->mtx); in down_interruptible()
353 return -EINTR; in down_interruptible()
357 s->value--; in down_interruptible()
358 mtx_unlock(&s->mtx); in down_interruptible()
370 mtx_lock(&s->mtx); in down_trylock()
372 if (s->value > 0) { in down_trylock()
374 s->value--; in down_trylock()
377 ret = -EAGAIN; in down_trylock()
380 mtx_unlock(&s->mtx); in down_trylock()
388 mtx_lock(&s->mtx); in up()
389 s->value++; in up()
390 if (s->waiters && s->value > 0) in up()
391 cv_signal(&s->cv); in up()
393 mtx_unlock(&s->mtx); in up()
400 rlprintf(int pps, const char *fmt, ...) in rlprintf() argument
406 if (ppsratecheck(&last_printf, &count, pps)) { in rlprintf()
414 device_rlprintf(int pps, device_t dev, const char *fmt, ...) in device_rlprintf() argument
420 if (ppsratecheck(&last_printf, &count, pps)) { in device_rlprintf()
467 slot->threadfn(slot->data); in kthread_wrapper()
486 slot->data = data; in vchiq_thread_create()
487 slot->threadfn = threadfn; in vchiq_thread_create()
518 bcm_mbox_write(int channel, uint32_t data) in bcm_mbox_write() argument
525 MBOX_WRITE(mbox, channel, data); in bcm_mbox_write()