Rev 756 | Rev 822 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
| Rev 756 | Rev 814 | ||
|---|---|---|---|
| Line 40... | Line 40... | ||
| 40 | link_t *(* bisect)(buddy_system_t *, link_t *); /**< Bisect the block passed as argument and return pointer to the new right-side buddy. */ |
40 | link_t *(* bisect)(buddy_system_t *, link_t *); /**< Bisect the block passed as argument and return pointer to the new right-side buddy. */ |
| 41 | link_t *(* coalesce)(buddy_system_t *, link_t *, link_t *); /**< Coalesce two buddies into a bigger block. */ |
41 | link_t *(* coalesce)(buddy_system_t *, link_t *, link_t *); /**< Coalesce two buddies into a bigger block. */ |
| 42 | void (*set_order)(buddy_system_t *, link_t *, __u8); /**< Set order of block passed as argument. */ |
42 | void (*set_order)(buddy_system_t *, link_t *, __u8); /**< Set order of block passed as argument. */ |
| 43 | __u8 (*get_order)(buddy_system_t *, link_t *); /**< Return order of block passed as argument. */ |
43 | __u8 (*get_order)(buddy_system_t *, link_t *); /**< Return order of block passed as argument. */ |
| 44 | void (*mark_busy)(buddy_system_t *, link_t *); /**< Mark block as busy */ |
44 | void (*mark_busy)(buddy_system_t *, link_t *); /**< Mark block as busy */ |
| - | 45 | void (*mark_available)(buddy_system_t *, link_t *); /**< Mark block as busy */ |
|
| - | 46 | /** Find parent of block that has given order */ |
|
| - | 47 | link_t *(* find_block)(buddy_system_t *, link_t *, __u8); |
|
| 45 | }; |
48 | }; |
| 46 | 49 | ||
| 47 | struct buddy_system { |
50 | struct buddy_system { |
| 48 | __u8 max_order; /**< Maximal order of block which can be stored by buddy system. */ |
51 | __u8 max_order; /**< Maximal order of block which can be stored by buddy system. */ |
| 49 | link_t *order; |
52 | link_t *order; |
| 50 | buddy_system_operations_t *op; |
53 | buddy_system_operations_t *op; |
| 51 | void *data; /**< Pointer to be used by the implementation. */ |
54 | void *data; /**< Pointer to be used by the implementation. */ |
| 52 | }; |
55 | }; |
| 53 | 56 | ||
| 54 | extern buddy_system_t *buddy_system_create(__u8 max_order, buddy_system_operations_t *op, void *data); |
57 | extern void buddy_system_create(buddy_system_t *b, |
| - | 58 | __u8 max_order, |
|
| - | 59 | buddy_system_operations_t *op, void *data); |
|
| 55 | extern link_t *buddy_system_alloc(buddy_system_t *b, __u8 i); |
60 | extern link_t *buddy_system_alloc(buddy_system_t *b, __u8 i); |
| 56 | extern bool buddy_system_can_alloc(buddy_system_t *b, __u8 order); |
61 | extern bool buddy_system_can_alloc(buddy_system_t *b, __u8 order); |
| 57 | extern void buddy_system_free(buddy_system_t *b, link_t *block); |
62 | extern void buddy_system_free(buddy_system_t *b, link_t *block); |
| 58 | extern void buddy_system_structure_print(buddy_system_t *b, size_t elem_size); |
63 | extern void buddy_system_structure_print(buddy_system_t *b, size_t elem_size); |
| - | 64 | extern size_t buddy_conf_size(int max_order); |
|
| - | 65 | extern link_t *buddy_system_alloc_block(buddy_system_t *b, link_t *block); |
|
| 59 | 66 | ||
| 60 | #endif |
67 | #endif |