Subversion Repositories HelenOS-historic

Rev

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