MCPcopy Create free account
hub / github.com/F-Stack/f-stack / memstat_malloc_zone_init_kvm

Function memstat_malloc_zone_init_kvm

tools/libmemstat/memstat_malloc.c:489–529  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

487};
488
489static int
490memstat_malloc_zone_init_kvm(kvm_t *kvm)
491{
492 struct memstat_kmemzone *kmemzones, *kz;
493 int numzones, objsize, allocsize, ret;
494 int i;
495
496 ret = kread_symbol(kvm, X_VM_MALLOC_ZONE_COUNT,
497 &memstat_malloc_zone_count, sizeof(memstat_malloc_zone_count), 0);
498 if (ret != 0) {
499 return (ret);
500 }
501
502 ret = kread_symbol(kvm, X_NUMZONES, &numzones, sizeof(numzones), 0);
503 if (ret != 0) {
504 return (ret);
505 }
506
507 objsize = __offsetof(struct memstat_kmemzone, kz_zone) +
508 sizeof(void *) * numzones;
509
510 allocsize = objsize * memstat_malloc_zone_count;
511 kmemzones = malloc(allocsize);
512 if (kmemzones == NULL) {
513 return (MEMSTAT_ERROR_NOMEMORY);
514 }
515 ret = kread_symbol(kvm, X_KMEMZONES, kmemzones, allocsize, 0);
516 if (ret != 0) {
517 free(kmemzones);
518 return (ret);
519 }
520
521 kz = kmemzones;
522 for (i = 0; i < (int)nitems(memstat_malloc_zone_sizes); i++) {
523 memstat_malloc_zone_sizes[i] = kz->kz_size;
524 kz = (struct memstat_kmemzone *)((char *)kz + objsize);
525 }
526
527 free(kmemzones);
528 return (0);
529}
530
531size_t
532memstat_malloc_zone_get_count(void)

Callers 1

memstat_kvm_mallocFunction · 0.85

Calls 3

mallocFunction · 0.85
kread_symbolFunction · 0.70
freeFunction · 0.50

Tested by

no test coverage detected