Rev 480 | Rev 488 | 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 |