Ignore:
File:
1 edited

Legend:

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

    r26aafe8 r96b02eb9  
    4545#include <arch/mm/frame.h>
    4646
     47#define ONE_FRAME    0
     48#define TWO_FRAMES   1
     49#define FOUR_FRAMES  2
     50
     51
     52#ifdef ARCH_STACK_FRAMES
     53        #define STACK_FRAMES  ARCH_STACK_FRAMES
     54#else
     55        #define STACK_FRAMES  ONE_FRAME
     56#endif
     57
    4758/** Maximum number of zones in the system. */
    4859#define ZONES_MAX  32
     
    5162
    5263/** Convert the frame address to kernel VA. */
    53 #define FRAME_KA          0x1
     64#define FRAME_KA          0x01
    5465/** Do not panic and do not sleep on failure. */
    55 #define FRAME_ATOMIC      0x2
     66#define FRAME_ATOMIC      0x02
    5667/** Do not start reclaiming when no free memory. */
    57 #define FRAME_NO_RECLAIM  0x4
    58 /** Do not reserve / unreserve memory. */
    59 #define FRAME_NO_RESERVE  0x8
     68#define FRAME_NO_RECLAIM  0x04
    6069
    6170typedef uint8_t zone_flags_t;
    6271
    6372/** Available zone (free for allocation) */
    64 #define ZONE_AVAILABLE  0x0
     73#define ZONE_AVAILABLE  0x00
    6574/** Zone is reserved (not available for allocation) */
    66 #define ZONE_RESERVED   0x8
     75#define ZONE_RESERVED   0x08
    6776/** Zone is used by firmware (not available for allocation) */
    6877#define ZONE_FIRMWARE   0x10
     
    7685        uint8_t buddy_order;  /**< Buddy system block order */
    7786        link_t buddy_link;    /**< Link to the next free block inside
    78                                    one order */
     87                               one order */
    7988        void *parent;         /**< If allocated by slab, this points there */
    8089} frame_t;
     
    8291typedef struct {
    8392        pfn_t base;                    /**< Frame_no of the first frame
    84                                             in the frames array */
     93                                        in the frames array */
    8594        size_t count;                  /**< Size of zone */
    8695        size_t free_count;             /**< Number of free frame_t
    87                                             structures */
     96                                        structures */
    8897        size_t busy_count;             /**< Number of busy frame_t
    89                                             structures */
     98                                        structures */
    9099        zone_flags_t flags;            /**< Type of the zone */
    91100       
    92101        frame_t *frames;               /**< Array of frame_t structures
    93                                             in this zone */
     102                                        in this zone */
    94103        buddy_system_t *buddy_system;  /**< Buddy system for the zone */
    95104} zone_t;
     
    137146    ((~(((sysarg_t) -1) << (order)) & (index)) == 0)
    138147#define IS_BUDDY_LEFT_BLOCK(zone, frame) \
    139     (((frame_index((zone), (frame)) >> (frame)->buddy_order) & 0x1) == 0)
     148    (((frame_index((zone), (frame)) >> (frame)->buddy_order) & 0x01) == 0)
    140149#define IS_BUDDY_RIGHT_BLOCK(zone, frame) \
    141     (((frame_index((zone), (frame)) >> (frame)->buddy_order) & 0x1) == 1)
     150    (((frame_index((zone), (frame)) >> (frame)->buddy_order) & 0x01) == 1)
    142151#define IS_BUDDY_LEFT_BLOCK_ABS(zone, frame) \
    143     (((frame_index_abs((zone), (frame)) >> (frame)->buddy_order) & 0x1) == 0)
     152    (((frame_index_abs((zone), (frame)) >> (frame)->buddy_order) & 0x01) == 0)
    144153#define IS_BUDDY_RIGHT_BLOCK_ABS(zone, frame) \
    145     (((frame_index_abs((zone), (frame)) >> (frame)->buddy_order) & 0x1) == 1)
     154    (((frame_index_abs((zone), (frame)) >> (frame)->buddy_order) & 0x01) == 1)
     155
     156#define frame_alloc(order, flags) \
     157    frame_alloc_generic(order, flags, NULL)
    146158
    147159extern void frame_init(void);
    148160extern void *frame_alloc_generic(uint8_t, frame_flags_t, size_t *);
    149 extern void *frame_alloc(uint8_t, frame_flags_t);
    150 extern void *frame_alloc_noreserve(uint8_t, frame_flags_t);
    151 extern void frame_free_generic(uintptr_t, frame_flags_t);
    152161extern void frame_free(uintptr_t);
    153 extern void frame_free_noreserve(uintptr_t);
    154162extern void frame_reference_add(pfn_t);
    155 extern size_t frame_total_free_get(void);
    156163
    157 extern size_t find_zone(pfn_t, size_t, size_t);
     164extern size_t find_zone(pfn_t frame, size_t count, size_t hint);
    158165extern size_t zone_create(pfn_t, size_t, pfn_t, zone_flags_t);
    159166extern void *frame_get_parent(pfn_t, size_t);
Note: See TracChangeset for help on using the changeset viewer.