uma_core.c (253565) | uma_core.c (254025) |
---|---|
1/*- 2 * Copyright (c) 2002-2005, 2009, 2013 Jeffrey Roberson <jeff@FreeBSD.org> 3 * Copyright (c) 2004, 2005 Bosko Milekic <bmilekic@FreeBSD.org> 4 * Copyright (c) 2004-2006 Robert N. M. Watson 5 * All rights reserved. 6 * 7 * Redistribution and use in source and binary forms, with or without 8 * modification, are permitted provided that the following conditions --- 34 unchanged lines hidden (view full) --- 43 44/* 45 * TODO: 46 * - Improve memory usage for large allocations 47 * - Investigate cache size adjustments 48 */ 49 50#include <sys/cdefs.h> | 1/*- 2 * Copyright (c) 2002-2005, 2009, 2013 Jeffrey Roberson <jeff@FreeBSD.org> 3 * Copyright (c) 2004, 2005 Bosko Milekic <bmilekic@FreeBSD.org> 4 * Copyright (c) 2004-2006 Robert N. M. Watson 5 * All rights reserved. 6 * 7 * Redistribution and use in source and binary forms, with or without 8 * modification, are permitted provided that the following conditions --- 34 unchanged lines hidden (view full) --- 43 44/* 45 * TODO: 46 * - Improve memory usage for large allocations 47 * - Investigate cache size adjustments 48 */ 49 50#include <sys/cdefs.h> |
51__FBSDID("$FreeBSD: head/sys/vm/uma_core.c 253565 2013-07-23 11:16:40Z glebius $"); | 51__FBSDID("$FreeBSD: head/sys/vm/uma_core.c 254025 2013-08-07 06:21:20Z jeff $"); |
52 53/* I should really use ktr.. */ 54/* 55#define UMA_DEBUG 1 56#define UMA_DEBUG_ALLOC 1 57#define UMA_DEBUG_ALLOC_1 1 58*/ 59 --- 950 unchanged lines hidden (view full) --- 1010 * NULL if M_NOWAIT is set. 1011 */ 1012static void * 1013page_alloc(uma_zone_t zone, int bytes, uint8_t *pflag, int wait) 1014{ 1015 void *p; /* Returned page */ 1016 1017 *pflag = UMA_SLAB_KMEM; | 52 53/* I should really use ktr.. */ 54/* 55#define UMA_DEBUG 1 56#define UMA_DEBUG_ALLOC 1 57#define UMA_DEBUG_ALLOC_1 1 58*/ 59 --- 950 unchanged lines hidden (view full) --- 1010 * NULL if M_NOWAIT is set. 1011 */ 1012static void * 1013page_alloc(uma_zone_t zone, int bytes, uint8_t *pflag, int wait) 1014{ 1015 void *p; /* Returned page */ 1016 1017 *pflag = UMA_SLAB_KMEM; |
1018 p = (void *) kmem_malloc(kmem_map, bytes, wait); | 1018 p = (void *) kmem_malloc(kmem_arena, bytes, wait); |
1019 1020 return (p); 1021} 1022 1023/* 1024 * Allocates a number of pages from within an object 1025 * 1026 * Arguments: --- 65 unchanged lines hidden (view full) --- 1092 * flags The original p->us_flags field 1093 * 1094 * Returns: 1095 * Nothing 1096 */ 1097static void 1098page_free(void *mem, int size, uint8_t flags) 1099{ | 1019 1020 return (p); 1021} 1022 1023/* 1024 * Allocates a number of pages from within an object 1025 * 1026 * Arguments: --- 65 unchanged lines hidden (view full) --- 1092 * flags The original p->us_flags field 1093 * 1094 * Returns: 1095 * Nothing 1096 */ 1097static void 1098page_free(void *mem, int size, uint8_t flags) 1099{ |
1100 vm_map_t map; | 1100 struct vmem *vmem; |
1101 1102 if (flags & UMA_SLAB_KMEM) | 1101 1102 if (flags & UMA_SLAB_KMEM) |
1103 map = kmem_map; | 1103 vmem = kmem_arena; |
1104 else if (flags & UMA_SLAB_KERNEL) | 1104 else if (flags & UMA_SLAB_KERNEL) |
1105 map = kernel_map; | 1105 vmem = kernel_arena; |
1106 else 1107 panic("UMA: page_free used with invalid flags %d", flags); 1108 | 1106 else 1107 panic("UMA: page_free used with invalid flags %d", flags); 1108 |
1109 kmem_free(map, (vm_offset_t)mem, size); | 1109 kmem_free(vmem, (vm_offset_t)mem, size); |
1110} 1111 1112/* 1113 * Zero fill initializer 1114 * 1115 * Arguments/Returns follow uma_init specifications 1116 */ 1117static int --- 1860 unchanged lines hidden (view full) --- 2978 if (pages * keg->uk_ipers < count) 2979 pages++; 2980 2981#ifdef UMA_MD_SMALL_ALLOC 2982 if (keg->uk_ppera > 1) { 2983#else 2984 if (1) { 2985#endif | 1110} 1111 1112/* 1113 * Zero fill initializer 1114 * 1115 * Arguments/Returns follow uma_init specifications 1116 */ 1117static int --- 1860 unchanged lines hidden (view full) --- 2978 if (pages * keg->uk_ipers < count) 2979 pages++; 2980 2981#ifdef UMA_MD_SMALL_ALLOC 2982 if (keg->uk_ppera > 1) { 2983#else 2984 if (1) { 2985#endif |
2986 kva = kmem_alloc_nofault(kernel_map, pages * UMA_SLAB_SIZE); | 2986 kva = kva_alloc(pages * UMA_SLAB_SIZE); |
2987 if (kva == 0) 2988 return (0); 2989 } else 2990 kva = 0; 2991 KEG_LOCK(keg); 2992 keg->uk_kva = kva; 2993 keg->uk_offset = 0; 2994 keg->uk_maxpages = pages; --- 389 unchanged lines hidden --- | 2987 if (kva == 0) 2988 return (0); 2989 } else 2990 kva = 0; 2991 KEG_LOCK(keg); 2992 keg->uk_kva = kva; 2993 keg->uk_offset = 0; 2994 keg->uk_maxpages = pages; --- 389 unchanged lines hidden --- |