Ignore:
File:
1 edited

Legend:

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

    rad12b5ea 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 : ZONE_NONE)) | \
    86             (ZONE_AVAILABLE | ZONE_LOWMEM /* | ZONE_HIGHMEM */))
    87 
    88 #define ZONE_FLAGS_MATCH(zf, f) \
    89         (((((zf) & ZONE_EF_MASK)) == ((f) & ZONE_EF_MASK)) && \
    90             (((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
    9173
    9274typedef struct {
    9375        size_t refcount;      /**< Tracking of shared frames */
     76        uint8_t buddy_order;  /**< Buddy system block order */
    9477        link_t buddy_link;    /**< Link to the next free block inside
    9578                                   one order */
    9679        void *parent;         /**< If allocated by slab, this points there */
    97         uint8_t buddy_order;  /**< Buddy system block order */
    9880} frame_t;
    9981
     
    147129}
    148130
     131NO_TRACE static inline bool zone_flags_available(zone_flags_t flags)
     132{
     133        return ((flags & (ZONE_RESERVED | ZONE_FIRMWARE)) == 0);
     134}
     135
    149136#define IS_BUDDY_ORDER_OK(index, order) \
    150137    ((~(((sysarg_t) -1) << (order)) & (index)) == 0)
     
    159146
    160147extern void frame_init(void);
    161 extern bool frame_adjust_zone_bounds(bool, uintptr_t *, size_t *);
    162148extern void *frame_alloc_generic(uint8_t, frame_flags_t, size_t *);
    163149extern void *frame_alloc(uint8_t, frame_flags_t);
     
    175161extern void frame_mark_unavailable(pfn_t, size_t);
    176162extern size_t zone_conf_size(size_t);
    177 extern pfn_t zone_external_conf_alloc(size_t);
    178163extern bool zone_merge(size_t, size_t);
    179164extern void zone_merge_all(void);
Note: See TracChangeset for help on using the changeset viewer.