Subversion Repositories HelenOS

Rev

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
 */