Rev 102 | Rev 355 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 102 | Rev 354 | ||
---|---|---|---|
Line 29... | Line 29... | ||
29 | #ifndef __FRAME_H__ |
29 | #ifndef __FRAME_H__ |
30 | #define __FRAME_H__ |
30 | #define __FRAME_H__ |
31 | 31 | ||
32 | #include <arch/types.h> |
32 | #include <arch/types.h> |
33 | #include <typedefs.h> |
33 | #include <typedefs.h> |
- | 34 | #include <list.h> |
|
- | 35 | #include <synch/spinlock.h> |
|
34 | 36 | ||
35 | #define FRAME_KA 1 /* skip frames conflicting with user address space */ |
37 | #define FRAME_KA 1 /* skip frames conflicting with user address space */ |
36 | #define FRAME_PANIC 2 /* panic on failure */ |
38 | #define FRAME_PANIC 2 /* panic on failure */ |
37 | 39 | ||
- | 40 | struct frame_zone { |
|
- | 41 | link_t fz_link; /**< link to previous and next frame_zone */ |
|
- | 42 | ||
- | 43 | spinlock_t lock; /**< this lock protexts everything below */ |
|
- | 44 | link_t free_head; /**< list of free frames */ |
|
- | 45 | link_t busy_head; /**< list of busy frames */ |
|
- | 46 | count_t free_count; /**< frames in free list */ |
|
- | 47 | count_t busy_count; /**< frames in busy list */ |
|
- | 48 | frame_t *frames; /**< array of frames in this zone */ |
|
- | 49 | int flags; |
|
- | 50 | }; |
|
- | 51 | ||
- | 52 | struct frame { |
|
- | 53 | count_t refcount; /**< when > 0, the frame is in busy list, otherwise the frame is in free list */ |
|
- | 54 | link_t link; /**< link either to frame_zone free or busy list */ |
|
- | 55 | }; |
|
- | 56 | ||
- | 57 | extern spinlock_t frame_zone_head_lock; /**< this lock protects frame_zone_head list */ |
|
- | 58 | extern link_t frame_zone_head; /**< list of all frame_zone's in the system */ |
|
- | 59 | ||
38 | extern count_t frames; |
60 | extern count_t frames; |
39 | extern count_t frames_free; |
61 | extern count_t frames_free; |
40 | 62 | ||
41 | extern count_t kernel_frames; |
63 | extern count_t kernel_frames; |
42 | extern count_t kernel_frames_free; |
64 | extern count_t kernel_frames_free; |