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