Lines Matching defs:busmem
134 shmif_lockbus(struct shmif_mem *busmem)
138 while (__predict_false(atomic_cas_32(&busmem->shm_lock,
152 shmif_unlockbus(struct shmif_mem *busmem)
157 old = atomic_swap_32(&busmem->shm_lock, LOCK_UNLOCKED);
627 struct shmif_mem *busmem = sc->sc_busmem;
657 shmif_lockbus(busmem);
658 KASSERT(busmem->shm_magic == SHMIF_MAGIC);
659 busmem->shm_last = shmif_nextpktoff(busmem, busmem->shm_last);
663 shmif_buswrite(busmem, busmem->shm_last, &sp, sizeof(sp), &wrap);
667 dataoff = shmif_buswrite(busmem, dataoff, mtod(m, void *),
672 busmem->shm_gen++;
673 DPRINTF(("bus generation now %" PRIu64 "\n", busmem->shm_gen));
675 shmif_unlockbus(busmem);
682 busmem->shm_last));
712 struct shmif_mem *busmem = sc->sc_busmem;
713 unsigned gendiff = busmem->shm_gen - sc->sc_devgen;
716 KASSERT(busmem->shm_first != busmem->shm_last);
718 /* normalize onto a 2x busmem chunk */
720 lastoff = shmif_nextpktoff(busmem, busmem->shm_last);
727 /* Normalize onto 2x busmem chunk */
728 if (busmem->shm_first >= lastoff) {
737 return devoff >= busmem->shm_first && devoff <= lastoff;
745 struct shmif_mem *busmem;
760 busmem = sc->sc_busmem;
775 shmif_lockbus(busmem);
776 KASSERT(busmem->shm_magic == SHMIF_MAGIC);
777 KASSERT(busmem->shm_gen >= sc->sc_devgen);
780 if (sc->sc_devgen == busmem->shm_gen &&
781 shmif_nextpktoff(busmem, busmem->shm_last)
783 shmif_unlockbus(busmem);
794 KASSERT(busmem->shm_gen > 0);
795 nextpkt = busmem->shm_first;
796 if (busmem->shm_first > busmem->shm_last)
797 sc->sc_devgen = busmem->shm_gen - 1;
799 sc->sc_devgen = busmem->shm_gen;
808 KASSERT(!(nextpkt > busmem->shm_last
809 && sc->sc_devgen == busmem->shm_gen));
812 nextpkt = shmif_busread(busmem, &sp,
815 nextpkt = shmif_busread(busmem, mtod(m, void *),