diff options
Diffstat (limited to 'usr/src/uts/common/os/kmem.c')
| -rw-r--r-- | usr/src/uts/common/os/kmem.c | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/usr/src/uts/common/os/kmem.c b/usr/src/uts/common/os/kmem.c index 7ae9d5f16b..be7ba8b0cc 100644 --- a/usr/src/uts/common/os/kmem.c +++ b/usr/src/uts/common/os/kmem.c @@ -1682,6 +1682,21 @@ kmem_cache_magazine_enable(kmem_cache_t *cp) } /* + * Reap (almost) everything right now. See kmem_cache_magazine_purge() + * for explanation of the back-to-back kmem_depot_ws_update() calls. + */ +void +kmem_cache_reap_now(kmem_cache_t *cp) +{ + kmem_depot_ws_update(cp); + kmem_depot_ws_update(cp); + + (void) taskq_dispatch(kmem_taskq, + (task_func_t *)kmem_depot_ws_reap, cp, TQ_SLEEP); + taskq_wait(kmem_taskq); +} + +/* * Recompute a cache's magazine size. The trade-off is that larger magazines * provide a higher transfer rate with the depot, while smaller magazines * reduce memory consumption. Magazine resizing is an expensive operation; @@ -1978,6 +1993,15 @@ kmem_maxavail(void) return ((size_t)ptob(MAX(MIN(pmem, vmem), 0))); } +/* + * Indicate whether memory-intensive kmem debugging is enabled. + */ +int +kmem_debugging(void) +{ + return (kmem_flags & (KMF_AUDIT | KMF_REDZONE)); +} + kmem_cache_t * kmem_cache_create( char *name, /* descriptive name for this cache */ |
