Changes in kernel/generic/include/mm/frame.h [8d308b9:96b02eb9] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/generic/include/mm/frame.h
r8d308b9 r96b02eb9 62 62 63 63 /** Convert the frame address to kernel VA. */ 64 #define FRAME_KA 0x 164 #define FRAME_KA 0x01 65 65 /** Do not panic and do not sleep on failure. */ 66 #define FRAME_ATOMIC 0x 266 #define FRAME_ATOMIC 0x02 67 67 /** Do not start reclaiming when no free memory. */ 68 #define FRAME_NO_RECLAIM 0x4 69 /** Do not reserve / unreserve memory. */ 70 #define FRAME_NO_RESERVE 0x8 68 #define FRAME_NO_RECLAIM 0x04 71 69 72 70 typedef uint8_t zone_flags_t; 73 71 74 72 /** Available zone (free for allocation) */ 75 #define ZONE_AVAILABLE 0x0 73 #define ZONE_AVAILABLE 0x00 76 74 /** Zone is reserved (not available for allocation) */ 77 #define ZONE_RESERVED 0x 875 #define ZONE_RESERVED 0x08 78 76 /** Zone is used by firmware (not available for allocation) */ 79 77 #define ZONE_FIRMWARE 0x10 … … 87 85 uint8_t buddy_order; /**< Buddy system block order */ 88 86 link_t buddy_link; /**< Link to the next free block inside 89 87 one order */ 90 88 void *parent; /**< If allocated by slab, this points there */ 91 89 } frame_t; … … 93 91 typedef struct { 94 92 pfn_t base; /**< Frame_no of the first frame 95 93 in the frames array */ 96 94 size_t count; /**< Size of zone */ 97 95 size_t free_count; /**< Number of free frame_t 98 96 structures */ 99 97 size_t busy_count; /**< Number of busy frame_t 100 98 structures */ 101 99 zone_flags_t flags; /**< Type of the zone */ 102 100 103 101 frame_t *frames; /**< Array of frame_t structures 104 102 in this zone */ 105 103 buddy_system_t *buddy_system; /**< Buddy system for the zone */ 106 104 } zone_t; … … 148 146 ((~(((sysarg_t) -1) << (order)) & (index)) == 0) 149 147 #define IS_BUDDY_LEFT_BLOCK(zone, frame) \ 150 (((frame_index((zone), (frame)) >> (frame)->buddy_order) & 0x 1) == 0)148 (((frame_index((zone), (frame)) >> (frame)->buddy_order) & 0x01) == 0) 151 149 #define IS_BUDDY_RIGHT_BLOCK(zone, frame) \ 152 (((frame_index((zone), (frame)) >> (frame)->buddy_order) & 0x 1) == 1)150 (((frame_index((zone), (frame)) >> (frame)->buddy_order) & 0x01) == 1) 153 151 #define IS_BUDDY_LEFT_BLOCK_ABS(zone, frame) \ 154 (((frame_index_abs((zone), (frame)) >> (frame)->buddy_order) & 0x 1) == 0)152 (((frame_index_abs((zone), (frame)) >> (frame)->buddy_order) & 0x01) == 0) 155 153 #define IS_BUDDY_RIGHT_BLOCK_ABS(zone, frame) \ 156 (((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) 157 158 158 159 extern void frame_init(void); 159 160 extern void *frame_alloc_generic(uint8_t, frame_flags_t, size_t *); 160 extern void *frame_alloc(uint8_t, frame_flags_t);161 extern void *frame_alloc_noreserve(uint8_t, frame_flags_t);162 extern void frame_free_generic(uintptr_t, frame_flags_t);163 161 extern void frame_free(uintptr_t); 164 extern void frame_free_noreserve(uintptr_t);165 162 extern void frame_reference_add(pfn_t); 166 extern size_t frame_total_free_get(void);167 163 168 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); 169 165 extern size_t zone_create(pfn_t, size_t, pfn_t, zone_flags_t); 170 166 extern void *frame_get_parent(pfn_t, size_t);
Note:
See TracChangeset
for help on using the changeset viewer.