Changes in kernel/generic/src/mm/frame.c [5ecac7e:d1582b50] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/generic/src/mm/frame.c
r5ecac7e rd1582b50 370 370 { 371 371 assert(zone->flags & ZONE_AVAILABLE); 372 assert(zone->free_count >= count);373 372 374 373 /* Allocate frames from zone */ … … 411 410 412 411 frame_t *frame = zone_get_frame(zone, index); 412 413 413 assert(frame->refcount > 0); 414 414 415 415 if (!--frame->refcount) { 416 assert(zone->busy_count > 0);417 418 416 bitmap_set(&zone->bitmap, index, 0); 419 417 … … 434 432 435 433 frame_t *frame = zone_get_frame(zone, index); 436 assert(frame->refcount <= 1);437 438 434 if (frame->refcount > 0) 439 435 return; 440 436 441 assert(zone->free_count > 0);442 443 437 frame->refcount = 1; 444 438 bitmap_set_range(&zone->bitmap, index, 1); … … 446 440 zone->free_count--; 447 441 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++;462 442 } 463 443 … … 485 465 /* Difference between zone bases */ 486 466 pfn_t base_diff = zones.info[z2].base - zones.info[z1].base; 487 pfn_t gap = base_diff - zones.info[z1].count;488 467 489 468 zones.info[z1].count = base_diff + zones.info[z2].count; … … 513 492 zones.info[z2].frames[i]; 514 493 } 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 }524 494 } 525 495 … … 548 518 549 519 for (size_t i = 0; i < cframes; i++) 550 zone_mark_available(&zones.info[znum],520 (void) zone_frame_free(&zones.info[znum], 551 521 pfn - zones.info[znum].base + i); 552 522 }
Note:
See TracChangeset
for help on using the changeset viewer.