svn commit: r297465 - head/sys/kern

Edward Tomasz Napierala trasz at FreeBSD.org
Thu Mar 31 17:32:30 UTC 2016


Author: trasz
Date: Thu Mar 31 17:32:28 2016
New Revision: 297465
URL: https://svnweb.freebsd.org/changeset/base/297465

Log:
  Refactor; no functional changes.
  
  MFC after:	1 month
  Sponsored by:	The FreeBSD Foundation

Modified:
  head/sys/kern/kern_rctl.c

Modified: head/sys/kern/kern_rctl.c
==============================================================================
--- head/sys/kern/kern_rctl.c	Thu Mar 31 17:27:30 2016	(r297464)
+++ head/sys/kern/kern_rctl.c	Thu Mar 31 17:32:28 2016	(r297465)
@@ -219,43 +219,43 @@ rctl_resource_name(int resource)
 	panic("rctl_resource_name: unknown resource %d", resource);
 }
 
-/*
- * Return the amount of resource that can be allocated by 'p' before
- * hitting 'rule'.
- */
-static int64_t
-rctl_available_resource(const struct proc *p, const struct rctl_rule *rule)
+static struct racct *
+rctl_proc_rule_to_racct(const struct proc *p, const struct rctl_rule *rule)
 {
-	int resource;
-	int64_t available = INT64_MAX;
 	struct ucred *cred = p->p_ucred;
 
 	ASSERT_RACCT_ENABLED();
 	rw_assert(&rctl_lock, RA_LOCKED);
 
-	resource = rule->rr_resource;
 	switch (rule->rr_per) {
 	case RCTL_SUBJECT_TYPE_PROCESS:
-		available = rule->rr_amount -
-		    p->p_racct->r_resources[resource];
-		break;
+		return (p->p_racct);
 	case RCTL_SUBJECT_TYPE_USER:
-		available = rule->rr_amount -
-		    cred->cr_ruidinfo->ui_racct->r_resources[resource];
-		break;
+		return (cred->cr_ruidinfo->ui_racct);
 	case RCTL_SUBJECT_TYPE_LOGINCLASS:
-		available = rule->rr_amount -
-		    cred->cr_loginclass->lc_racct->r_resources[resource];
-		break;
+		return (cred->cr_loginclass->lc_racct);
 	case RCTL_SUBJECT_TYPE_JAIL:
-		available = rule->rr_amount -
-		    cred->cr_prison->pr_prison_racct->prr_racct->
-		        r_resources[resource];
-		break;
+		return (cred->cr_prison->pr_prison_racct->prr_racct);
 	default:
-		panic("rctl_compute_available: unknown per %d",
-		    rule->rr_per);
+		panic("%s: unknown per %d", __func__, rule->rr_per);
 	}
+}
+
+/*
+ * Return the amount of resource that can be allocated by 'p' before
+ * hitting 'rule'.
+ */
+static int64_t
+rctl_available_resource(const struct proc *p, const struct rctl_rule *rule)
+{
+	int64_t available;
+	const struct racct *racct;
+
+	ASSERT_RACCT_ENABLED();
+	rw_assert(&rctl_lock, RA_LOCKED);
+
+	racct = rctl_proc_rule_to_racct(p, rule);
+	available = rule->rr_amount - racct->r_resources[rule->rr_resource];
 
 	return (available);
 }


More information about the svn-src-all mailing list