+ assert(task != TASK_NULL);
+ task_lock(task);
+
+ task_power_info_locked(task, &powerinfo, NULL);
+ ri->ri_pkg_idle_wkups = powerinfo.task_platform_idle_wakeups;
+ ri->ri_interrupt_wkups = powerinfo.task_interrupt_wakeups;
+ ri->ri_user_time = powerinfo.total_user;
+ ri->ri_system_time = powerinfo.total_system;
+
+ ledger_get_balance(task->ledger, task_ledgers.phys_footprint,
+ (ledger_amount_t *)&ri->ri_phys_footprint);
+ ledger_get_balance(task->ledger, task_ledgers.phys_mem,
+ (ledger_amount_t *)&ri->ri_resident_size);
+ ledger_get_balance(task->ledger, task_ledgers.wired_mem,
+ (ledger_amount_t *)&ri->ri_wired_size);
+
+ ri->ri_pageins = task->pageins;
+
+ task_unlock(task);
+ return (0);
+}
+
+void
+fill_task_billed_usage(task_t task __unused, rusage_info_current *ri)
+{
+#if CONFIG_BANK
+ ri->ri_billed_system_time = bank_billed_time(task->bank_context);
+ ri->ri_serviced_system_time = bank_serviced_time(task->bank_context);
+#else
+ ri->ri_billed_system_time = 0;
+ ri->ri_serviced_system_time = 0;
+#endif
+}
+
+int
+fill_task_io_rusage(task_t task, rusage_info_current *ri)
+{
+ assert(task != TASK_NULL);
+ task_lock(task);