+int
+mac_proc_check_suspend_resume(proc_t curp, int sr)
+{
+ kauth_cred_t cred;
+ int error;
+
+ if (!mac_proc_enforce ||
+ !mac_proc_check_enforce(curp, MAC_PROC_ENFORCE))
+ return (0);
+
+ cred = kauth_cred_proc_ref(curp);
+ MAC_CHECK(proc_check_suspend_resume, cred, curp, sr);
+ kauth_cred_unref(&cred);
+
+ return (error);
+}
+
+int
+mac_proc_check_ledger(proc_t curp, proc_t proc, int ledger_op)
+{
+ kauth_cred_t cred;
+ int error = 0;
+
+ if (!mac_proc_enforce ||
+ !mac_proc_check_enforce(curp, MAC_PROC_ENFORCE))
+ return (0);
+
+ cred = kauth_cred_proc_ref(curp);
+ MAC_CHECK(proc_check_ledger, cred, proc, ledger_op);
+ kauth_cred_unref(&cred);
+
+ return (error);
+}
+
+int
+mac_proc_check_cpumon(proc_t curp)
+{
+ kauth_cred_t cred;
+ int error = 0;
+
+ if (!mac_proc_enforce ||
+ !mac_proc_check_enforce(curp, MAC_PROC_ENFORCE))
+ return (0);
+
+ cred = kauth_cred_proc_ref(curp);
+ MAC_CHECK(proc_check_cpumon, cred);
+ kauth_cred_unref(&cred);
+
+ return (error);
+}
+
+int
+mac_proc_check_proc_info(proc_t curp, proc_t target, int callnum, int flavor)
+{
+ kauth_cred_t cred;
+ int error = 0;
+
+ if (!mac_proc_enforce ||
+ !mac_proc_check_enforce(curp, MAC_PROC_ENFORCE))
+ return (0);
+
+ cred = kauth_cred_proc_ref(curp);
+ MAC_CHECK(proc_check_proc_info, cred, target, callnum, flavor);
+ kauth_cred_unref(&cred);
+
+ return (error);
+}
+
+struct label *
+mac_thread_label_alloc(void)
+{
+ struct label *label;
+
+ label = mac_labelzone_alloc(MAC_WAITOK);
+ if (label == NULL)
+ return (NULL);
+ MAC_PERFORM(thread_label_init, label);
+ return (label);
+}
+
+void
+mac_thread_label_init(struct uthread *uthread)
+{
+ uthread->uu_label = mac_thread_label_alloc();
+}
+
+void
+mac_thread_label_free(struct label *label)
+{
+ MAC_PERFORM(thread_label_destroy, label);
+ mac_labelzone_free(label);
+}