Changeset 6e8b3c8 in mainline for generic/include/mm/frame.h


Ignore:
Timestamp:
2005-11-11T18:50:41Z (20 years ago)
Author:
Sergey Bondari <bondari@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
30187eb
Parents:
8a0b3730
Message:

Buddy system implementation. Not functional yet - only framework prepeared.
Also added 2 macros FRAME2ADDR and ADDR2FRAME.

File:
1 edited

Legend:

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

    r8a0b3730 r6e8b3c8  
    3434#include <list.h>
    3535#include <synch/spinlock.h>
     36#include <mm/buddy.h>
    3637
    3738#define FRAME_KA        1       /* skip frames conflicting with user address space */
    3839#define FRAME_PANIC     2       /* panic on failure */
     40
     41#define FRAME2ADDR(zone, frame)         ((zone)->base + ((frame) - (zone)->frames) * FRAME_SIZE)
     42#define ADDR2FRAME(zone, addr)          (&((zone)->frames[((addr) - (zone)->base) / FRAME_SIZE]))
    3943
    4044struct zone {
     
    4751        count_t free_count;     /**< number of frame_t structures in free list */
    4852        count_t busy_count;     /**< number of frame_t structures not in free list */
     53       
     54        buddy_system_t * buddy_system; /**< buddy system allocator for the zone */
    4955        int flags;
    5056};
     
    5359        count_t refcount;       /**< when == 0, the frame is in free list */
    5460        link_t link;            /**< link to zone free list when refcount == 0 */
     61        __u8 order;             /**< buddy system  block order */
     62        link_t buddy_link;      /**< link to the next free block inside one order*/
    5563};
    5664
     
    7078
    7179/*
     80 * Buddy system operations
     81 */
     82link_t * zone_buddy_find_buddy(link_t * buddy);
     83link_t * zone_buddy_bisect(link_t * block);
     84link_t * zone_buddy_coalesce(link_t * buddy_l, link_t * buddy_r);
     85void zone_buddy_set_order(link_t * block, __u8 order);
     86__u8 zone_buddy_get_order(link_t * block);
     87
     88__address zone_buddy_frame_alloc(int flags, __u8 order);
     89void zone_buddy_frame_free(__address addr);
     90
     91/*
    7292 * TODO: Implement the following functions.
    7393 */
Note: See TracChangeset for help on using the changeset viewer.