Changeset 544a2e4 in mainline for kernel/generic/include/mm/frame.h
- Timestamp:
- 2011-05-30T21:37:43Z (14 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 7b712b60
- Parents:
- 18ba2e4f (diff), 0743493a (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the(diff)
links above to see all the changes relative to each parent. - File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/generic/include/mm/frame.h
r18ba2e4f r544a2e4 45 45 #include <arch/mm/frame.h> 46 46 47 #define ONE_FRAME 048 #define TWO_FRAMES 149 #define FOUR_FRAMES 250 51 52 #ifdef ARCH_STACK_FRAMES53 #define STACK_FRAMES ARCH_STACK_FRAMES54 #else55 #define STACK_FRAMES ONE_FRAME56 #endif57 58 47 /** Maximum number of zones in the system. */ 59 48 #define ZONES_MAX 32 … … 62 51 63 52 /** Convert the frame address to kernel VA. */ 64 #define FRAME_KA 0x 0153 #define FRAME_KA 0x1 65 54 /** Do not panic and do not sleep on failure. */ 66 #define FRAME_ATOMIC 0x 0255 #define FRAME_ATOMIC 0x2 67 56 /** Do not start reclaiming when no free memory. */ 68 #define FRAME_NO_RECLAIM 0x04 57 #define FRAME_NO_RECLAIM 0x4 58 /** Do not reserve / unreserve memory. */ 59 #define FRAME_NO_RESERVE 0x8 69 60 70 61 typedef uint8_t zone_flags_t; 71 62 72 63 /** Available zone (free for allocation) */ 73 #define ZONE_AVAILABLE 0x0 064 #define ZONE_AVAILABLE 0x0 74 65 /** Zone is reserved (not available for allocation) */ 75 #define ZONE_RESERVED 0x 0866 #define ZONE_RESERVED 0x8 76 67 /** Zone is used by firmware (not available for allocation) */ 77 68 #define ZONE_FIRMWARE 0x10 … … 85 76 uint8_t buddy_order; /**< Buddy system block order */ 86 77 link_t buddy_link; /**< Link to the next free block inside 87 one order */78 one order */ 88 79 void *parent; /**< If allocated by slab, this points there */ 89 80 } frame_t; … … 91 82 typedef struct { 92 83 pfn_t base; /**< Frame_no of the first frame 93 in the frames array */84 in the frames array */ 94 85 size_t count; /**< Size of zone */ 95 86 size_t free_count; /**< Number of free frame_t 96 structures */87 structures */ 97 88 size_t busy_count; /**< Number of busy frame_t 98 structures */89 structures */ 99 90 zone_flags_t flags; /**< Type of the zone */ 100 91 101 92 frame_t *frames; /**< Array of frame_t structures 102 in this zone */93 in this zone */ 103 94 buddy_system_t *buddy_system; /**< Buddy system for the zone */ 104 95 } zone_t; … … 146 137 ((~(((sysarg_t) -1) << (order)) & (index)) == 0) 147 138 #define IS_BUDDY_LEFT_BLOCK(zone, frame) \ 148 (((frame_index((zone), (frame)) >> (frame)->buddy_order) & 0x 01) == 0)139 (((frame_index((zone), (frame)) >> (frame)->buddy_order) & 0x1) == 0) 149 140 #define IS_BUDDY_RIGHT_BLOCK(zone, frame) \ 150 (((frame_index((zone), (frame)) >> (frame)->buddy_order) & 0x 01) == 1)141 (((frame_index((zone), (frame)) >> (frame)->buddy_order) & 0x1) == 1) 151 142 #define IS_BUDDY_LEFT_BLOCK_ABS(zone, frame) \ 152 (((frame_index_abs((zone), (frame)) >> (frame)->buddy_order) & 0x 01) == 0)143 (((frame_index_abs((zone), (frame)) >> (frame)->buddy_order) & 0x1) == 0) 153 144 #define IS_BUDDY_RIGHT_BLOCK_ABS(zone, frame) \ 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) 145 (((frame_index_abs((zone), (frame)) >> (frame)->buddy_order) & 0x1) == 1) 158 146 159 147 extern void frame_init(void); 160 148 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); 161 152 extern void frame_free(uintptr_t); 153 extern void frame_free_noreserve(uintptr_t); 162 154 extern void frame_reference_add(pfn_t); 155 extern size_t frame_total_free_get(void); 163 156 164 extern size_t find_zone(pfn_t frame, size_t count, size_t hint);157 extern size_t find_zone(pfn_t, size_t, size_t); 165 158 extern size_t zone_create(pfn_t, size_t, pfn_t, zone_flags_t); 166 159 extern void *frame_get_parent(pfn_t, size_t);
Note:
See TracChangeset
for help on using the changeset viewer.