| 1029 | } |
| 1030 | |
| 1031 | struct rctl_rule * |
| 1032 | rctl_rule_duplicate(const struct rctl_rule *rule, int flags) |
| 1033 | { |
| 1034 | struct rctl_rule *copy; |
| 1035 | |
| 1036 | ASSERT_RACCT_ENABLED(); |
| 1037 | |
| 1038 | copy = uma_zalloc(rctl_rule_zone, flags); |
| 1039 | if (copy == NULL) |
| 1040 | return (NULL); |
| 1041 | copy->rr_subject_type = rule->rr_subject_type; |
| 1042 | copy->rr_subject.rs_proc = rule->rr_subject.rs_proc; |
| 1043 | copy->rr_subject.rs_uip = rule->rr_subject.rs_uip; |
| 1044 | copy->rr_subject.rs_loginclass = rule->rr_subject.rs_loginclass; |
| 1045 | copy->rr_subject.rs_prison_racct = rule->rr_subject.rs_prison_racct; |
| 1046 | copy->rr_per = rule->rr_per; |
| 1047 | copy->rr_resource = rule->rr_resource; |
| 1048 | copy->rr_action = rule->rr_action; |
| 1049 | copy->rr_amount = rule->rr_amount; |
| 1050 | refcount_init(©->rr_refcount, 1); |
| 1051 | rctl_rule_acquire_subject(copy); |
| 1052 | |
| 1053 | return (copy); |
| 1054 | } |
| 1055 | |
| 1056 | void |
| 1057 | rctl_rule_acquire(struct rctl_rule *rule) |
no test coverage detected