Changeset 5d853bd in mainline
- Timestamp:
- 2011-01-14T19:33:01Z (14 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 1433f93e
- Parents:
- 08abd81
- Location:
- kernel/generic
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/generic/include/mm/frame.h
r08abd81 r5d853bd 62 62 63 63 /** Convert the frame address to kernel VA. */ 64 #define FRAME_KA 0x 0164 #define FRAME_KA 0x1 65 65 /** Do not panic and do not sleep on failure. */ 66 #define FRAME_ATOMIC 0x 0266 #define FRAME_ATOMIC 0x2 67 67 /** Do not start reclaiming when no free memory. */ 68 #define FRAME_NO_RECLAIM 0x 0468 #define FRAME_NO_RECLAIM 0x4 69 69 70 70 typedef uint8_t zone_flags_t; 71 71 72 72 /** Available zone (free for allocation) */ 73 #define ZONE_AVAILABLE 0x0 073 #define ZONE_AVAILABLE 0x0 74 74 /** Zone is reserved (not available for allocation) */ 75 #define ZONE_RESERVED 0x 0875 #define ZONE_RESERVED 0x8 76 76 /** Zone is used by firmware (not available for allocation) */ 77 77 #define ZONE_FIRMWARE 0x10 … … 85 85 uint8_t buddy_order; /**< Buddy system block order */ 86 86 link_t buddy_link; /**< Link to the next free block inside 87 one order */87 one order */ 88 88 void *parent; /**< If allocated by slab, this points there */ 89 89 } frame_t; … … 91 91 typedef struct { 92 92 pfn_t base; /**< Frame_no of the first frame 93 in the frames array */93 in the frames array */ 94 94 size_t count; /**< Size of zone */ 95 95 size_t free_count; /**< Number of free frame_t 96 structures */96 structures */ 97 97 size_t busy_count; /**< Number of busy frame_t 98 structures */98 structures */ 99 99 zone_flags_t flags; /**< Type of the zone */ 100 100 101 101 frame_t *frames; /**< Array of frame_t structures 102 in this zone */102 in this zone */ 103 103 buddy_system_t *buddy_system; /**< Buddy system for the zone */ 104 104 } zone_t; … … 146 146 ((~(((sysarg_t) -1) << (order)) & (index)) == 0) 147 147 #define IS_BUDDY_LEFT_BLOCK(zone, frame) \ 148 (((frame_index((zone), (frame)) >> (frame)->buddy_order) & 0x 01) == 0)148 (((frame_index((zone), (frame)) >> (frame)->buddy_order) & 0x1) == 0) 149 149 #define IS_BUDDY_RIGHT_BLOCK(zone, frame) \ 150 (((frame_index((zone), (frame)) >> (frame)->buddy_order) & 0x 01) == 1)150 (((frame_index((zone), (frame)) >> (frame)->buddy_order) & 0x1) == 1) 151 151 #define IS_BUDDY_LEFT_BLOCK_ABS(zone, frame) \ 152 (((frame_index_abs((zone), (frame)) >> (frame)->buddy_order) & 0x 01) == 0)152 (((frame_index_abs((zone), (frame)) >> (frame)->buddy_order) & 0x1) == 0) 153 153 #define IS_BUDDY_RIGHT_BLOCK_ABS(zone, frame) \ 154 (((frame_index_abs((zone), (frame)) >> (frame)->buddy_order) & 0x 01) == 1)154 (((frame_index_abs((zone), (frame)) >> (frame)->buddy_order) & 0x1) == 1) 155 155 156 156 #define frame_alloc(order, flags) \ 157 frame_alloc_generic( order, flags, NULL)157 frame_alloc_generic((order), (flags), NULL) 158 158 159 159 extern void frame_init(void); … … 162 162 extern void frame_reference_add(pfn_t); 163 163 164 extern size_t find_zone(pfn_t frame, size_t count, size_t hint);164 extern size_t find_zone(pfn_t, size_t, size_t); 165 165 extern size_t zone_create(pfn_t, size_t, pfn_t, zone_flags_t); 166 166 extern void *frame_get_parent(pfn_t, size_t); -
kernel/generic/src/mm/frame.c
r08abd81 r5d853bd 695 695 * not to be 2^order size. Once the allocator is running it is no longer 696 696 * possible, merged configuration data occupies more space :-/ 697 *698 * The function uses699 697 * 700 698 */
Note:
See TracChangeset
for help on using the changeset viewer.