Changes in kernel/generic/include/mm/frame.h [26aafe8:96b02eb9] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/generic/include/mm/frame.h
r26aafe8 r96b02eb9 45 45 #include <arch/mm/frame.h> 46 46 47 #define ONE_FRAME 0 48 #define TWO_FRAMES 1 49 #define FOUR_FRAMES 2 50 51 52 #ifdef ARCH_STACK_FRAMES 53 #define STACK_FRAMES ARCH_STACK_FRAMES 54 #else 55 #define STACK_FRAMES ONE_FRAME 56 #endif 57 47 58 /** Maximum number of zones in the system. */ 48 59 #define ZONES_MAX 32 … … 51 62 52 63 /** Convert the frame address to kernel VA. */ 53 #define FRAME_KA 0x 164 #define FRAME_KA 0x01 54 65 /** Do not panic and do not sleep on failure. */ 55 #define FRAME_ATOMIC 0x 266 #define FRAME_ATOMIC 0x02 56 67 /** Do not start reclaiming when no free memory. */ 57 #define FRAME_NO_RECLAIM 0x4 58 /** Do not reserve / unreserve memory. */ 59 #define FRAME_NO_RESERVE 0x8 68 #define FRAME_NO_RECLAIM 0x04 60 69 61 70 typedef uint8_t zone_flags_t; 62 71 63 72 /** Available zone (free for allocation) */ 64 #define ZONE_AVAILABLE 0x0 73 #define ZONE_AVAILABLE 0x00 65 74 /** Zone is reserved (not available for allocation) */ 66 #define ZONE_RESERVED 0x 875 #define ZONE_RESERVED 0x08 67 76 /** Zone is used by firmware (not available for allocation) */ 68 77 #define ZONE_FIRMWARE 0x10 … … 76 85 uint8_t buddy_order; /**< Buddy system block order */ 77 86 link_t buddy_link; /**< Link to the next free block inside 78 87 one order */ 79 88 void *parent; /**< If allocated by slab, this points there */ 80 89 } frame_t; … … 82 91 typedef struct { 83 92 pfn_t base; /**< Frame_no of the first frame 84 93 in the frames array */ 85 94 size_t count; /**< Size of zone */ 86 95 size_t free_count; /**< Number of free frame_t 87 96 structures */ 88 97 size_t busy_count; /**< Number of busy frame_t 89 98 structures */ 90 99 zone_flags_t flags; /**< Type of the zone */ 91 100 92 101 frame_t *frames; /**< Array of frame_t structures 93 102 in this zone */ 94 103 buddy_system_t *buddy_system; /**< Buddy system for the zone */ 95 104 } zone_t; … … 137 146 ((~(((sysarg_t) -1) << (order)) & (index)) == 0) 138 147 #define IS_BUDDY_LEFT_BLOCK(zone, frame) \ 139 (((frame_index((zone), (frame)) >> (frame)->buddy_order) & 0x 1) == 0)148 (((frame_index((zone), (frame)) >> (frame)->buddy_order) & 0x01) == 0) 140 149 #define IS_BUDDY_RIGHT_BLOCK(zone, frame) \ 141 (((frame_index((zone), (frame)) >> (frame)->buddy_order) & 0x 1) == 1)150 (((frame_index((zone), (frame)) >> (frame)->buddy_order) & 0x01) == 1) 142 151 #define IS_BUDDY_LEFT_BLOCK_ABS(zone, frame) \ 143 (((frame_index_abs((zone), (frame)) >> (frame)->buddy_order) & 0x 1) == 0)152 (((frame_index_abs((zone), (frame)) >> (frame)->buddy_order) & 0x01) == 0) 144 153 #define IS_BUDDY_RIGHT_BLOCK_ABS(zone, frame) \ 145 (((frame_index_abs((zone), (frame)) >> (frame)->buddy_order) & 0x1) == 1) 154 (((frame_index_abs((zone), (frame)) >> (frame)->buddy_order) & 0x01) == 1) 155 156 #define frame_alloc(order, flags) \ 157 frame_alloc_generic(order, flags, NULL) 146 158 147 159 extern void frame_init(void); 148 160 extern void *frame_alloc_generic(uint8_t, frame_flags_t, size_t *); 149 extern void *frame_alloc(uint8_t, frame_flags_t);150 extern void *frame_alloc_noreserve(uint8_t, frame_flags_t);151 extern void frame_free_generic(uintptr_t, frame_flags_t);152 161 extern void frame_free(uintptr_t); 153 extern void frame_free_noreserve(uintptr_t);154 162 extern void frame_reference_add(pfn_t); 155 extern size_t frame_total_free_get(void);156 163 157 extern size_t find_zone(pfn_t , size_t, size_t);164 extern size_t find_zone(pfn_t frame, size_t count, size_t hint); 158 165 extern size_t zone_create(pfn_t, size_t, pfn_t, zone_flags_t); 159 166 extern void *frame_get_parent(pfn_t, size_t);
Note:
See TracChangeset
for help on using the changeset viewer.