Changeset 5f7a0ef in mainline for kernel/generic/include/mm/frame.h


Ignore:
Timestamp:
2008-07-06T19:47:48Z (17 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
498b201
Parents:
2ec725f
Message:

Introduce FRAME_LOW_16_GiB slab/frame allocator flag. When specified, the
allocators will not allocate memory above 16 GiB. Each architecture needs to
make sure not to merge zones from below and above 16 GiB. Allocations that
require memory below 16 GiB need to be altered to use this flag.

File:
1 edited

Legend:

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

    r2ec725f r5f7a0ef  
    5858#define ZONES_MAX               16
    5959
    60 /** If possible, merge with neighbouring zones. */
    61 #define ZONE_JOIN               0x1
    62 
    6360/** Convert the frame address to kernel va. */
    6461#define FRAME_KA                0x1
    6562/** Do not panic and do not sleep on failure. */
    66 #define FRAME_ATOMIC            0x2
     63#define FRAME_ATOMIC            0x2
    6764/** Do not start reclaiming when no free memory. */
    68 #define FRAME_NO_RECLAIM        0x4
     65#define FRAME_NO_RECLAIM        0x4
     66/** Do not allocate above 16GiB. */
     67#define FRAME_LOW_16_GiB        0x8
    6968
    7069static inline uintptr_t PFN2ADDR(pfn_t frame)
     
    9190
    9291#define IS_BUDDY_ORDER_OK(index, order)         \
    93         ((~(((unative_t) -1) << (order)) & (index)) == 0)
     92    ((~(((unative_t) -1) << (order)) & (index)) == 0)
    9493#define IS_BUDDY_LEFT_BLOCK(zone, frame)        \
    95         (((frame_index((zone), (frame)) >> (frame)->buddy_order) & 0x1) == 0)
     94    (((frame_index((zone), (frame)) >> (frame)->buddy_order) & 0x1) == 0)
    9695#define IS_BUDDY_RIGHT_BLOCK(zone, frame)       \
    97         (((frame_index((zone), (frame)) >> (frame)->buddy_order) & 0x1) == 1)
     96    (((frame_index((zone), (frame)) >> (frame)->buddy_order) & 0x1) == 1)
    9897#define IS_BUDDY_LEFT_BLOCK_ABS(zone, frame)    \
    99         (((frame_index_abs((zone), (frame)) >> (frame)->buddy_order) & 0x1) == 0)
     98    (((frame_index_abs((zone), (frame)) >> (frame)->buddy_order) & 0x1) == 0)
    10099#define IS_BUDDY_RIGHT_BLOCK_ABS(zone, frame)   \
    101         (((frame_index_abs((zone), (frame)) >> (frame)->buddy_order) & 0x1) == 1)
     100    (((frame_index_abs((zone), (frame)) >> (frame)->buddy_order) & 0x1) == 1)
    102101
    103102#define frame_alloc(order, flags)               \
    104         frame_alloc_generic(order, flags, NULL)
     103    frame_alloc_generic(order, flags, NULL)
    105104
    106105extern void frame_init(void);
    107 extern void *frame_alloc_generic(uint8_t order, int flags, unsigned int *pzone);
    108 extern void frame_free(uintptr_t frame);
    109 extern void frame_reference_add(pfn_t pfn);
     106extern void *frame_alloc_generic(uint8_t, int, unsigned int *);
     107extern void frame_free(uintptr_t);
     108extern void frame_reference_add(pfn_t);
    110109
    111 extern int zone_create(pfn_t start, count_t count, pfn_t confframe, int flags);
    112 extern void *frame_get_parent(pfn_t frame, unsigned int hint);
    113 extern void frame_set_parent(pfn_t frame, void *data, unsigned int hint);
    114 extern void frame_mark_unavailable(pfn_t start, count_t count);
    115 extern uintptr_t zone_conf_size(count_t count);
    116 extern void zone_merge(unsigned int z1, unsigned int z2);
     110extern int zone_create(pfn_t, count_t, pfn_t, int);
     111extern void *frame_get_parent(pfn_t, unsigned int);
     112extern void frame_set_parent(pfn_t, void *, unsigned int);
     113extern void frame_mark_unavailable(pfn_t, count_t);
     114extern uintptr_t zone_conf_size(count_t);
     115extern void zone_merge(unsigned int, unsigned int);
    117116extern void zone_merge_all(void);
    118117extern uint64_t zone_total_size(void);
     
    122121 */
    123122extern void zone_print_list(void);
    124 extern void zone_print_one(unsigned int znum);
     123extern void zone_print_one(unsigned int);
    125124
    126125#endif
Note: See TracChangeset for help on using the changeset viewer.