Home | History | Annotate | Download | only in gemini

Lines Matching refs:mc

429 	gmac_mapcache_t *mc;
431 mc = kmem_zalloc(offsetof(gmac_mapcache_t, mc_maps[maxmaps]),
433 if (mc == NULL)
436 mc->mc_max = maxmaps;
437 mc->mc_dmat = dmat;
438 mc->mc_mapsize = mapsize;
439 mc->mc_nsegs = nsegs;
440 return mc;
446 gmac_mapcache_t *mc = *mc_p;
448 if (mc == NULL)
451 KASSERT(mc->mc_used == 0);
452 while (mc->mc_free-- > 0) {
453 KASSERT(mc->mc_maps[mc->mc_free] != NULL);
454 bus_dmamap_destroy(mc->mc_dmat, mc->mc_maps[mc->mc_free]);
455 mc->mc_maps[mc->mc_free] = NULL;
458 kmem_free(mc, offsetof(gmac_mapcache_t, mc_maps[mc->mc_max]));
463 gmac_mapcache_fill(gmac_mapcache_t *mc, size_t limit)
467 KASSERT(limit <= mc->mc_max);
469 mc, limit, mc->mc_used, mc->mc_free);
471 for (error = 0; mc->mc_free + mc->mc_used < limit; mc->mc_free++) {
472 KASSERT(mc->mc_maps[mc->mc_free] == NULL);
473 error = bus_dmamap_create(mc->mc_dmat, mc->mc_mapsize,
474 mc->mc_nsegs, mc->mc_mapsize, 0,
476 &mc->mc_maps[mc->mc_free]);
481 mc, limit, mc->mc_used, mc->mc_free);
487 gmac_mapcache_get(gmac_mapcache_t *mc)
491 KASSERT(mc != NULL);
493 if (mc->mc_free == 0) {
495 if (mc->mc_used == mc->mc_max)
497 error = bus_dmamap_create(mc->mc_dmat, mc->mc_mapsize,
498 mc->mc_nsegs, mc->mc_mapsize, 0,
503 KASSERT(mc->mc_maps[mc->mc_free] == NULL);
505 KASSERT(mc->mc_free <= mc->mc_max);
506 map = mc->mc_maps[--mc->mc_free];
507 mc->mc_maps[mc->mc_free] = NULL;
509 mc->mc_used++;
516 gmac_mapcache_put(gmac_mapcache_t *mc, bus_dmamap_t map)
518 KASSERT(mc->mc_free + mc->mc_used < mc->mc_max);
519 KASSERT(mc->mc_maps[mc->mc_free] == NULL);
521 mc->mc_maps[mc->mc_free++] = map;
522 mc->mc_used--;
961 gmac_hwqmem_create(gmac_mapcache_t *mc, size_t ndesc, size_t nqueue, int flags)
971 hqm->hqm_mc = mc;
972 hqm->hqm_dmat = mc->mc_dmat;