Print this page
5045 use atomic_{inc,dec}_* instead of atomic_add_*


 201         { "pages_notenqueued",          KSTAT_DATA_UINT64},
 202         { "pages_notdequeued",          KSTAT_DATA_UINT64},
 203         { "pages_pending",              KSTAT_DATA_UINT64},
 204         { "pages_pending_kas",          KSTAT_DATA_UINT64},
 205         { "pages_deferred",             KSTAT_DATA_UINT64},
 206         { "pages_deferred_kernel",      KSTAT_DATA_UINT64},
 207         { "pages_limit",                KSTAT_DATA_UINT64},
 208         { "pages_limit_exceeded",       KSTAT_DATA_UINT64},
 209         { "pages_fma",                  KSTAT_DATA_UINT64},
 210         { "pages_multiple_ce",          KSTAT_DATA_UINT64},
 211         { "pages_ue",                   KSTAT_DATA_UINT64},
 212         { "pages_ue_cleared_retired",   KSTAT_DATA_UINT64},
 213         { "pages_ue_cleared_freed",     KSTAT_DATA_UINT64},
 214         { "pages_ue_persistent",        KSTAT_DATA_UINT64},
 215         { "pages_unretired",            KSTAT_DATA_UINT64},
 216 };
 217 
 218 static kstat_t  *page_retire_ksp = NULL;
 219 
 220 #define PR_INCR_KSTAT(stat)     \
 221         atomic_add_64(&(page_retire_kstat.stat.value.ui64), 1)
 222 #define PR_DECR_KSTAT(stat)     \
 223         atomic_add_64(&(page_retire_kstat.stat.value.ui64), -1)
 224 
 225 #define PR_KSTAT_RETIRED_CE     (page_retire_kstat.pr_mce.value.ui64)
 226 #define PR_KSTAT_RETIRED_FMA    (page_retire_kstat.pr_fma.value.ui64)
 227 #define PR_KSTAT_RETIRED_NOTUE  (PR_KSTAT_RETIRED_CE + PR_KSTAT_RETIRED_FMA)
 228 #define PR_KSTAT_PENDING        (page_retire_kstat.pr_pending.value.ui64)
 229 #define PR_KSTAT_PENDING_KAS    (page_retire_kstat.pr_pending_kas.value.ui64)
 230 #define PR_KSTAT_EQFAIL         (page_retire_kstat.pr_enqueue_fail.value.ui64)
 231 #define PR_KSTAT_DQFAIL         (page_retire_kstat.pr_dequeue_fail.value.ui64)
 232 
 233 /*
 234  * page retire kstats to list all retired pages
 235  */
 236 static int pr_list_kstat_update(kstat_t *ksp, int rw);
 237 static int pr_list_kstat_snapshot(kstat_t *ksp, void *buf, int rw);
 238 kmutex_t pr_list_kstat_mutex;
 239 
 240 /*
 241  * Limit the number of multiple CE page retires.
 242  * The default is 0.1% of physmem, or 1 in 1000 pages. This is set in
 243  * basis points, where 100 basis points equals one percent.




 201         { "pages_notenqueued",          KSTAT_DATA_UINT64},
 202         { "pages_notdequeued",          KSTAT_DATA_UINT64},
 203         { "pages_pending",              KSTAT_DATA_UINT64},
 204         { "pages_pending_kas",          KSTAT_DATA_UINT64},
 205         { "pages_deferred",             KSTAT_DATA_UINT64},
 206         { "pages_deferred_kernel",      KSTAT_DATA_UINT64},
 207         { "pages_limit",                KSTAT_DATA_UINT64},
 208         { "pages_limit_exceeded",       KSTAT_DATA_UINT64},
 209         { "pages_fma",                  KSTAT_DATA_UINT64},
 210         { "pages_multiple_ce",          KSTAT_DATA_UINT64},
 211         { "pages_ue",                   KSTAT_DATA_UINT64},
 212         { "pages_ue_cleared_retired",   KSTAT_DATA_UINT64},
 213         { "pages_ue_cleared_freed",     KSTAT_DATA_UINT64},
 214         { "pages_ue_persistent",        KSTAT_DATA_UINT64},
 215         { "pages_unretired",            KSTAT_DATA_UINT64},
 216 };
 217 
 218 static kstat_t  *page_retire_ksp = NULL;
 219 
 220 #define PR_INCR_KSTAT(stat)     \
 221         atomic_inc_64(&(page_retire_kstat.stat.value.ui64))
 222 #define PR_DECR_KSTAT(stat)     \
 223         atomic_dec_64(&(page_retire_kstat.stat.value.ui64))
 224 
 225 #define PR_KSTAT_RETIRED_CE     (page_retire_kstat.pr_mce.value.ui64)
 226 #define PR_KSTAT_RETIRED_FMA    (page_retire_kstat.pr_fma.value.ui64)
 227 #define PR_KSTAT_RETIRED_NOTUE  (PR_KSTAT_RETIRED_CE + PR_KSTAT_RETIRED_FMA)
 228 #define PR_KSTAT_PENDING        (page_retire_kstat.pr_pending.value.ui64)
 229 #define PR_KSTAT_PENDING_KAS    (page_retire_kstat.pr_pending_kas.value.ui64)
 230 #define PR_KSTAT_EQFAIL         (page_retire_kstat.pr_enqueue_fail.value.ui64)
 231 #define PR_KSTAT_DQFAIL         (page_retire_kstat.pr_dequeue_fail.value.ui64)
 232 
 233 /*
 234  * page retire kstats to list all retired pages
 235  */
 236 static int pr_list_kstat_update(kstat_t *ksp, int rw);
 237 static int pr_list_kstat_snapshot(kstat_t *ksp, void *buf, int rw);
 238 kmutex_t pr_list_kstat_mutex;
 239 
 240 /*
 241  * Limit the number of multiple CE page retires.
 242  * The default is 0.1% of physmem, or 1 in 1000 pages. This is set in
 243  * basis points, where 100 basis points equals one percent.