Ignore:
File:
1 edited

Legend:

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

    r5ecac7e rd1582b50  
    370370{
    371371        assert(zone->flags & ZONE_AVAILABLE);
    372         assert(zone->free_count >= count);
    373372
    374373        /* Allocate frames from zone */
     
    411410
    412411        frame_t *frame = zone_get_frame(zone, index);
     412
    413413        assert(frame->refcount > 0);
    414414
    415415        if (!--frame->refcount) {
    416                 assert(zone->busy_count > 0);
    417 
    418416                bitmap_set(&zone->bitmap, index, 0);
    419417
     
    434432
    435433        frame_t *frame = zone_get_frame(zone, index);
    436         assert(frame->refcount <= 1);
    437 
    438434        if (frame->refcount > 0)
    439435                return;
    440436
    441         assert(zone->free_count > 0);
    442 
    443437        frame->refcount = 1;
    444438        bitmap_set_range(&zone->bitmap, index, 1);
     
    446440        zone->free_count--;
    447441        reserve_force_alloc(1);
    448 }
    449 
    450 /** Mark frame in zone available to allocation. */
    451 _NO_TRACE static void zone_mark_available(zone_t *zone, size_t index)
    452 {
    453         assert(zone->flags & ZONE_AVAILABLE);
    454 
    455         frame_t *frame = zone_get_frame(zone, index);
    456         assert(frame->refcount == 1);
    457 
    458         frame->refcount = 0;
    459         bitmap_set_range(&zone->bitmap, index, 0);
    460 
    461         zone->free_count++;
    462442}
    463443
     
    485465        /* Difference between zone bases */
    486466        pfn_t base_diff = zones.info[z2].base - zones.info[z1].base;
    487         pfn_t gap = base_diff - zones.info[z1].count;
    488467
    489468        zones.info[z1].count = base_diff + zones.info[z2].count;
     
    513492                    zones.info[z2].frames[i];
    514493        }
    515 
    516         /*
    517          * Mark the gap between the original zones as unavailable.
    518          */
    519 
    520         for (size_t i = 0; i < gap; i++) {
    521                 frame_initialize(&zones.info[z1].frames[old_z1->count + i]);
    522                 zone_mark_unavailable(&zones.info[z1], old_z1->count + i);
    523         }
    524494}
    525495
     
    548518
    549519        for (size_t i = 0; i < cframes; i++)
    550                 zone_mark_available(&zones.info[znum],
     520                (void) zone_frame_free(&zones.info[znum],
    551521                    pfn - zones.info[znum].base + i);
    552522}
Note: See TracChangeset for help on using the changeset viewer.