Rev 3022 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
| Rev 3022 | Rev 4055 | ||
|---|---|---|---|
| Line 64... | Line 64... | ||
| 64 | void (*mark_busy)(struct buddy_system *, link_t *); |
64 | void (*mark_busy)(struct buddy_system *, link_t *); |
| 65 | /** Mark block as available. */ |
65 | /** Mark block as available. */ |
| 66 | void (*mark_available)(struct buddy_system *, link_t *); |
66 | void (*mark_available)(struct buddy_system *, link_t *); |
| 67 | /** Find parent of block that has given order */ |
67 | /** Find parent of block that has given order */ |
| 68 | link_t *(* find_block)(struct buddy_system *, link_t *, uint8_t); |
68 | link_t *(* find_block)(struct buddy_system *, link_t *, uint8_t); |
| 69 | void (* print_id)(struct buddy_system *, link_t *); |
- | |
| 70 | } buddy_system_operations_t; |
69 | } buddy_system_operations_t; |
| 71 | 70 | ||
| 72 | typedef struct buddy_system { |
71 | typedef struct buddy_system { |
| 73 | /** Maximal order of block which can be stored by buddy system. */ |
72 | /** Maximal order of block which can be stored by buddy system. */ |
| 74 | uint8_t max_order; |
73 | uint8_t max_order; |
| Line 76... | Line 75... | ||
| 76 | buddy_system_operations_t *op; |
75 | buddy_system_operations_t *op; |
| 77 | /** Pointer to be used by the implementation. */ |
76 | /** Pointer to be used by the implementation. */ |
| 78 | void *data; |
77 | void *data; |
| 79 | } buddy_system_t; |
78 | } buddy_system_t; |
| 80 | 79 | ||
| 81 | extern void buddy_system_create(buddy_system_t *b, uint8_t max_order, |
80 | extern void buddy_system_create(buddy_system_t *, uint8_t, |
| 82 | buddy_system_operations_t *op, void *data); |
81 | buddy_system_operations_t *, void *); |
| 83 | extern link_t *buddy_system_alloc(buddy_system_t *b, uint8_t i); |
82 | extern link_t *buddy_system_alloc(buddy_system_t *, uint8_t); |
| 84 | extern bool buddy_system_can_alloc(buddy_system_t *b, uint8_t order); |
83 | extern bool buddy_system_can_alloc(buddy_system_t *, uint8_t); |
| 85 | extern void buddy_system_free(buddy_system_t *b, link_t *block); |
84 | extern void buddy_system_free(buddy_system_t *, link_t *); |
| 86 | extern void buddy_system_structure_print(buddy_system_t *b, size_t elem_size); |
- | |
| 87 | extern size_t buddy_conf_size(int max_order); |
85 | extern size_t buddy_conf_size(size_t); |
| 88 | extern link_t *buddy_system_alloc_block(buddy_system_t *b, link_t *block); |
86 | extern link_t *buddy_system_alloc_block(buddy_system_t *, link_t *); |
| 89 | 87 | ||
| 90 | #endif |
88 | #endif |
| 91 | 89 | ||
| 92 | /** @} |
90 | /** @} |
| 93 | */ |
91 | */ |