Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • kernel/generic/include/mm/frame.h

    r1a313f7 r26aafe8  
    5050typedef uint8_t frame_flags_t;
    5151
    52 #define FRAME_NONE        0x0
    5352/** Convert the frame address to kernel VA. */
    5453#define FRAME_KA          0x1
     
    5958/** Do not reserve / unreserve memory. */
    6059#define FRAME_NO_RESERVE  0x8
    61 /** Allocate a frame which can be identity-mapped. */
    62 #define FRAME_LOWMEM      0x10
    63 /** Allocate a frame which cannot be identity-mapped. */
    64 #define FRAME_HIGHMEM     0x20
    6560
    6661typedef uint8_t zone_flags_t;
    6762
    68 #define ZONE_NONE       0x0
    6963/** Available zone (free for allocation) */
    70 #define ZONE_AVAILABLE  0x1
     64#define ZONE_AVAILABLE  0x0
    7165/** Zone is reserved (not available for allocation) */
    72 #define ZONE_RESERVED   0x2
     66#define ZONE_RESERVED   0x8
    7367/** Zone is used by firmware (not available for allocation) */
    74 #define ZONE_FIRMWARE   0x4
    75 /** Zone contains memory that can be identity-mapped */
    76 #define ZONE_LOWMEM     0x8
    77 /** Zone contains memory that cannot be identity-mapped */
    78 #define ZONE_HIGHMEM    0x10
     68#define ZONE_FIRMWARE   0x10
    7969
    80 /** Mask of zone bits that must be matched exactly. */
    81 #define ZONE_EF_MASK    0x7
    82 
    83 #define FRAME_TO_ZONE_FLAGS(ff) \
    84         ((((ff) & FRAME_LOWMEM) ? ZONE_LOWMEM : \
    85             (((ff) & FRAME_HIGHMEM) ? ZONE_HIGHMEM : \
    86             ZONE_LOWMEM /* | ZONE_HIGHMEM */)) | \
    87             ZONE_AVAILABLE)
    88 
    89 #define ZONE_FLAGS_MATCH(zf, f) \
    90         (((((zf) & ZONE_EF_MASK)) == ((f) & ZONE_EF_MASK)) && \
    91             (((zf) & ~ZONE_EF_MASK) & (f)))
     70/** Currently there is no equivalent zone flags
     71    for frame flags */
     72#define FRAME_TO_ZONE_FLAGS(frame_flags)  0
    9273
    9374typedef struct {
    9475        size_t refcount;      /**< Tracking of shared frames */
     76        uint8_t buddy_order;  /**< Buddy system block order */
    9577        link_t buddy_link;    /**< Link to the next free block inside
    9678                                   one order */
    9779        void *parent;         /**< If allocated by slab, this points there */
    98         uint8_t buddy_order;  /**< Buddy system block order */
    9980} frame_t;
    10081
     
    148129}
    149130
     131NO_TRACE static inline bool zone_flags_available(zone_flags_t flags)
     132{
     133        return ((flags & (ZONE_RESERVED | ZONE_FIRMWARE)) == 0);
     134}
     135
    150136#define IS_BUDDY_ORDER_OK(index, order) \
    151137    ((~(((sysarg_t) -1) << (order)) & (index)) == 0)
     
    160146
    161147extern void frame_init(void);
    162 extern bool frame_adjust_zone_bounds(bool, uintptr_t *, size_t *);
    163148extern void *frame_alloc_generic(uint8_t, frame_flags_t, size_t *);
    164149extern void *frame_alloc(uint8_t, frame_flags_t);
     
    176161extern void frame_mark_unavailable(pfn_t, size_t);
    177162extern size_t zone_conf_size(size_t);
    178 extern pfn_t zone_external_conf_alloc(size_t);
    179163extern bool zone_merge(size_t, size_t);
    180164extern void zone_merge_all(void);
Note: See TracChangeset for help on using the changeset viewer.