Lines Matching refs:ds
106 static int devfs_rule_autonumber(struct devfs_ruleset *ds, devfs_rnum *rnp);
119 static void devfs_ruleset_applyde(struct devfs_ruleset *ds,
122 static void devfs_ruleset_applydm(struct devfs_ruleset *ds,
143 struct devfs_ruleset *ds; in devfs_rules_apply() local
150 ds = devfs_ruleset_bynum(dm->dm_ruleset); in devfs_rules_apply()
151 KASSERT(ds != NULL, ("mount-point has NULL ruleset")); in devfs_rules_apply()
152 devfs_ruleset_applyde(ds, dm, de, devfs_rule_depth); in devfs_rules_apply()
162 struct devfs_ruleset *ds; in devfs_rules_ioctl() local
249 ds = dk->dk_ruleset; in devfs_rules_ioctl()
265 ds = devfs_ruleset_bynum(rid2rsn(dr->dr_id)); in devfs_rules_ioctl()
266 if (ds == NULL) { in devfs_rules_ioctl()
271 TAILQ_FOREACH(dk, &ds->ds_rules, dk_list) { in devfs_rules_ioctl()
288 ds = devfs_ruleset_bynum(rsnum); in devfs_rules_ioctl()
289 if (ds == NULL) { in devfs_rules_ioctl()
293 devfs_ruleset_applydm(ds, dm); in devfs_rules_ioctl()
297 TAILQ_FOREACH(ds, &devfs_rulesets, ds_list) { in devfs_rules_ioctl()
298 if (ds->ds_number > rsnum) in devfs_rules_ioctl()
301 if (ds == NULL) { in devfs_rules_ioctl()
305 *(devfs_rsnum *)data = ds->ds_number; in devfs_rules_ioctl()
368 devfs_rule_autonumber(struct devfs_ruleset *ds, devfs_rnum *rnump) in devfs_rule_autonumber() argument
373 dk = TAILQ_LAST(&ds->ds_rules, rulehead); in devfs_rule_autonumber()
382 KASSERT(devfs_rule_byid(mkrid(ds->ds_number, *rnump)) == NULL, in devfs_rule_autonumber()
393 struct devfs_ruleset *ds; in devfs_rule_byid() local
398 ds = devfs_ruleset_bynum(rid2rsn(rid)); in devfs_rule_byid()
399 if (ds == NULL) in devfs_rule_byid()
401 TAILQ_FOREACH(dk, &ds->ds_rules, dk_list) { in devfs_rule_byid()
417 struct devfs_ruleset *ds; in devfs_rule_delete() local
420 ds = devfs_ruleset_bynum(dk->dk_rule.dr_incset); in devfs_rule_delete()
421 KASSERT(ds != NULL, ("DRA_INCSET but bad dr_incset")); in devfs_rule_delete()
422 --ds->ds_refcount; in devfs_rule_delete()
423 devfs_ruleset_reap(ds); in devfs_rule_delete()
425 ds = dk->dk_ruleset; in devfs_rule_delete()
426 TAILQ_REMOVE(&ds->ds_rules, dk, dk_list); in devfs_rule_delete()
427 devfs_ruleset_reap(ds); in devfs_rule_delete()
474 struct devfs_ruleset *ds, *dsi; in devfs_rule_insert() local
496 ds = devfs_ruleset_bynum(rsnum); in devfs_rule_insert()
497 if (ds == NULL) in devfs_rule_insert()
498 ds = devfs_ruleset_create(rsnum); in devfs_rule_insert()
501 error = devfs_rule_autonumber(ds, &dkrn); in devfs_rule_insert()
503 devfs_ruleset_reap(ds); in devfs_rule_insert()
509 dk->dk_ruleset = ds; in devfs_rule_insert()
516 TAILQ_FOREACH(k1, &ds->ds_rules, dk_list) { in devfs_rule_insert()
523 TAILQ_INSERT_TAIL(&ds->ds_rules, dk, dk_list); in devfs_rule_insert()
610 struct devfs_ruleset *ds; in devfs_rule_run() local
637 ds = devfs_ruleset_bynum(dk->dk_rule.dr_incset); in devfs_rule_run()
638 KASSERT(ds != NULL, ("DRA_INCSET but bad dr_incset")); in devfs_rule_run()
639 devfs_ruleset_applyde(ds, dm, de, depth - 1); in devfs_rule_run()
648 devfs_ruleset_applyde(struct devfs_ruleset *ds, struct devfs_mount *dm, in devfs_ruleset_applyde() argument
653 TAILQ_FOREACH(dk, &ds->ds_rules, dk_list) in devfs_ruleset_applyde()
661 devfs_ruleset_applydm(struct devfs_ruleset *ds, struct devfs_mount *dm) in devfs_ruleset_applydm() argument
681 TAILQ_FOREACH(dk, &ds->ds_rules, dk_list) in devfs_ruleset_applydm()
691 struct devfs_ruleset *ds; in devfs_ruleset_bynum() local
693 TAILQ_FOREACH(ds, &devfs_rulesets, ds_list) { in devfs_ruleset_bynum()
694 if (ds->ds_number == rsnum) in devfs_ruleset_bynum()
695 return (ds); in devfs_ruleset_bynum()
707 struct devfs_ruleset *ds; in devfs_ruleset_create() local
714 ds = malloc(sizeof(*ds), M_DEVFSRULE, M_WAITOK | M_ZERO); in devfs_ruleset_create()
715 ds->ds_number = rsnum; in devfs_ruleset_create()
716 TAILQ_INIT(&ds->ds_rules); in devfs_ruleset_create()
720 TAILQ_INSERT_BEFORE(s1, ds, ds_list); in devfs_ruleset_create()
725 TAILQ_INSERT_TAIL(&devfs_rulesets, ds, ds_list); in devfs_ruleset_create()
726 return (ds); in devfs_ruleset_create()
735 devfs_ruleset_reap(struct devfs_ruleset *ds) in devfs_ruleset_reap() argument
738 KASSERT(ds->ds_number != 0, ("reaping ruleset zero ")); in devfs_ruleset_reap()
740 if (!TAILQ_EMPTY(&ds->ds_rules) || ds->ds_refcount != 0) in devfs_ruleset_reap()
743 TAILQ_REMOVE(&devfs_rulesets, ds, ds_list); in devfs_ruleset_reap()
744 free(ds, M_DEVFSRULE); in devfs_ruleset_reap()
753 struct devfs_ruleset *cds, *ds; in devfs_ruleset_use() local
766 ds = devfs_ruleset_bynum(rsnum); in devfs_ruleset_use()
767 if (ds == NULL) in devfs_ruleset_use()
768 ds = devfs_ruleset_create(rsnum); in devfs_ruleset_use()
770 ++ds->ds_refcount; in devfs_ruleset_use()
779 struct devfs_ruleset *ds; in devfs_rules_cleanup() local
783 ds = devfs_ruleset_bynum(dm->dm_ruleset); in devfs_rules_cleanup()
784 --ds->ds_refcount; in devfs_rules_cleanup()
785 devfs_ruleset_reap(ds); in devfs_rules_cleanup()
809 struct devfs_ruleset *ds; in devfs_ruleset_apply() local
818 ds = devfs_ruleset_bynum(dm->dm_ruleset); in devfs_ruleset_apply()
819 if (ds != NULL) in devfs_ruleset_apply()
820 devfs_ruleset_applydm(ds, dm); in devfs_ruleset_apply()