Rev 683 | Rev 724 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
| Rev 683 | Rev 689 | ||
|---|---|---|---|
| Line 36... | Line 36... | ||
| 36 | #include <synch/spinlock.h> |
36 | #include <synch/spinlock.h> |
| 37 | #include <mm/buddy.h> |
37 | #include <mm/buddy.h> |
| 38 | 38 | ||
| 39 | #define ONE_FRAME 0 |
39 | #define ONE_FRAME 0 |
| 40 | 40 | ||
| 41 | #define FRAME_KA 1 /* skip frames conflicting with user address space */ |
41 | #define FRAME_KA 1 /* skip frames conflicting with user address space */ |
| 42 | #define FRAME_PANIC 2 /* panic on failure */ |
42 | #define FRAME_PANIC 2 /* panic on failure */ |
| - | 43 | #define FRAME_NON_BLOCKING 4 /* do not panic and do not sleep on failure */ |
|
| - | 44 | ||
| - | 45 | #define FRAME_OK 0 /* frame_alloc return status */ |
|
| - | 46 | #define FRAME_NO_MEMORY 1 /* frame_alloc return status */ |
|
| - | 47 | #define FRAME_ERROR 2 /* frame_alloc return status */ |
|
| 43 | 48 | ||
| 44 | #define FRAME2ADDR(zone, frame) ((zone)->base + ((frame) - (zone)->frames) * FRAME_SIZE) |
49 | #define FRAME2ADDR(zone, frame) ((zone)->base + ((frame) - (zone)->frames) * FRAME_SIZE) |
| 45 | #define ADDR2FRAME(zone, addr) (&((zone)->frames[((addr) - (zone)->base) / FRAME_SIZE])) |
50 | #define ADDR2FRAME(zone, addr) (&((zone)->frames[((addr) - (zone)->base) / FRAME_SIZE])) |
| 46 | #define FRAME_INDEX(zone, frame) ((index_t)((frame) - (zone)->frames)) |
51 | #define FRAME_INDEX(zone, frame) ((index_t)((frame) - (zone)->frames)) |
| 47 | #define FRAME_INDEX_VALID(zone, index) (((index) >= 0) && ((index) < ((zone)->free_count + (zone)->busy_count))) |
52 | #define FRAME_INDEX_VALID(zone, index) (((index) >= 0) && ((index) < ((zone)->free_count + (zone)->busy_count))) |
| Line 86... | Line 91... | ||
| 86 | extern zone_t *zone_create(__address start, size_t size, int flags); |
91 | extern zone_t *zone_create(__address start, size_t size, int flags); |
| 87 | extern void zone_attach(zone_t *zone); |
92 | extern void zone_attach(zone_t *zone); |
| 88 | 93 | ||
| 89 | extern void frame_init(void); |
94 | extern void frame_init(void); |
| 90 | extern void frame_initialize(frame_t *frame, zone_t *zone); |
95 | extern void frame_initialize(frame_t *frame, zone_t *zone); |
| - | 96 | ||
| 91 | __address frame_alloc(int flags, __u8 order); |
97 | __address frame_alloc(int flags, __u8 order, int * status); |
| 92 | extern void frame_free(__address addr); |
98 | extern void frame_free(__address addr); |
| - | 99 | ||
| 93 | zone_t * get_zone_by_frame(frame_t * frame); |
100 | zone_t * get_zone_by_frame(frame_t * frame); |
| 94 | 101 | ||
| 95 | /* |
102 | /* |
| 96 | * Buddy system operations |
103 | * Buddy system operations |
| 97 | */ |
104 | */ |