Ignore:
File:
1 edited

Legend:

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

    r96b02eb9 r26aafe8  
    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 
    5847/** Maximum number of zones in the system. */
    5948#define ZONES_MAX  32
     
    6251
    6352/** Convert the frame address to kernel VA. */
    64 #define FRAME_KA          0x01
     53#define FRAME_KA          0x1
    6554/** Do not panic and do not sleep on failure. */
    66 #define FRAME_ATOMIC      0x02
     55#define FRAME_ATOMIC      0x2
    6756/** Do not start reclaiming when no free memory. */
    68 #define FRAME_NO_RECLAIM  0x04
     57#define FRAME_NO_RECLAIM  0x4
     58/** Do not reserve / unreserve memory. */
     59#define FRAME_NO_RESERVE  0x8
    6960
    7061typedef uint8_t zone_flags_t;
    7162
    7263/** Available zone (free for allocation) */
    73 #define ZONE_AVAILABLE  0x00
     64#define ZONE_AVAILABLE  0x0
    7465/** Zone is reserved (not available for allocation) */
    75 #define ZONE_RESERVED   0x08
     66#define ZONE_RESERVED   0x8
    7667/** Zone is used by firmware (not available for allocation) */
    7768#define ZONE_FIRMWARE   0x10
     
    8576        uint8_t buddy_order;  /**< Buddy system block order */
    8677        link_t buddy_link;    /**< Link to the next free block inside
    87                                one order */
     78                                   one order */
    8879        void *parent;         /**< If allocated by slab, this points there */
    8980} frame_t;
     
    9182typedef struct {
    9283        pfn_t base;                    /**< Frame_no of the first frame
    93                                         in the frames array */
     84                                            in the frames array */
    9485        size_t count;                  /**< Size of zone */
    9586        size_t free_count;             /**< Number of free frame_t
    96                                         structures */
     87                                            structures */
    9788        size_t busy_count;             /**< Number of busy frame_t
    98                                         structures */
     89                                            structures */
    9990        zone_flags_t flags;            /**< Type of the zone */
    10091       
    10192        frame_t *frames;               /**< Array of frame_t structures
    102                                         in this zone */
     93                                            in this zone */
    10394        buddy_system_t *buddy_system;  /**< Buddy system for the zone */
    10495} zone_t;
     
    146137    ((~(((sysarg_t) -1) << (order)) & (index)) == 0)
    147138#define IS_BUDDY_LEFT_BLOCK(zone, frame) \
    148     (((frame_index((zone), (frame)) >> (frame)->buddy_order) & 0x01) == 0)
     139    (((frame_index((zone), (frame)) >> (frame)->buddy_order) & 0x1) == 0)
    149140#define IS_BUDDY_RIGHT_BLOCK(zone, frame) \
    150     (((frame_index((zone), (frame)) >> (frame)->buddy_order) & 0x01) == 1)
     141    (((frame_index((zone), (frame)) >> (frame)->buddy_order) & 0x1) == 1)
    151142#define IS_BUDDY_LEFT_BLOCK_ABS(zone, frame) \
    152     (((frame_index_abs((zone), (frame)) >> (frame)->buddy_order) & 0x01) == 0)
     143    (((frame_index_abs((zone), (frame)) >> (frame)->buddy_order) & 0x1) == 0)
    153144#define IS_BUDDY_RIGHT_BLOCK_ABS(zone, frame) \
    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)
     145    (((frame_index_abs((zone), (frame)) >> (frame)->buddy_order) & 0x1) == 1)
    158146
    159147extern void frame_init(void);
    160148extern void *frame_alloc_generic(uint8_t, frame_flags_t, size_t *);
     149extern void *frame_alloc(uint8_t, frame_flags_t);
     150extern void *frame_alloc_noreserve(uint8_t, frame_flags_t);
     151extern void frame_free_generic(uintptr_t, frame_flags_t);
    161152extern void frame_free(uintptr_t);
     153extern void frame_free_noreserve(uintptr_t);
    162154extern void frame_reference_add(pfn_t);
     155extern size_t frame_total_free_get(void);
    163156
    164 extern size_t find_zone(pfn_t frame, size_t count, size_t hint);
     157extern size_t find_zone(pfn_t, size_t, size_t);
    165158extern size_t zone_create(pfn_t, size_t, pfn_t, zone_flags_t);
    166159extern void *frame_get_parent(pfn_t, size_t);
Note: See TracChangeset for help on using the changeset viewer.