-#if 00
- assert(pmap->stats.device >= num_device);
- if (num_device)
- OSAddAtomic(-num_device, &pmap->stats.device);
-#endif /* 00 */
- assert(pmap->stats.external >= num_external);
- if (num_external)
- OSAddAtomic(-num_external, &pmap->stats.external);
- assert(pmap->stats.internal >= num_internal);
- if (num_internal)
- OSAddAtomic(-num_internal, &pmap->stats.internal);
- assert(pmap->stats.reusable >= num_reusable);
- if (num_reusable)
- OSAddAtomic(-num_reusable, &pmap->stats.reusable);
- assert(pmap->stats.compressed >= num_compressed);
- if (num_compressed)
- OSAddAtomic64(-num_compressed, &pmap->stats.compressed);
+ PMAP_STATS_ASSERTF((pmap->stats.external >= stats_external,
+ "pmap=%p stats_external=%d stats.external=%d",
+ pmap, stats_external, pmap->stats.external));
+ PMAP_STATS_ASSERTF((pmap->stats.internal >= stats_internal,
+ "pmap=%p stats_internal=%d stats.internal=%d",
+ pmap, stats_internal, pmap->stats.internal));
+ PMAP_STATS_ASSERTF((pmap->stats.reusable >= stats_reusable,
+ "pmap=%p stats_reusable=%d stats.reusable=%d",
+ pmap, stats_reusable, pmap->stats.reusable));
+ PMAP_STATS_ASSERTF((pmap->stats.compressed >= stats_compressed,
+ "pmap=%p stats_compressed=%lld, stats.compressed=%lld",
+ pmap, stats_compressed, pmap->stats.compressed));
+
+ /* update pmap stats */
+ if (stats_external) {
+ OSAddAtomic(-stats_external, &pmap->stats.external);
+ }
+ if (stats_internal) {
+ OSAddAtomic(-stats_internal, &pmap->stats.internal);
+ }
+ if (stats_reusable)
+ OSAddAtomic(-stats_reusable, &pmap->stats.reusable);
+ if (stats_compressed)
+ OSAddAtomic64(-stats_compressed, &pmap->stats.compressed);
+ /* update ledgers */
+ if (ledgers_internal) {
+ pmap_ledger_debit(pmap,
+ task_ledgers.internal,
+ machine_ptob(ledgers_internal));
+ }
+ if (ledgers_compressed) {
+ pmap_ledger_debit(pmap,
+ task_ledgers.internal_compressed,
+ machine_ptob(ledgers_compressed));
+ }
+ if (ledgers_alt_internal) {
+ pmap_ledger_debit(pmap,
+ task_ledgers.alternate_accounting,
+ machine_ptob(ledgers_alt_internal));
+ }
+ if (ledgers_alt_compressed) {
+ pmap_ledger_debit(pmap,
+ task_ledgers.alternate_accounting_compressed,
+ machine_ptob(ledgers_alt_compressed));
+ }
+ pmap_ledger_debit(pmap,
+ task_ledgers.phys_footprint,
+ machine_ptob((ledgers_internal -
+ ledgers_alt_internal) +
+ (ledgers_compressed -
+ ledgers_alt_compressed)));