Rev 1757 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
| Rev 1757 | Rev 1780 | ||
|---|---|---|---|
| Line 64... | Line 64... | ||
| 64 | * @param data Pointer to be used by implementation. |
64 | * @param data Pointer to be used by implementation. |
| 65 | * |
65 | * |
| 66 | * @return New buddy system. |
66 | * @return New buddy system. |
| 67 | */ |
67 | */ |
| 68 | void buddy_system_create(buddy_system_t *b, |
68 | void buddy_system_create(buddy_system_t *b, |
| 69 | __u8 max_order, |
69 | uint8_t max_order, |
| 70 | buddy_system_operations_t *op, |
70 | buddy_system_operations_t *op, |
| 71 | void *data) |
71 | void *data) |
| 72 | { |
72 | { |
| 73 | int i; |
73 | int i; |
| 74 | 74 | ||
| Line 99... | Line 99... | ||
| 99 | * @param b Buddy system pointer |
99 | * @param b Buddy system pointer |
| 100 | * @param i Size of the block (2^i) |
100 | * @param i Size of the block (2^i) |
| 101 | * |
101 | * |
| 102 | * @return True if block can be allocated |
102 | * @return True if block can be allocated |
| 103 | */ |
103 | */ |
| 104 | bool buddy_system_can_alloc(buddy_system_t *b, __u8 i) { |
104 | bool buddy_system_can_alloc(buddy_system_t *b, uint8_t i) { |
| 105 | __u8 k; |
105 | uint8_t k; |
| 106 | 106 | ||
| 107 | /* |
107 | /* |
| 108 | * If requested block is greater then maximal block |
108 | * If requested block is greater then maximal block |
| 109 | * we know immediatly that we cannot satisfy the request. |
109 | * we know immediatly that we cannot satisfy the request. |
| 110 | */ |
110 | */ |
| Line 128... | Line 128... | ||
| 128 | * @ return Block of data or NULL if no such block was found |
128 | * @ return Block of data or NULL if no such block was found |
| 129 | */ |
129 | */ |
| 130 | link_t *buddy_system_alloc_block(buddy_system_t *b, link_t *block) |
130 | link_t *buddy_system_alloc_block(buddy_system_t *b, link_t *block) |
| 131 | { |
131 | { |
| 132 | link_t *left,*right, *tmp; |
132 | link_t *left,*right, *tmp; |
| 133 | __u8 order; |
133 | uint8_t order; |
| 134 | 134 | ||
| 135 | left = b->op->find_block(b, block, BUDDY_SYSTEM_INNER_BLOCK); |
135 | left = b->op->find_block(b, block, BUDDY_SYSTEM_INNER_BLOCK); |
| 136 | ASSERT(left); |
136 | ASSERT(left); |
| 137 | list_remove(left); |
137 | list_remove(left); |
| 138 | while (1) { |
138 | while (1) { |
| Line 165... | Line 165... | ||
| 165 | * @param b Buddy system pointer. |
165 | * @param b Buddy system pointer. |
| 166 | * @param i Returned block will be 2^i big. |
166 | * @param i Returned block will be 2^i big. |
| 167 | * |
167 | * |
| 168 | * @return Block of data represented by link_t. |
168 | * @return Block of data represented by link_t. |
| 169 | */ |
169 | */ |
| 170 | link_t *buddy_system_alloc(buddy_system_t *b, __u8 i) |
170 | link_t *buddy_system_alloc(buddy_system_t *b, uint8_t i) |
| 171 | { |
171 | { |
| 172 | link_t *res, *hlp; |
172 | link_t *res, *hlp; |
| 173 | 173 | ||
| 174 | ASSERT(i <= b->max_order); |
174 | ASSERT(i <= b->max_order); |
| 175 | 175 | ||
| Line 228... | Line 228... | ||
| 228 | * @param block Block to return. |
228 | * @param block Block to return. |
| 229 | */ |
229 | */ |
| 230 | void buddy_system_free(buddy_system_t *b, link_t *block) |
230 | void buddy_system_free(buddy_system_t *b, link_t *block) |
| 231 | { |
231 | { |
| 232 | link_t *buddy, *hlp; |
232 | link_t *buddy, *hlp; |
| 233 | __u8 i; |
233 | uint8_t i; |
| 234 | 234 | ||
| 235 | /* |
235 | /* |
| 236 | * Determine block's order. |
236 | * Determine block's order. |
| 237 | */ |
237 | */ |
| 238 | i = b->op->get_order(b, block); |
238 | i = b->op->get_order(b, block); |