Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • kernel/generic/src/mm/km.c

    r9d58539 rb0c2075  
    233233 * @param[inout] framep Pointer to a variable which will receive the physical
    234234 *                      address of the allocated frame.
    235  * @param[in] flags     Frame allocation flags. FRAME_NONE or FRAME_NO_RESERVE.
     235 * @param[in] flags     Frame allocation flags. FRAME_NONE, FRAME_NO_RESERVE
     236 *                      and FRAME_ATOMIC bits are allowed.
    236237 * @return              Virtual address of the allocated frame.
    237238 */
    238239uintptr_t km_temporary_page_get(uintptr_t *framep, frame_flags_t flags)
    239240{
    240         uintptr_t frame;
    241         uintptr_t page;
    242 
    243241        ASSERT(THREAD);
    244242        ASSERT(framep);
    245         ASSERT(!(flags & ~FRAME_NO_RESERVE));
    246 
     243        ASSERT(!(flags & ~(FRAME_NO_RESERVE | FRAME_ATOMIC)));
     244       
    247245        /*
    248246         * Allocate a frame, preferably from high memory.
    249247         */
    250         frame = (uintptr_t) frame_alloc(ONE_FRAME,
    251             FRAME_HIGHMEM | FRAME_ATOMIC | flags);
     248        uintptr_t page;
     249        uintptr_t frame =
     250            frame_alloc(1, FRAME_HIGHMEM | FRAME_ATOMIC | flags, 0);
    252251        if (frame) {
    253252                page = km_map(frame, PAGE_SIZE,
    254253                    PAGE_READ | PAGE_WRITE | PAGE_CACHEABLE);
    255                 ASSERT(page);   // FIXME
     254               
     255                // FIXME
     256                ASSERT(page);
    256257        } else {
    257                 frame = (uintptr_t) frame_alloc_noreserve(ONE_FRAME,
    258                     FRAME_LOWMEM);
     258                frame = frame_alloc(1, FRAME_LOWMEM | flags, 0);
     259                if (!frame)
     260                        return (uintptr_t) NULL;
     261               
    259262                page = PA2KA(frame);
    260263        }
    261 
     264       
    262265        *framep = frame;
    263         return page;   
     266        return page;
    264267}
    265268
Note: See TracChangeset for help on using the changeset viewer.