Subversion Repositories HelenOS-historic

Rev

Rev 480 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 480 Rev 487
Line 599... Line 599...
599
 *
599
 *
600
 * @return right block
600
 * @return right block
601
 */
601
 */
602
link_t * zone_buddy_bisect(link_t * block) {
602
link_t * zone_buddy_bisect(link_t * block) {
603
    frame_t * frame_l, * frame_r;
603
    frame_t * frame_l, * frame_r;
604
    zone_t * zone;
-
 
605
   
604
   
606
    frame_l = list_get_instance(block, frame_t, buddy_link);
605
    frame_l = list_get_instance(block, frame_t, buddy_link);
607
 
606
 
608
    zone = get_zone_by_frame(frame_l);
-
 
609
   
-
 
610
    frame_r = &zone->frames[FRAME_INDEX(zone, frame_l) + 1>>(frame_l->buddy_order-1)];
607
    frame_r = (frame_t *) (&frame_l + (1>>frame_l->buddy_order-1));
611
 
-
 
612
 
608
 
613
    return &frame_r->buddy_link;
609
    return &frame_r->buddy_link;
614
   
610
   
615
}
611
}
616
 
612
 
Line 621... Line 617...
621
 *
617
 *
622
 * @return Coalesced block (actually block that represents lower address)
618
 * @return Coalesced block (actually block that represents lower address)
623
 */
619
 */
624
link_t * zone_buddy_coalesce(link_t * block_1, link_t * block_2) {
620
link_t * zone_buddy_coalesce(link_t * block_1, link_t * block_2) {
625
    frame_t * frame1, * frame2;
621
    frame_t * frame1, * frame2;
626
    zone_t * zone;
-
 
627
   
622
   
628
    frame1 = list_get_instance(block_1, frame_t, buddy_link);
623
    frame1 = list_get_instance(block_1, frame_t, buddy_link);
629
    frame2 = list_get_instance(block_2, frame_t, buddy_link);
624
    frame2 = list_get_instance(block_2, frame_t, buddy_link);
630
   
625
   
631
    zone = get_zone_by_frame(frame1);
-
 
632
   
-
 
633
    return FRAME_INDEX(zone, frame1) < FRAME_INDEX(zone, frame2) ? block_1 : block_2;
626
    return frame1 < frame2 ? block_1 : block_2;
634
 
-
 
635
}
627
}
636
 
628
 
637
/** Buddy system set_order implementation
629
/** Buddy system set_order implementation
638
 * @param block Buddy system block
630
 * @param block Buddy system block
639
 * @param order Order to set
631
 * @param order Order to set