summaryrefslogtreecommitdiffstats
path: root/freebsd/sys/vm/uma_core.c
diff options
context:
space:
mode:
Diffstat (limited to 'freebsd/sys/vm/uma_core.c')
-rw-r--r--freebsd/sys/vm/uma_core.c40
1 files changed, 17 insertions, 23 deletions
diff --git a/freebsd/sys/vm/uma_core.c b/freebsd/sys/vm/uma_core.c
index 733aa8be..c30d516b 100644
--- a/freebsd/sys/vm/uma_core.c
+++ b/freebsd/sys/vm/uma_core.c
@@ -162,7 +162,7 @@ static struct callout uma_callout;
* a special allocation function just for zones.
*/
struct uma_zctor_args {
- char *name;
+ const char *name;
size_t size;
uma_ctor ctor;
uma_dtor dtor;
@@ -216,6 +216,7 @@ enum zfreeskip { SKIP_NONE, SKIP_DTOR, SKIP_FINI };
#define ZFREE_STATFREE 0x00000002 /* Update zone free statistic. */
/* Prototypes.. */
+
#ifndef __rtems__
static void *obj_alloc(uma_zone_t, int, u_int8_t *, int);
#endif /* __rtems__ */
@@ -286,10 +287,7 @@ static void
bucket_enable(void)
{
#ifndef __rtems__
- if (cnt.v_free_count < cnt.v_free_min)
- bucketdisable = 1;
- else
- bucketdisable = 0;
+ bucketdisable = vm_page_count_min();
#endif /* __rtems__ */
}
@@ -642,9 +640,7 @@ cache_drain(uma_zone_t zone)
* it is used elsewhere. Should the tear-down path be made special
* there in some form?
*/
- for (cpu = 0; cpu <= mp_maxid; cpu++) {
- if (CPU_ABSENT(cpu))
- continue;
+ CPU_FOREACH(cpu) {
cache = &zone->uz_cpu[cpu];
bucket_drain(zone, cache->uc_allocbucket);
bucket_drain(zone, cache->uc_freebucket);
@@ -1022,16 +1018,16 @@ startup_alloc(uma_zone_t zone, int bytes, u_int8_t *pflag, int wait)
static void *
page_alloc(uma_zone_t zone, int bytes, u_int8_t *pflag, int wait)
{
- void *p; /* Returned page */
+ void *p; /* Returned page */
- *pflag = UMA_SLAB_KMEM;
+ *pflag = UMA_SLAB_KMEM;
#ifndef __rtems__
- p = (void *) kmem_malloc(kmem_map, bytes, wait);
+ p = (void *) kmem_malloc(kmem_map, bytes, wait);
#else /* __rtems__ */
- p = rtems_bsd_chunk_alloc(&rtems_bsd_uma_chunks, bytes);
+ p = rtems_bsd_chunk_alloc(&rtems_bsd_uma_chunks, bytes);
#endif /* __rtems__ */
- return (p);
+ return (p);
}
#ifndef __rtems__
@@ -1429,7 +1425,7 @@ keg_ctor(void *mem, int size, void *udata, int flags)
hash_alloc(&keg->uk_hash);
#ifdef UMA_DEBUG
- printf("UMA: %s(%p) size %d(%d) flags %d ipers %d ppera %d out %d free %d\n",
+ printf("UMA: %s(%p) size %d(%d) flags %#x ipers %d ppera %d out %d free %d\n",
zone->uz_name, zone, keg->uk_size, keg->uk_rsize, keg->uk_flags,
keg->uk_ipers, keg->uk_ppera,
(keg->uk_ipers * keg->uk_pages) - keg->uk_free, keg->uk_free);
@@ -1902,7 +1898,7 @@ uma_set_align(int align)
/* See uma.h */
uma_zone_t
-uma_zcreate(char *name, size_t size, uma_ctor ctor, uma_dtor dtor,
+uma_zcreate(const char *name, size_t size, uma_ctor ctor, uma_dtor dtor,
uma_init uminit, uma_fini fini, int align, u_int32_t flags)
{
@@ -3211,7 +3207,7 @@ uma_print_keg(uma_keg_t keg)
{
uma_slab_t slab;
- printf("keg: %s(%p) size %d(%d) flags %d ipers %d ppera %d "
+ printf("keg: %s(%p) size %d(%d) flags %#x ipers %d ppera %d "
"out %d free %d limit %d\n",
keg->uk_name, keg, keg->uk_size, keg->uk_rsize, keg->uk_flags,
keg->uk_ipers, keg->uk_ppera,
@@ -3235,13 +3231,11 @@ uma_print_zone(uma_zone_t zone)
uma_klink_t kl;
int i;
- printf("zone: %s(%p) size %d flags %d\n",
+ printf("zone: %s(%p) size %d flags %#x\n",
zone->uz_name, zone, zone->uz_size, zone->uz_flags);
LIST_FOREACH(kl, &zone->uz_kegs, kl_link)
uma_print_keg(kl->kl_keg);
- for (i = 0; i <= mp_maxid; i++) {
- if (CPU_ABSENT(i))
- continue;
+ CPU_FOREACH(i) {
cache = &zone->uz_cpu[i];
printf("CPU %d Cache:\n", i);
cache_print(cache);
@@ -3271,9 +3265,7 @@ uma_zone_sumstat(uma_zone_t z, int *cachefreep, u_int64_t *allocsp,
allocs = frees = 0;
cachefree = 0;
- for (cpu = 0; cpu <= mp_maxid; cpu++) {
- if (CPU_ABSENT(cpu))
- continue;
+ CPU_FOREACH(cpu) {
cache = &z->uz_cpu[cpu];
if (cache->uc_allocbucket != NULL)
cachefree += cache->uc_allocbucket->ub_cnt;
@@ -3474,6 +3466,8 @@ DB_SHOW_COMMAND(uma, db_show_uma)
(uintmax_t)kz->uk_size,
(intmax_t)(allocs - frees), cachefree,
(uintmax_t)allocs);
+ if (db_pager_quit)
+ return;
}
}
}