X-Git-Url: https://git.saurik.com/apple/xnu.git/blobdiff_plain/ecc0ceb4089d506a0b8d16686a95817b331af9cb..d26ffc64f583ab2d29df48f13518685602bc8832:/osfmk/kern/ledger.h?ds=sidebyside diff --git a/osfmk/kern/ledger.h b/osfmk/kern/ledger.h index 2ebb8facf..d6b27ce11 100644 --- a/osfmk/kern/ledger.h +++ b/osfmk/kern/ledger.h @@ -32,6 +32,8 @@ #ifndef _KERN_LEDGER_H_ #define _KERN_LEDGER_H_ +#include /* ledger_t */ + #define LEDGER_INFO 0 #define LEDGER_ENTRY_INFO 1 #define LEDGER_TEMPLATE_INFO 2 @@ -54,11 +56,11 @@ struct ledger_template_info { }; struct ledger_entry_info { - int64_t lei_balance; - int64_t lei_credit; - int64_t lei_debit; - uint64_t lei_limit; - uint64_t lei_refill_period; /* In milliseconds */ + int64_t lei_balance; + int64_t lei_credit; + int64_t lei_debit; + uint64_t lei_limit; + uint64_t lei_refill_period; /* In nanoseconds */ uint64_t lei_last_refill; /* Time since last refill */ }; @@ -100,33 +102,42 @@ extern kern_return_t ledger_track_maximum(ledger_template_t template, int entry, int period_in_secs); extern kern_return_t ledger_panic_on_negative(ledger_template_t template, int entry); +extern kern_return_t ledger_track_credit_only(ledger_template_t template, + int entry); extern int ledger_key_lookup(ledger_template_t template, const char *key); /* value of entry type */ #define LEDGER_CREATE_ACTIVE_ENTRIES 0 #define LEDGER_CREATE_INACTIVE_ENTRIES 1 extern ledger_t ledger_instantiate(ledger_template_t template, int entry_type); +extern void ledger_template_complete(ledger_template_t template); extern kern_return_t ledger_disable_callback(ledger_t ledger, int entry); extern kern_return_t ledger_enable_callback(ledger_t ledger, int entry); extern kern_return_t ledger_get_limit(ledger_t ledger, int entry, ledger_amount_t *limit); extern kern_return_t ledger_set_limit(ledger_t ledger, int entry, ledger_amount_t limit, uint8_t warn_level_percentage); -extern kern_return_t ledger_get_maximum(ledger_t ledger, int entry, +extern kern_return_t ledger_get_recent_max(ledger_t ledger, int entry, ledger_amount_t *max_observed_balance); +extern kern_return_t ledger_get_lifetime_max(ledger_t ledger, int entry, + ledger_amount_t *max_lifetime_balance); extern kern_return_t ledger_get_actions(ledger_t ledger, int entry, int *actions); extern kern_return_t ledger_set_action(ledger_t ledger, int entry, int action); extern kern_return_t ledger_get_period(ledger_t ledger, int entry, - uint64_t *period); + uint64_t *period); extern kern_return_t ledger_set_period(ledger_t ledger, int entry, - uint64_t period); + uint64_t period); extern kern_return_t ledger_disable_refill(ledger_t l, int entry); extern kern_return_t ledger_entry_setactive(ledger_t ledger, int entry); -extern void ledger_check_new_balance(ledger_t ledger, int entry); +extern void ledger_check_new_balance(thread_t thread, ledger_t ledger, int entry); extern kern_return_t ledger_credit(ledger_t ledger, int entry, ledger_amount_t amount); extern kern_return_t ledger_debit(ledger_t ledger, int entry, ledger_amount_t amount); +extern kern_return_t ledger_credit_thread(thread_t thread, ledger_t ledger, + int entry, ledger_amount_t amount); +extern kern_return_t ledger_debit_thread(thread_t thread, ledger_t ledger, + int entry, ledger_amount_t amount); extern kern_return_t ledger_zero_balance(ledger_t ledger, int entry); extern kern_return_t ledger_get_entries(ledger_t ledger, int entry, ledger_amount_t *credit, ledger_amount_t *debit); @@ -136,6 +147,7 @@ extern kern_return_t ledger_reset_callback_state(ledger_t ledger, int entry); extern kern_return_t ledger_disable_panic_on_negative(ledger_t ledger, int entry); extern kern_return_t ledger_rollup(ledger_t to_ledger, ledger_t from_ledger); +extern kern_return_t ledger_rollup_entry(ledger_t to_ledger, ledger_t from_ledger, int entry); extern void ledger_ast(thread_t thread);