LCOV - code coverage report
Current view: top level - core/test - run-buddy.c (source / functions) Hit Total Coverage
Test: skiboot.info Lines: 44 44 100.0 %
Date: 2024-01-02 21:04:04 Functions: 2 2 100.0 %
Branches: 0 0 -

           Branch data     Line data    Source code
       1                 :            : // SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
       2                 :            : /*
       3                 :            :  * Copyright 2016-2017 IBM Corp.
       4                 :            :  */
       5                 :            : 
       6                 :            : #include <buddy.h>
       7                 :            : #include <assert.h>
       8                 :            : #include <stdlib.h>
       9                 :            : #include <stdio.h>
      10                 :            : 
      11                 :          1 : static void *zalloc(size_t size)
      12                 :            : {
      13                 :          1 :         return calloc(size, 1);
      14                 :            : }
      15                 :            : 
      16                 :            : #include "../buddy.c"
      17                 :            : #include "../bitmap.c"
      18                 :            : 
      19                 :            : #define BUDDY_ORDER     8
      20                 :            : 
      21                 :          1 : int main(void)
      22                 :            : {
      23                 :            :         struct buddy *b;
      24                 :            :         int i, a[10];
      25                 :            : 
      26                 :          1 :         b = buddy_create(BUDDY_ORDER);
      27                 :          1 :         assert(b);
      28                 :            : 
      29                 :          1 :         buddy_reserve(b, 127, 0);
      30                 :          1 :         buddy_reserve(b, 0, 4);
      31                 :          1 :         assert(buddy_reserve(b, 0, 4) == false);
      32                 :            : 
      33                 :          1 :         a[0] = buddy_alloc(b, 0);
      34                 :          1 :         assert(a[0] >= 0);
      35                 :          1 :         a[1] = buddy_alloc(b, 0);
      36                 :          1 :         assert(a[1] >= 0);
      37                 :          1 :         a[2] = buddy_alloc(b, 3);
      38                 :          1 :         assert(a[2] >= 0);
      39                 :          1 :         a[3] = buddy_alloc(b, 4);
      40                 :          1 :         assert(a[3] >= 0);
      41                 :          1 :         a[4] = buddy_alloc(b, 5);
      42                 :          1 :         assert(a[4] >= 0);
      43                 :          1 :         a[5] = buddy_alloc(b, 4);
      44                 :          1 :         assert(a[5] >= 0);
      45                 :          1 :         a[6] = buddy_alloc(b, 3);
      46                 :          1 :         assert(a[6] >= 0);
      47                 :          1 :         a[7] = buddy_alloc(b, 2);
      48                 :          1 :         assert(a[7] >= 0);
      49                 :          1 :         a[8] = buddy_alloc(b, 1);
      50                 :          1 :         assert(a[8] >= 0);
      51                 :          1 :         a[9] = buddy_alloc(b, 8);
      52                 :          1 :         assert(a[9] < 0);
      53                 :            : 
      54                 :          1 :         buddy_free(b, a[0], 0);
      55                 :          1 :         buddy_free(b, a[8], 1);
      56                 :          1 :         buddy_free(b, a[1], 0);
      57                 :          1 :         buddy_free(b, a[7], 2);
      58                 :          1 :         buddy_free(b, a[2], 3);
      59                 :          1 :         buddy_free(b, a[6], 3);
      60                 :          1 :         buddy_free(b, a[3], 4);
      61                 :          1 :         buddy_free(b, a[5], 4);
      62                 :          1 :         buddy_free(b, a[4], 5);
      63                 :            : 
      64                 :          1 :         buddy_free(b, 127, 0);
      65                 :          1 :         buddy_free(b, 0, 4);
      66                 :            : 
      67                 :        511 :         for (i = 2; i < buddy_map_size(b); i++)
      68                 :        510 :                 assert(bitmap_tst_bit(b->map, i));
      69                 :          1 :         assert(!bitmap_tst_bit(b->map, 1));
      70                 :            : 
      71                 :          1 :         buddy_destroy(b);
      72                 :          1 :         return 0;
      73                 :            : }

Generated by: LCOV version 1.14