Lines Matching full:dk

103 static void devfs_rule_applyde_recursive(struct devfs_krule *dk,
105 static void devfs_rule_applydm(struct devfs_krule *dk, struct devfs_mount *dm);
112 static int devfs_rule_match(struct devfs_krule *dk, struct devfs_mount *dm,
114 static int devfs_rule_matchpath(struct devfs_krule *dk, struct devfs_mount *dm,
116 static void devfs_rule_run(struct devfs_krule *dk, struct devfs_mount *dm,
163 struct devfs_krule *dk; in devfs_rules_ioctl() local
190 dk = devfs_rule_byid(dr->dr_id); in devfs_rules_ioctl()
191 if (dk != NULL) { in devfs_rules_ioctl()
226 dk = malloc(sizeof(*dk), M_TEMP, M_WAITOK | M_ZERO); in devfs_rules_ioctl()
227 memcpy(&dk->dk_rule, dr, sizeof(*dr)); in devfs_rules_ioctl()
228 devfs_rule_applydm(dk, dm); in devfs_rules_ioctl()
229 free(dk, M_TEMP); in devfs_rules_ioctl()
234 dk = devfs_rule_byid(rid); in devfs_rules_ioctl()
235 if (dk == NULL) { in devfs_rules_ioctl()
239 devfs_rule_applydm(dk, dm); in devfs_rules_ioctl()
244 dk = devfs_rule_byid(rid); in devfs_rules_ioctl()
245 if (dk == NULL) { in devfs_rules_ioctl()
249 ds = dk->dk_ruleset; in devfs_rules_ioctl()
250 error = devfs_rule_delete(dk); in devfs_rules_ioctl()
271 TAILQ_FOREACH(dk, &ds->ds_rules, dk_list) { in devfs_rules_ioctl()
272 if (rid2rn(dk->dk_rule.dr_id) > rnum) in devfs_rules_ioctl()
275 if (dk == NULL) { in devfs_rules_ioctl()
279 memcpy(dr, &dk->dk_rule, sizeof(*dr)); in devfs_rules_ioctl()
335 * Apply dk to de and everything under de.
343 devfs_rule_applyde_recursive(struct devfs_krule *dk, struct devfs_mount *dm, in devfs_rule_applyde_recursive() argument
349 devfs_rule_applyde_recursive(dk, dm, de2); in devfs_rule_applyde_recursive()
350 devfs_rule_run(dk, dm, de, devfs_rule_depth); in devfs_rule_applyde_recursive()
354 * Apply dk to all entires in dm.
357 devfs_rule_applydm(struct devfs_krule *dk, struct devfs_mount *dm) in devfs_rule_applydm() argument
360 devfs_rule_applyde_recursive(dk, dm, dm->dm_rootdir); in devfs_rule_applydm()
370 struct devfs_krule *dk; in devfs_rule_autonumber() local
373 dk = TAILQ_LAST(&ds->ds_rules, rulehead); in devfs_rule_autonumber()
374 if (dk == NULL) in devfs_rule_autonumber()
377 *rnump = rid2rn(dk->dk_rule.dr_id) + 100; in devfs_rule_autonumber()
379 if (*rnump < rid2rn(dk->dk_rule.dr_id)) in devfs_rule_autonumber()
394 struct devfs_krule *dk; in devfs_rule_byid() local
401 TAILQ_FOREACH(dk, &ds->ds_rules, dk_list) { in devfs_rule_byid()
402 if (rid2rn(dk->dk_rule.dr_id) == rn) in devfs_rule_byid()
403 return (dk); in devfs_rule_byid()
404 else if (rid2rn(dk->dk_rule.dr_id) > rn) in devfs_rule_byid()
415 devfs_rule_delete(struct devfs_krule *dk) in devfs_rule_delete() argument
419 if (dk->dk_rule.dr_iacts & DRA_INCSET) { in devfs_rule_delete()
420 ds = devfs_ruleset_bynum(dk->dk_rule.dr_incset); 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()
428 free(dk, M_DEVFSRULE); in devfs_rule_delete()
476 struct devfs_krule *dk; in devfs_rule_insert() local
508 dk = malloc(sizeof(*dk), M_DEVFSRULE, M_WAITOK | M_ZERO); in devfs_rule_insert()
509 dk->dk_ruleset = ds; in devfs_rule_insert()
513 memcpy(&dk->dk_rule, dr, sizeof(*dr)); in devfs_rule_insert()
514 dk->dk_rule.dr_id = mkrid(rid2rsn(dk->dk_rule.dr_id), dkrn); in devfs_rule_insert()
518 TAILQ_INSERT_BEFORE(k1, dk, dk_list); in devfs_rule_insert()
523 TAILQ_INSERT_TAIL(&ds->ds_rules, dk, dk_list); in devfs_rule_insert()
528 * Determine whether dk matches de. Returns 1 if dk should be run on
532 devfs_rule_match(struct devfs_krule *dk, struct devfs_mount *dm, in devfs_rule_match() argument
535 struct devfs_rule *dr = &dk->dk_rule; in devfs_rule_match()
566 if (!devfs_rule_matchpath(dk, dm, de)) in devfs_rule_match()
573 * Determine whether dk matches de on account of dr_pathptrn.
576 devfs_rule_matchpath(struct devfs_krule *dk, struct devfs_mount *dm, in devfs_rule_matchpath() argument
579 struct devfs_rule *dr = &dk->dk_rule; in devfs_rule_matchpath()
603 * Run dk on de.
606 devfs_rule_run(struct devfs_krule *dk, struct devfs_mount *dm, in devfs_rule_run() argument
609 struct devfs_rule *dr = &dk->dk_rule; in devfs_rule_run()
612 if (!devfs_rule_match(dk, dm, de)) in devfs_rule_run()
637 ds = devfs_ruleset_bynum(dk->dk_rule.dr_incset); in devfs_rule_run()
651 struct devfs_krule *dk; in devfs_ruleset_applyde() local
653 TAILQ_FOREACH(dk, &ds->ds_rules, dk_list) in devfs_ruleset_applyde()
654 devfs_rule_run(dk, dm, de, depth); in devfs_ruleset_applyde()
663 struct devfs_krule *dk; in devfs_ruleset_applydm() local
668 * foreach(dk in ds) in devfs_ruleset_applydm()
670 * apply(dk to de) in devfs_ruleset_applydm()
675 * foreach(dk in ds) in devfs_ruleset_applydm()
676 * apply(dk to de) in devfs_ruleset_applydm()
681 TAILQ_FOREACH(dk, &ds->ds_rules, dk_list) in devfs_ruleset_applydm()
682 devfs_rule_applydm(dk, dm); in devfs_ruleset_applydm()