85
85
86
86
/* GET_SIZE return the whole size(including header/footer) of the block */
87
87
#define GET_SIZE (p ) (GET(p) & ~0x7)
88
- /* GET_USABLE_SIZE return the real size to store content(excluding header/footer)
88
+ /* GET_USABLE_SIZE return the real size to store content
89
+ * (excluding header/footer)
89
90
* */
90
91
// #define GET_USABLE_SIZE(p) (GET_SIZE(p)-DSIZE)
91
92
#define GET_ALLOC (p ) (GET(p) & 0x1)
121
122
for ((ptr) = BEGIN_BLOCK; !IS_EPILOGUE(ptr); (ptr)=NEXT_BLKP(ptr))
122
123
/* iterate through every free block in the free list */
123
124
#define for_each_free_block (class_ptr , ptr ) \
124
- for ((ptr) = SUCC_BLKP(class_ptr); (ptr) != (class_ptr); (ptr) = SUCC_BLKP(ptr))
125
+ for ((ptr) = SUCC_BLKP(class_ptr); (ptr) != (class_ptr);\
126
+ (ptr) = SUCC_BLKP(ptr))
125
127
/* enumerate free list in range */
126
128
#define for_range_free_list (begin_ptr , end_ptr , ptr ) \
127
129
for ((ptr) = (begin_ptr); (ptr) != (end_ptr);\
@@ -198,12 +200,6 @@ inline static void insert_free_block_fifo(void *bp)
198
200
void * tail_bp = PRED_BLKP (class_ptr );
199
201
200
202
insert_free_block_after (tail_bp , bp );
201
- /*
202
- PUT(SUCC(bp), GET(SUCC(tail_bp)));
203
- PUT(PRED(bp), GET_OFFSET(tail_bp));
204
- PUT(SUCC(tail_bp), GET_OFFSET(bp));
205
- PUT(PRED(class_ptr), GET_OFFSET(bp));
206
- */
207
203
}
208
204
209
205
@@ -300,7 +296,8 @@ int mm_init(void)
300
296
*
301
297
* The PRED points to the last free block while SUCC points to the
302
298
* first free block.
303
- * Generally, the free list pointer works as the sentinel for the free list.
299
+ * Generally, the free list pointer works as the sentinel for
300
+ * the free list.
304
301
* Use both PRED and SUCC makes the code easier to maintain and less
305
302
* if/else conditional judgements.
306
303
*/
@@ -658,9 +655,16 @@ static void check_block_consistency(const char *bp, int lineno)
658
655
const char * header , * footer ;
659
656
header = HDRP (bp );
660
657
footer = FTRP (bp );
661
- CHECK_EQUAL (GET_SIZE (header ), GET_SIZE (footer ), lineno , "check header/footer size" );
662
- CHECK_EQUAL (GET_ALLOC (header ), GET_ALLOC (footer ), lineno , "check header/footer alloc" );
663
- CHECK_GREATER_EQUAL (GET_SIZE (header ), MIN_BLOCK_SIZE , lineno , "check minimum block size" );
658
+ CHECK_EQUAL (GET_SIZE (header ), GET_SIZE (footer ),
659
+ lineno ,
660
+ "check header/footer size" );
661
+ CHECK_EQUAL (GET_ALLOC (header ), GET_ALLOC (footer ),
662
+ lineno ,
663
+ "check header/footer alloc" );
664
+ CHECK_GREATER_EQUAL (GET_SIZE (header ),
665
+ MIN_BLOCK_SIZE ,
666
+ lineno ,
667
+ "check minimum block size" );
664
668
if (IS_FREE (bp )) {
665
669
CHECK_GREATER_EQUAL (GET_SIZE (header ), MIN_FREE_BLOCK_SIZE , lineno ,
666
670
"check minimum free block size" );
@@ -674,8 +678,11 @@ static void check_block_consistency(const char *bp, int lineno)
674
678
static void check_coalescing (const char * bp , int lineno )
675
679
{
676
680
if (IS_FREE (bp )) {
677
- CHECK_EQUAL (GET_ALLOC (HDRP (NEXT_BLKP (bp ))), 1 , lineno , "next block is free" );
678
- CHECK_EQUAL (GET_ALLOC (HDRP (PREV_BLKP (bp ))), 1 , lineno , "prev block is free" );
681
+ CHECK_EQUAL (GET_ALLOC (HDRP (NEXT_BLKP (bp ))), 1 ,
682
+ lineno ,
683
+ "next block is free" );
684
+ CHECK_EQUAL (GET_ALLOC (HDRP (PREV_BLKP (bp ))), 1 , lineno ,
685
+ "prev block is free" );
679
686
}
680
687
}
681
688
@@ -686,7 +693,8 @@ static void check_coalescing(const char *bp, int lineno)
686
693
*/
687
694
static void get_class_size_range (void * class_ptr , size_t * pmin_size , size_t * pmax_size )
688
695
{
689
- size_t ref_offset = ((char * )class_ptr - (char * )free_listp ) / FREE_LIST_SENTINEL_SIZE ;
696
+ size_t ref_offset = ((char * )class_ptr - (char * )free_listp ) /
697
+ FREE_LIST_SENTINEL_SIZE ;
690
698
if (ref_offset == FREE_LIST_LEN - 1 ) {
691
699
* pmin_size = 4097 ;
692
700
* pmax_size = MAX_BLOCK_SIZE ;
@@ -711,8 +719,11 @@ void mm_checkheap(int lineno)
711
719
size_t max_class_size ;
712
720
/* check prologue content */
713
721
714
- CHECK_EQUAL (GET (HDRP (heap_listp )), PACK (8 ,1 ), lineno , "check prologue header content" );
715
- CHECK_EQUAL (GET (FTRP (heap_listp )), PACK (8 ,1 ), lineno , "check prologue footer content" );
722
+ CHECK_EQUAL (GET (HDRP (heap_listp )), PACK (8 ,1 ),
723
+ lineno ,
724
+ "check prologue header content" );
725
+ CHECK_EQUAL (GET (FTRP (heap_listp )), PACK (8 ,1 ),
726
+ lineno , "check prologue footer content" );
716
727
717
728
718
729
/* check block consistency */
@@ -753,7 +764,6 @@ void mm_checkheap(int lineno)
753
764
CHECK_TRUE (IS_FREE (bp ), lineno , "free blocks should contain\
754
765
only free pointers" );
755
766
CHECK_TRUE (in_heap (bp ), lineno , "free blocks in heap" );
756
- // printf("%d %zu %zu %zu\n", (int)FREE_LIST_IDX(class_ptr), (size_t)GET_SIZE(HDRP(bp)), min_class_size, max_class_size);
757
767
CHECK_LESS_EQUAL (GET_SIZE (HDRP (bp )), max_class_size , lineno ,
758
768
"free block size in class range(max size)" );
759
769
CHECK_GREATER_EQUAL (GET_SIZE (HDRP (bp )), min_class_size , lineno ,
@@ -767,5 +777,6 @@ void mm_checkheap(int lineno)
767
777
}
768
778
}
769
779
770
- CHECK_EQUAL (free_block_count , free_block_count_in_free_list , lineno , "free block count consistency" );
780
+ CHECK_EQUAL (free_block_count , free_block_count_in_free_list ,
781
+ lineno , "free block count consistency" );
771
782
}
0 commit comments