Rev 367 | Rev 373 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 367 | Rev 368 | ||
---|---|---|---|
Line 49... | Line 49... | ||
49 | count_t busy_count; /**< number of frame_t structures in busy list */ |
49 | count_t busy_count; /**< number of frame_t structures in busy list */ |
50 | int flags; |
50 | int flags; |
51 | }; |
51 | }; |
52 | 52 | ||
53 | struct frame { |
53 | struct frame { |
54 | zone_t *zone; /**< host zone */ |
- | |
55 | count_t refcount; /**< when > 0, the frame is in busy list, otherwise the frame is in free list */ |
54 | count_t refcount; /**< when > 0, the frame is in busy list, otherwise the frame is in free list */ |
56 | link_t link; /**< link either to frame_zone free or busy list */ |
55 | link_t link; /**< link either to frame_zone free or busy list */ |
57 | }; |
56 | }; |
58 | 57 | ||
59 | extern spinlock_t zone_head_lock; /**< this lock protects zone_head list */ |
58 | extern spinlock_t zone_head_lock; /**< this lock protects zone_head list */ |
60 | extern link_t zone_head; /**< list of all zones in the system */ |
59 | extern link_t zone_head; /**< list of all zones in the system */ |
61 | 60 | ||
62 | extern count_t frames; |
- | |
63 | extern count_t frames_free; |
- | |
64 | - | ||
65 | extern count_t kernel_frames; |
- | |
66 | extern count_t kernel_frames_free; |
- | |
67 | - | ||
68 | extern __u8 *frame_bitmap; |
61 | extern void zone_init(void); |
69 | extern count_t frame_bitmap_octets; |
62 | extern zone_t *zone_create(__address start, size_t size, int flags); |
70 | - | ||
71 | extern __u8 *frame_kernel_bitmap; |
63 | extern void zone_attach(zone_t *zone); |
72 | 64 | ||
73 | extern void frame_init(void); |
65 | extern void frame_init(void); |
74 | - | ||
- | 66 | extern void frame_initialize(frame_t *frame, zone_t *zone); |
|
75 | __address frame_alloc(int flags); |
67 | __address frame_alloc(int flags); |
76 | extern void frame_free(__address addr); |
68 | extern void frame_free(__address addr); |
77 | extern void frame_not_free(__address addr); |
69 | extern void frame_not_free(__address addr); |
78 | extern void frame_region_not_free(__address start, __address stop); |
70 | extern void frame_region_not_free(__address start, __address stop); |
79 | 71 | ||
80 | extern void zone_init(void); |
- | |
81 | extern zone_t *zone_create(__address start, size_t size, int flags); |
- | |
82 | extern void zone_attach(zone_t *zone); |
- | |
83 | - | ||
84 | extern void frame_initialize(frame_t *frame, zone_t *zone); |
- | |
85 | extern __address frame_get_address(frame_t *frame); |
- | |
86 | - | ||
87 | /* |
72 | /* |
88 | * TODO: Implement the following functions. |
73 | * TODO: Implement the following functions. |
89 | */ |
74 | */ |
90 | - | ||
91 | /* |
- | |
92 | extern frame_t *frame_alloc(int flags); |
- | |
93 | extern void frame_free(frame_t *frame); |
- | |
94 | */ |
- | |
95 | extern frame_t *frame_reference(frame_t *frame); |
75 | extern frame_t *frame_reference(frame_t *frame); |
96 | extern void frame_release(frame_t *frame); |
76 | extern void frame_release(frame_t *frame); |
97 | 77 | ||
98 | #endif |
78 | #endif |