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