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

Function free

freebsd/kern/kern_malloc.c:866–897  ·  view source on GitHub ↗

* free: * * Free a block of memory allocated by malloc. * * This routine may not block. */

Source from the content-addressed store, hash-verified

864 * This routine may not block.
865 */
866void
867free(void *addr, struct malloc_type *mtp)
868{
869 uma_zone_t zone;
870 uma_slab_t slab;
871 u_long size;
872
873#ifdef MALLOC_DEBUG
874 if (free_dbg(&addr, mtp) != 0)
875 return;
876#endif
877 /* free(NULL, ...) does nothing */
878 if (addr == NULL)
879 return;
880
881 vtozoneslab((vm_offset_t)addr & (~UMA_SLAB_MASK), &zone, &slab);
882 if (slab == NULL)
883 panic("free: address %p(%p) has not been allocated.\n",
884 addr, (void *)((u_long)addr & (~UMA_SLAB_MASK)));
885
886 if (__predict_true(!malloc_large_slab(slab))) {
887 size = zone->uz_size;
888#ifdef INVARIANTS
889 free_save_type(addr, mtp, size);
890#endif
891 uma_zfree_arg(zone, addr, slab);
892 } else {
893 size = malloc_large_size(slab);
894 free_large(addr, size);
895 }
896 malloc_type_freed(mtp, size);
897}
898
899/*
900 * zfree:

Callers 15

shmexit_myhookFunction · 0.70
shmreallocFunction · 0.70
shmunloadFunction · 0.70
ptsdrv_freeFunction · 0.70
sysctl_debug_ktr_entriesFunction · 0.70
epoch_trace_reportFunction · 0.70
acctwatchFunction · 0.70
firmware_registerFunction · 0.70
firmware_unregisterFunction · 0.70

Calls 9

free_dbgFunction · 0.85
malloc_large_slabFunction · 0.85
free_save_typeFunction · 0.85
uma_zfree_argFunction · 0.85
malloc_large_sizeFunction · 0.85
free_largeFunction · 0.85
malloc_type_freedFunction · 0.85
panicFunction · 0.70
vtozoneslabFunction · 0.50

Tested by 15

process_optionsFunction · 0.40
ztest_split_poolFunction · 0.40
ztest_initializeFunction · 0.40
ztest_trimFunction · 0.40
ztest_initFunction · 0.40
mainFunction · 0.40
do_writeFunction · 0.40
read_mapFunction · 0.40
write_mapFunction · 0.40
alloc_new_mapFunction · 0.40
alloc_fixed_mapFunction · 0.40
free_mapFunction · 0.40