+/*
+ * Routine: bank_get_bank_task_ledger_with_ref
+ * Purpose: Get the bank ledger from the bank task and return a reference to it.
+ */
+static ledger_t
+bank_get_bank_task_ledger_with_ref(bank_task_t bank_task)
+{
+ ledger_t ledger = LEDGER_NULL;
+
+ lck_mtx_lock(&bank_task->bt_acc_to_pay_lock);
+ ledger = bank_task->bt_ledger;
+ if (ledger) {
+ ledger_reference(ledger);
+ }
+ lck_mtx_unlock(&bank_task->bt_acc_to_pay_lock);
+
+ return ledger;
+}
+
+/*
+ * Routine: bank_destroy_bank_task_ledger
+ * Purpose: Drop the bank task reference on the task ledger.
+ */
+static void
+bank_destroy_bank_task_ledger(bank_task_t bank_task)
+{
+ ledger_t ledger;
+
+ /* Remove the ledger reference from the bank task */
+ lck_mtx_lock(&bank_task->bt_acc_to_pay_lock);
+ assert(LEDGER_VALID(bank_task->bt_ledger));
+ ledger = bank_task->bt_ledger;
+ bank_task->bt_ledger = LEDGER_NULL;
+ lck_mtx_unlock(&bank_task->bt_acc_to_pay_lock);
+
+ ledger_dereference(ledger);
+}
+