Lines Matching defs:bm
279 bitmap_isset(const bitmap_t *bm, unsigned bit)
287 bval = atomic_load_relaxed(&bm->bits0[i]);
311 bitmap_set(bitmap_t *bm, unsigned bit)
320 bval = bm->bits0[i];
335 if (__npf_atomic_cas_64(&bm->bits0[i], bval, nval) != bval) {
367 if (__npf_atomic_cas_64(&bm->bits0[i], bval, bm1p) != bval) {
391 bitmap_clr(bitmap_t *bm, unsigned bit)
400 bval = bm->bits0[i];
408 if (__npf_atomic_cas_64(&bm->bits0[i], bval, nval) != bval) {
435 bitmap_t *bm;
441 bm = thmap_get(pm->addr_map, addr, alen);
442 if (bm == NULL) {
449 bm = kmem_intr_zalloc(sizeof(bitmap_t), KM_NOSLEEP);
450 if (bm == NULL) {
453 memcpy(&bm->addr, addr, alen);
454 bm->addr_len = alen;
457 ret = thmap_put(pm->addr_map, &bm->addr, alen, bm);
460 if (ret == bm) {
463 LIST_INSERT_HEAD(&pm->bitmap_list, bm, entry);
467 kmem_free(bm, sizeof(bitmap_t));
468 bm = ret;
471 return bm;
483 bitmap_t *bm;
485 while ((bm = LIST_FIRST(&pm->bitmap_list)) != NULL) {
487 uintptr_t bm1 = bm->bits0[i];
493 bm->bits0[i] = UINT64_C(0);
495 LIST_REMOVE(bm, entry);
496 thmap_del(pm->addr_map, &bm->addr, bm->addr_len);
497 kmem_intr_free(bm, sizeof(bitmap_t));
516 bitmap_t *bm;
523 bm = npf_portmap_autoget(pm, alen, addr);
524 if (__predict_false(bm == NULL)) {
533 if (bitmap_set(bm, bit)) {
553 bitmap_t *bm = npf_portmap_autoget(pm, alen, addr);
556 if (!bm || port < pm->min_port || port > pm->max_port) {
560 return bitmap_set(bm, port);
572 bitmap_t *bm;
574 bm = npf_portmap_autoget(pm, alen, addr);
575 if (bm) {
577 bitmap_clr(bm, port);