int pktpool_stop_trigger(pktpool_t *pktp, void *p) { uint32 cycles, i; if (!PKTPOOL(OSH_NULL, p)) return 0; OSL_GETCYCLES(cycles); for (i = 0; i < pktp->dbg_qlen; i++) { ASSERT(pktp->dbg_q[i].p != NULL); if (pktp->dbg_q[i].p == p) { if (pktp->dbg_q[i].cycles == 0) break; if (cycles >= pktp->dbg_q[i].cycles) pktp->dbg_q[i].dur = cycles - pktp->dbg_q[i].cycles; else pktp->dbg_q[i].dur = (((uint32)-1) - pktp->dbg_q[i].cycles) + cycles + 1; pktp->dbg_q[i].cycles = 0; break; } } return 0; }
void osl_long_delay(osl_t *osh, uint usec, bool yield) { uint d; bool yielded = TRUE; int usec_to_delay = usec; unsigned long tick1, tick2, tick_diff = 0; while (usec_to_delay > 0) { if (!yield || !yielded) { d = MIN(usec_to_delay, 10); udelay(d); usec_to_delay -= d; } if (usec_to_delay > 0) { osh->oshsh->long_delay++; OSL_GETCYCLES(tick1); spin_unlock_bh(osh->oshsh->lock); if (usec_to_delay > 0 && !in_irq() && !in_softirq() && !in_interrupt()) { schedule(); yielded = TRUE; } else { yielded = FALSE; } spin_lock_bh(osh->oshsh->lock); OSL_GETCYCLES(tick2); if (yielded) { tick_diff = TICKDIFF(tick2, tick1); tick_diff = (tick_diff * 2)/(osh->oshsh->MIPS); if (tick_diff) { usec_to_delay -= tick_diff; } else yielded = 0; } osh->oshsh->long_delay--; ASSERT(osh->oshsh->long_delay >= 0); } } }
int bcmseclib_os_get_time(bcmseclib_time_t *time) { unsigned int ticks; unsigned int msec; OSL_GETCYCLES(ticks); msec = (unsigned int) ((1000.0 * (ticks)) / BWL_NU_TICKS_PER_SECOND); time->sec = (msec / 1000); time->usec = ((msec % 1000) * 1000); return (0); }
int pktpool_start_trigger(pktpool_t *pktp, void *p) { uint32 cycles, i; if (!PKTPOOL(OSH_NULL, p)) return 0; OSL_GETCYCLES(cycles); for (i = 0; i < pktp->dbg_qlen; i++) { ASSERT(pktp->dbg_q[i].p != NULL); if (pktp->dbg_q[i].p == p) { pktp->dbg_q[i].cycles = cycles; break; } } return 0; }
void bcmlog(char *fmt, uint a1, uint a2) { static uint last = 0; uint cycles, i; OSL_GETCYCLES(cycles); /* wrap? */ if (cycles < last) last = cycles; i = logi; logtab[i].cycles = cycles - last; logtab[i].fmt = fmt; logtab[i].a1 = a1; logtab[i].a2 = a2; logi = ++i % LOGSIZE; last = cycles; }