Subversion Repositories HelenOS

Rev

Rev 2089 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 2089 Rev 2106
Line 42... Line 42...
42
 
42
 
43
struct buddy_system;
43
struct buddy_system;
44
 
44
 
45
/** Buddy system operations to be implemented by each implementation. */
45
/** Buddy system operations to be implemented by each implementation. */
46
typedef struct {
46
typedef struct {
-
 
47
    /**
47
    /** Return pointer to left-side or right-side buddy for block passed as
48
     * Return pointer to left-side or right-side buddy for block passed as
48
      * argument. */
49
     * argument.
-
 
50
     */
49
    link_t *(* find_buddy)(struct buddy_system *, link_t *);
51
    link_t *(* find_buddy)(struct buddy_system *, link_t *);
-
 
52
    /**
50
    /** Bisect the block passed as argument and return pointer to the new
53
     * Bisect the block passed as argument and return pointer to the new
51
      * right-side buddy. */
54
     * right-side buddy.
-
 
55
     */
52
    link_t *(* bisect)(struct buddy_system *, link_t *);
56
    link_t *(* bisect)(struct buddy_system *, link_t *);
53
    /** Coalesce two buddies into a bigger block. */
57
    /** Coalesce two buddies into a bigger block. */
54
    link_t *(* coalesce)(struct buddy_system *, link_t *, link_t *);
58
    link_t *(* coalesce)(struct buddy_system *, link_t *, link_t *);
55
    /** Set order of block passed as argument. */
59
    /** Set order of block passed as argument. */
56
    void (*set_order)(struct buddy_system *, link_t *, uint8_t);
60
    void (*set_order)(struct buddy_system *, link_t *, uint8_t);
Line 73... Line 77...
73
    /** Pointer to be used by the implementation. */
77
    /** Pointer to be used by the implementation. */
74
    void *data;
78
    void *data;
75
} buddy_system_t;
79
} buddy_system_t;
76
 
80
 
77
extern void buddy_system_create(buddy_system_t *b, uint8_t max_order,
81
extern void buddy_system_create(buddy_system_t *b, uint8_t max_order,
78
    buddy_system_operations_t *op, void *data);
82
    buddy_system_operations_t *op, void *data);
79
extern link_t *buddy_system_alloc(buddy_system_t *b, uint8_t i);
83
extern link_t *buddy_system_alloc(buddy_system_t *b, uint8_t i);
80
extern bool buddy_system_can_alloc(buddy_system_t *b, uint8_t order);
84
extern bool buddy_system_can_alloc(buddy_system_t *b, uint8_t order);
81
extern void buddy_system_free(buddy_system_t *b, link_t *block);
85
extern void buddy_system_free(buddy_system_t *b, link_t *block);
82
extern void buddy_system_structure_print(buddy_system_t *b, size_t elem_size);
86
extern void buddy_system_structure_print(buddy_system_t *b, size_t elem_size);
83
extern size_t buddy_conf_size(int max_order);
87
extern size_t buddy_conf_size(int max_order);